相同的数学表达式返回不同的结

时间:2015-10-11 18:57:12

标签: c# .net math equations

我对此感到困惑。

所以我有一个控制台应用程序做了很多计算(相信我,成千上万)。在一种方法中,我有一些需要在不同情况下计算的参数。对于其中一个,数学表达式基本相同,一个术语只有一个差异。下面是代码片段以及所讨论的2个公式之间的所有行,Nq1和Nq2(代码的第一个公式和最后一个更容易):

//drained conditions
        Nq1 = Math.Round((Math.Pow(Math.E, Math.PI * Math.Tan(studiu.Fi * Constants.ConversionToDeg)) * Math.Pow((Math.Tan(45 + studiu.Fi / 2.00) * Constants.ConversionToDeg), 2)), 2);

        //Combination 2

        studiu.Fi = FiAfectat;


        //drained conditions
        Nq2 = Math.Round((Math.Pow(Math.E, Math.PI * Math.Tan(studiu.Fi * Constants.ConversionToDeg)) * Math.Pow((Math.Tan(45 + studiu.Fi / 2.00) * Constants.ConversionToDeg), 2)), 2);

第一个公式返回18.04但第二个公式返回0.01。这怎么可能 ?只有studiu.Fi术语有所不同,但不是那么多(第一种情况下为32种,第二种情况下为27种)。

Nq1如何为18,Nq2为0.01?我在这里错过了什么吗?

1 个答案:

答案 0 :(得分:0)

Tan(x)是一个周期函数,对于x的微小变化会发生巨大变化。由于这两个公式只有Tan函数内的术语不同,这可能是您的问题。

此外,您可能应该使用弧度而不是度数。如果是这种情况,您应该使用一个命令将实数转换为弧度而不是转换为度数的命令。