小编aRa*_*ame的帖子

氢原子的Schrodinger方程:为什么numpy在显示scipy时显示错误的解?

我编写了一段代码来解决一维Schrodinger方程。尽管numpy.linalg.eig()例程对于谐波振荡器运行良好,但似乎为库仑电势增加了一个虚假的解决方案。另一方面,Scipy的sparse.linalg.eigsh()似乎做得很好。这是我的脚本:

import numpy as np
import matplotlib.pyplot as plt
from scipy.sparse import diags
from scipy.sparse.linalg import eigsh

N = 500
x0 = 8
xMin, xMax = -x0, x0
xstep = (xMax - xMin) / (N - 1)
x = np.linspace(xMin, xMax, N)

k = np.array([np.ones(N-1),-2*np.ones(N),np.ones(N-1)])
offset = [-1,0,1]
Lapl = diags(k,offset).toarray() / (xstep**2)
T = -Lapl *.5

V = -1./(np.abs(x)) #Coulomb
#V = .5 * x**2 #HO

H = T.copy()
for i in range(N):
    H[i,i] += V[i]

#vals, vecs = …
Run Code Online (Sandbox Code Playgroud)

python numpy scipy numerical-methods

7
推荐指数
1
解决办法
216
查看次数

标签 统计

numerical-methods ×1

numpy ×1

python ×1

scipy ×1