开发者社区> 问答> 正文

如何解决python上的TISE的一个简单边值问题

我试图解出在区间[0,L]上无限势阱V=0的TISE。这个练习告诉我们波函数的值和它在0处的导数分别是0,1。这允许我们使用sci . integration .odeint函数来解决给定能量值的问题。 现在的任务是在进一步的边界条件下找到能量特征值,在L处的波函数为0,使用python上的根查找函数。我做了一些研究,只能找到所谓的“射击方法”,我不知道如何实施。另外,我遇到了求解BVP scipy函数,但是我似乎不能理解这个函数的第二个输入到底是什么(边界条件残差)

m_el   = 9.1094e-31      # mass of electron in [kg]
hbar   = 1.0546e-34      # Planck's constant over 2 pi [Js]
e_el   = 1.6022e-19      # electron charge in [C]
L_bohr = 5.2918e-11      # Bohr radius [m]

import numpy as np
import matplotlib.pyplot as plt
from scipy.integrate import odeint

def eqn(y, x, energy):              #array of first order ODE's     
    y0 = y[1]
    y1 = -2*m_el*energy*y[0]/hbar**2

    return np.array([y0,y1])

def solve(energy, func):           #use of odeint
    p0 = 0
    dp0 = 1
    x = np.linspace(0,L_bohr,1000)
    init = np.array([p0,dp0])
    ysolve = odeint(func, init, x, args=(energy,))
    return ysolve[-1,0]

这里的方法是将eqn作为func输入求解(能量,func)。L_bohr是这个问题中的L值。我们试图用一些scipy方法数值计算出能量特征值 问题来源StackOverflow 地址:/questions/59379143/how-to-solve-a-simple-boundary-value-problem-for-tise-on-python

展开
收起
kun坤 2019-12-30 09:38:02 923 0
1 条回答
写回答
取消 提交回答
  • 对于scipy中的所有其他求解器,参数(x,y)的顺序,甚至在odeint中,都可以通过提供选项tfirst=True来使用这个顺序。因此改变

    def eqn(x, y, energy):              #array of first order ODE's     
        y0, y1 = y
        y2 = -2*m_el*energy*y0/hbar**2
    
        return [y1,y2]
    

    对于BVP求解器,你必须把能量参数当成 额外的零导数的状态分量,因此增加了第三个槽 在边界条件下。Scipy的bvp_solve允许将其作为参数, 所以你得到

    def bc(y0, yL, E):
        return [ y0[0], y0[1]-1, yL[0] ]
    

    接下来构造一个接近可疑基态的初始状态,并调用求解器

    x0 = np.linspace(0,L_bohr,6);
    y0 = [ x0*(1-x0/L_bohr), 1-2*x0/L_bohr ]
    E0 = 134*e_el
    
    sol = solve_bvp(eqn, bc, x0, y0, p=[E0])
    print(sol.message, "  E=", sol.p[0]/e_el," eV")
    

    然后制作情节

    x = np.linspace(0,L_bohr,1000)
    plt.plot(x/L_bohr, sol.sol(x)[0]/L_bohr,'-+', ms=1)
    plt.grid()
    
    2019-12-30 09:38:13
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
From Python Scikit-Learn to Sc 立即下载
Data Pre-Processing in Python: 立即下载
双剑合璧-Python和大数据计算平台的结合 立即下载