需要在 python 中使用复数从方程中输出整数



我有一些关于我用 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

使用整数除法。

最新更新