使用射击法求解谐振子势中 TISE 的奇怪行为

计算科学 数字 计算物理学 量子力学
2021-12-12 14:10:45

我正在使用谐振子电位的射击方法求解时间无关的薛定谔方程。这是我为结果编写的代码(代码是用 julia 编写的):

m, omega, hbar, del_x = 1.0, 1.0, 1.0, 1e-3

function get_eigenfunction(xgrid, V_x, E_n, del_x, m=1; hbar=1, s=1e5)
    psi_vals = [0, s]  # Initial Conditions
    
    for i = 2:(length(xgrid) - 1)
        psi_ii = 2psi_vals[i] * ((m * del_x^2) * (V_x[i] - E_n) / hbar^2 + 1) - psi_vals[i-1]
        append!(psi_vals, psi_ii)
    end
    
    normalize!(psi_vals)
    return psi_vals
end

E_100 = (100 + 0.5)*hbar*omega
x1 = collect(-15:del_x:15)
V_x1 = [1/2 * m * omega * x^2 for x in x1]
phi2_x1 = get_eigenfunction(x1, V_x1, E_100, del_x).^2
scaling = maximum(V_x1) / maximum(phi2_x1)
plot(x1, V_x1)
plot!(x1, scaling*phi2_x1 .+ E_100)
plot!(x1, [E_100 for x in x1])

绘制结果 1

现在,当我增加 x 的范围以采样更多的潜在值时,结果会很奇怪,因为我在右边界点得到了一个疯狂的过冲:


E_100 = (100 + 0.5)*hbar*omega
x1 = collect(-20:del_x:20)
V_x1 = [1/2 * m * omega * x^2 for x in x1]
phi2_x1 = get_eigenfunction(x1, V_x1, E_100, del_x).^2
scaling = maximum(V_x1) / maximum(phi2_x1)
plot(x1, V_x1)
plot!(x1, scaling*phi2_x1 .+ E_100)
plot!(x1, [E_100 for x in x1])

绘制结果 2

有没有办法防止这个问题?

0个回答
没有发现任何回复~