我试图在C#中计算负数到分数幂。
这是我试图计算的力量,
Math.Pow(-0.5264, 1.11)--> Result NaN
Math.Pow(-0.5264, 2) --> 0.27709696
Math.Pow(0.5264, 1.11) --> Gives me a result.
当基数为正且功率为分数时,我会得到一个值。但是当基数为负值时,它没有给出结果吗?
当我试图找到负基数的力量时,它在matlab中返回一个复数格式a + bi。
我真的不知道如何在C#中实现它。
有人可以帮我解决问题。
答案 0 :(得分:4)
Math.Pow
根据其规范行为正确。
如果你想要复杂的值,并且你没有复杂的数学库,那么计算它就很容易了。
我们知道欧拉的身份:
e ix = cos x + i sin x
,更具体地说是
e iπ = -1
因此
0.5264 e iπ = -0.5264
因此
(0.5264) 1.11 e 1.11iπ =( - 0.5264) 1.11
现在再次使用欧拉的身份
(0.5264) 1.11 (cos(1.11π)+ i sin(1.11π))=( - 0.5264) 1.11
所以你要找的数字的真正部分是
(0.5264) 1.11 cos(1.11π)
虚部是
(0.5264) 1.11 sin(1.11π)
现在,您已将问题简化为可以使用普通数学库计算的实值函数。
故事的寓意是:通过数学来解决你的数学问题。
答案 1 :(得分:2)
您可以使用System.Numerics.Complex.Pow
计算此类表达式:
Complex.Pow(-0.5264, 1.11); //(-0,461524987676948, -0,166159219770948)
Complex.Pow(-0.5264, 2).Real; // 0.27709696
Complex.Pow(0.5264, 1.11).Real; // 0.49052441383186784
通常Math.Pow
返回double,这是实数并不复杂。