我正在运行这段代码:
import sympy as sym
sym.init_printing()
from IPython.display import display_latex
a = sym.symbols('a', real = True)
r = sym.symbols('r', real = True)
wavefunction = sym.exp(-a*r**2)
normalization_squared = 4*sym.pi*sym.integrate((r**2)*wavefunction**2, (r, 0, sym.oo))
display_latex(normalization_squared.simplify())
并得到这个结果:
我很惊讶它有一个“if arg(z)
我尝试添加“sym.asclusions.assume.global_asminations.add(sym.Q.real(a))”,但这不会改变任何东西。
您看到的
arg
条件是表示 a
的实部应该为正的一种方式。这是因为 meijerg 算法处理的是复平面的角区域。声明 a
为实数并不意味着其实部为正。
您的积分是:
In [3]: 4*sym.pi*sym.Integral((r**2)*wavefunction**2, (r, 0, sym.oo))
Out[3]:
∞
⌠
⎮ 2
⎮ 2 -2⋅a⋅r
4⋅π⋅⎮ r ⋅ℯ dr
⌡
0
该积分对于负
a
不收敛。如果您声明 a
为正 (symbols('a', positive = True)
),那么您将得到预期的结果:
In [5]: normalization_squared
Out[5]:
3/2
√2⋅π
───────
3/2
4⋅a