我正在使用谐振子电位的射击方法求解时间无关的薛定谔方程。这是我为结果编写的代码(代码是用 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])
现在,当我增加 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])
有没有办法防止这个问题?

