波函数从位置到动量空间的傅里叶变换及绘图问题
解决波函数的动量空间傅里叶变换与绘图问题
首先要纠正一个关键问题:你当前代码里的psi(x)计算的是概率密度(|ψ(x)|²),而动量空间的波函数φ(p)是对**波函数本身ψ(x)**做傅里叶变换,不是概率密度。所以第一步要先修正波函数的定义。
你尝试的代码存在的问题
- 未提前定义变量
n、x就直接使用 psi的定义缺少闭合括号,语法错误- 虚数单位应该用Sympy的
smp.I,而非未定义的i - 积分的语法错误,把表达式和
integrate函数直接拼接,不符合Python语法 - 混用Sympy符号计算和Numpy数值数组,两者不兼容
下面提供两种可行的解决方案:
方案一:Sympy符号计算(解析解)
适合简单波函数,可以得到精确的解析表达式,再转换成数值函数绘图:
import sympy as smp import numpy as np import matplotlib.pyplot as plt # 定义符号变量 x, p, n, L = smp.symbols('x p n L') # 定义波函数(注意是波函数本身,不是概率密度) psi = smp.sqrt(2/L) * smp.sin(n * smp.pi * x / L) # 定义傅里叶变换(量子力学常用归一化,ℏ=1) phi_expr = (1 / smp.sqrt(2 * smp.pi)) * smp.integrate(psi * smp.exp(-smp.I * p * x), (x, 0, L)) # 代入参数n=1, L=1,得到具体的表达式 phi_specific = phi_expr.subs({n:1, L:1}).simplify() # 将符号表达式转换为可处理Numpy数组的函数 phi_func = smp.lambdify(p, phi_specific, 'numpy') # 生成p的取值范围(动量范围可以扩大,比如-10到10,更能看到分布) p_vals = np.linspace(-10, 10, 200) # 计算φ(p)的模(因为结果是复数,绘图通常看模或者模平方) phi_vals = np.abs(phi_func(p_vals)) # 绘图 plt.figure(figsize=(8, 4)) plt.plot(p_vals, phi_vals, label=r'$|\phi(p)|$') plt.xlabel('动量p') plt.ylabel('$|\phi(p)|$') plt.title('动量空间波函数') plt.legend() plt.grid(True) plt.show()
方案二:Numpy数值积分(数值解)
适合复杂波函数,无法得到解析解时用数值积分:
import numpy as np import matplotlib.pyplot as plt from scipy.integrate import quad # 参数设置 n = 1 L = 1 # 定义波函数ψ(x) def psi(x): return np.sqrt(2/L) * np.sin(n * np.pi * x / L) # 定义傅里叶变换的积分函数,对每个p计算积分 def phi(p): # 被积函数是ψ(x)*e^(-ipx),因为是复数积分,需要分别计算实部和虚部 integrand_real = lambda x: psi(x) * np.cos(p * x) integrand_imag = lambda x: -psi(x) * np.sin(p * x) real_part, _ = quad(integrand_real, 0, L) imag_part, _ = quad(integrand_imag, 0, L) # 归一化因子 return (1 / np.sqrt(2 * np.pi)) * (real_part + 1j * imag_part) # 生成p的取值范围 p_vals = np.linspace(-10, 10, 200) # 向量化phi函数,批量计算每个p的值 phi_vals = np.vectorize(phi)(p_vals) # 取模绘图 phi_abs = np.abs(phi_vals) # 绘图 plt.figure(figsize=(8, 4)) plt.plot(p_vals, phi_abs, label=r'$|\phi(p)|$') plt.xlabel('动量p') plt.ylabel('$|\phi(p)|$') plt.title('动量空间波函数(数值积分)') plt.legend() plt.grid(True) plt.show()
内容的提问来源于stack exchange,提问作者Tooba
相关产品推荐
相关产品推荐

