我有以下代码,它定义了一个简单的函数,以两个实数变量作为参数并返回一个复数。函数调用在一分钟内不会返回。我确定原因是我们的 sympify 不合适(见下文)
%%time
from sympy import *
x,t=symbols('x t')
e_psi_sw=sin(2*pi*x) + exp(1j*t)*sin(pi*x)
pdf=conjugate(e_psi_sw)*e_psi_sw
integrate(pdf*x,(x,0,1))
如果使用 sympy 的
I
而不是复杂的 Python float 1j
,速度会更快。通常最好避免在 sympy 中使用不必要的浮点数。
还将符号 x 和 t 声明为实数会导致更简单的被积函数,可以更容易地积分。
我用字符串而不是裸露的表达式来调用 sympify。当我删除引号时,积分运行得很快,我在这里引用的其他问题也得到了解决。
我确实将 j 更改为 I 也...