我的Novelov Alogorithm+Schroedinger方程的真正错误在哪里?[物理学]

2024-09-26 18:06:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我在用诺维罗夫定理解薛定谔方程。所以,我最初的项目问题是:求解氢原子基态和第一激发态的s波薛定谔方程:

D^2y+2(E-V(r))y=0,D=D/dr

电势为V(r)=-1/r

但我想让这个程序成为一个自动计算其本征能量的程序,使用hatree单位并重新考虑它:这是我的代码:

import numpy as np
import matplotlib.pyplot as plt
dom=[0.001,5]
n=10
r,dr=np.linspace(dom[0],dom[1],n,retstep=True)
def Potential(x,E):
    energy=2*(E+(1/x))
    return energy
i=0
E=-2
s0i=0.0
s1i=0.0001
si=np.zeros(n)
indi=0
while i==0:
    si[0]=s0i
    si[1]=s1i
    for j in range(0,n-2,1):
        f0c=((dr**2)*Potential(x=r[j],E=E))/12.0
        f1c=((dr**2)*Potential(x=r[j+1],E=E))/12.0
        f2c=((dr**2)*Potential(x=r[j+2],E=E))/12.0

        s2i=((2*(1-5*f1c)*s1i)-((1+f0c)*s0i))/(1+f2c)
        s1i=s2i
        s0i=s1i
        si[j+2]=s2i
    if abs(s2i)<=1e-18:
        i=1
    elif s2i>1e-18:
        E=E-0.1
    elif s2i<-1e-18:
        E=E+0.1
    elif(indi==500):
        i=1

    print('loop Count : ',indi,'Energy : ',E,'last Pshi',si[-1])
    indi+=1
    
print(len(r),len(si))
plt.plot(r,si)
plt.show()

我不明白问题在哪里,我得到了一些有趣的结果。所以请帮我这么做


Tags: import程序asnpplts2idompotential
1条回答
网友
1楼 · 发布于 2024-09-26 18:06:36

我看你会说荷兰语。所以我希望我能用我的母语回答

我知道瓦尔米是不是很有希望?这是一个很好的例子

from sympy.physics.hydrogen import E_nl
from sympy.abc import n, Z

E_nl(n, Z)    # output: -Z**2/(2*n**2)
              # Z = atoomnummer       n = het quantum getal
              # Z=1 (hydrogen) bij default kan je veranderen trouwens
E_nl(1)       # output: -1/2

E_nl(2)       # output: -1/8

E_nl(3)       # output: -1/18

E_nl(3, 47)   # output: -2209/18

Maar Uiterard对本征代码非常感兴趣。 在je代码ontstaat er een溢出 安杰森·赫特·德泽·埃罗·格夫特:

RuntimeWarning: overflow encountered in double_scalars

在安特伍德的家里,这是一个很好的选择

loop Count :  78 Energy :  -2.1 last Pshi 1.9967193884115876e+306
loop Count :  79 Energy :  -2.1 last Pshi NaN

这是我第一次遇到306名学生。。。。格洛特·格塔尔(erg groot getal),他骑着一匹绿色的战马——1/2。这是一个很好的选择。你是不是想让你的工作更顺利

相关问题 更多 >

    热门问题