首页 > 解决方案 > 我如何告诉 sympy i^2 = -1?

问题描述

我目前正在使用 sympy 来检查一些涉及二阶导数和复数的讨厌方程的代数。

import sympy
from sympy.abc import a, e, i, h, t, x, m, A

# define a wavefunction
Psi = A * sympy.exp(-a * ((m*x**2 /h)+i*t))

# take the first order time derivative
Psi_dt = sympy.diff(Psi, t)
# take the second order space derivative
Psi_d2x = sympy.diff(Psi, x, 2)

# write an expression for energy potential (rearrange Schrodingers Equation)
V = 1/Psi * (i*h*Psi_dt + (((h**2)/2*m) * Psi_d2x))


# symplify potential function
sympy.simplify(V)

这产生了这个好东西:

a*(-h*i**2 + m**2*(2*a*m*x**2 - h))

如果 sympy 将 i^2 简化为 -1,那就太好了。那么我如何告诉它i代表 -1 的平方根呢?

在相关的说明中,告诉 sympy 是欧拉数也非常好e,所以如果我打电话,sympy.diff(e**x, x)我会得到e**x输出。

标签: pythonsympy

解决方案


您需要使用 SymPy内置函数,而不是将这些符号视为自由变量。尤其是:

from sympy import I, E

I是 sqrt(-1); E是欧拉数。

然后complexes根据需要使用这些方法来操作复数。


推荐阅读