需要使用python中的复数从等式中输出整数

时间:2014-03-07 21:33:13

标签: python integer complex-numbers

我有一些阶梯函数的等式,我用wolfram alpha获得:

a_n = 1/8 (2 n+(-1)^n-(1+i) (-i)^n-(1-i) i^n+9) 

在wolfram中使用任何正整数将产生正整数结果但是当我在python中尝试以下时

import numpy as np
n = 5
i = complex(0,1)
a = (1/8)*((2*n)+(np.power(-1,n))-(1+i)*(np.power(-i,n))-(1-i)*(np.power(i,n))+9)

我总是坚持一些真正的虚构部分。我需要能够获得一个整数输出,以便在其他方程式中使用。

2 个答案:

答案 0 :(得分:0)

也许你最后想要int(a.real)

另请注意,默认情况下,在Python 2.x中,1/8将被评估为0

答案 1 :(得分:0)

(1+i) (-i)^n+(1-i) i^n

是(1-i)i ^ n的实部的两倍,例如

2*cos(pi/2*n)-2*cos(pi/2*(n+1))

或作为值

n            0  1  2  3  4  5  6  7  8
expression   2  2 -2 -2  2  2 -2 -2  2

从交替序列中减去这个以得到

n            0  1  2  3  4  5  6  7  8
(-1)^n-expr -1 -3  3  1 -1 -3  3  1 -1

定期进行第4期

可以计算出这可以避免所有权力并将负n保存为

3-2*(((n+2) mod 4 +4) mod 4)

添加2n + 9来完成表达式

12+2*n-2*(((n+2) mod 4 +4) mod 4)

确实可以被8整除,所以

a = 1+(n+2-(((n+2) % 4 +4) % 4) )/4

现在如果认为这只是将(n + 2)减少到下一个4的较低倍数,这相当于简化

a = 1 + (n+2)/4

使用整数除法。