我有一些关于我用 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)
我总是坚持一些真实+虚构的部分。我需要能够获得 a 的整数输出,以便在其他方程中使用。
也许你想在最后int(a.real)
。
另请注意,默认情况下,1/8 在 Python 2.x 中将被评估为 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
使用整数除法。