我有一些阶梯函数的等式,我用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)
我总是坚持一些真正的虚构部分。我需要能够获得一个整数输出,以便在其他方程式中使用。
答案 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
使用整数除法。