你如何在C#中计算负数到分数幂?

时间:2018-03-27 14:01:56

标签: c#

我试图在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#中实现它。

有人可以帮我解决问题。

2 个答案:

答案 0 :(得分:4)

Math.Pow根据其规范行为正确。

如果你想要复杂的值,并且你没有复杂的数学库,那么计算它就很容易了。

我们知道欧拉的身份:

e ix = cos x + i sin x

,更具体地说是

e = -1

因此

0.5264 e = -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,这是实数并不复杂。