首页 > 编程语言 >python 打靶法求解一维谐振子薛定谔方程

python 打靶法求解一维谐振子薛定谔方程

时间:2022-10-02 01:11:06浏览次数:87  
标签:10 Phi 宇称 python 打靶 谐振子 hbar root sol1

1. 理论公式

一维谐振子薛定谔方程:

\[-\frac{\hbar^2}{2m} \frac{ d^2 }{d x^2} \psi(x) + \frac{1}{2}m \omega^2 x^2 \psi(x) = E \psi(x). \]

\[\frac{d^2}{dx^2} \psi(x) = [\frac{ m^2 \omega^2 x^2}{\hbar^2} - \frac{2mE}{\hbar^2} ] \psi(x). \]

可以设计一个长度量 \(x_0 = \sqrt{\hbar/(m\omega)}\),用来让 \(x\) 失去量纲,然后整理方程,估计可以用 \(E/(\hbar \omega/2)\) 这个没有量纲的量,这样来求解方程,比较干净。

取 \(t = x/x_0\),\(E'=E/(\hbar \omega/2)\), \(\Phi(t) = \psi(t x_0)\),则可以把上面的方程整理为

\[\frac{ d^2 }{dt^2} \Phi(t) = (t^2 - E')\Phi(t), \]

这样就舒服了。我们知道,偶宇称解为 \(E' = 1, 5, 9, \cdots\);奇宇称解为 \(E' = 3, 7, 11, \cdots\)。

2. 代码

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

# 一维谐振子: Phi''(t) = (t^2 - E' ) Phi(t)
def deriv(y,t,EE): # EE 即 E' = E/(hbar omega /2 )
    return [y[1], (t*t - EE) * y[0]]
    # y[0] 是 Phi, y[1] 是 Phi', 所以 [Phi, Phi'] 的导数是:
    # [Phi', Phi''] = [Phi', (t*t-E') Phi ]

tmax = 10; n = 1000
def shoot( EE): # 从 tmax 往 t=0 打靶
    t1 = np.linspace(tmax, 0, n); # 生成横坐标,从大到小
    sol1 = odeint(deriv, [1E-10, 0], t1, args=(EE,)) # ODE 从右往左推
    return sol1[-1,0] # 想要偶宇称,就打 sol1[-1,1]; 想要奇宇称,就打 sol1[-1,0]

root = fsolve(shoot, [-0.5]) # 得到本征能量
print("root=",root," shoot(root)=",shoot(root))

# 画个图,显示 [0, tmax] 上的波函数
t1 = np.linspace(tmax, 0, n); 
sol1 = odeint(deriv, [1E-10, 0], t1, args=(root,))
plt.plot(t1, sol1[:,0], label = "sol1"); plt.show();

代码思路:

  • 选定 \(t=10\) 的点,取值 \(\Phi(10) = 10^{-10}, \Phi'(10) = 0\)。
  • 调用 odeint 函数从 \(t=10\) 往 \(t=0\) 推;如果想要偶宇称解,就打靶 \(\Phi'(0)\);如果想要奇宇称解,就打靶 \(\Phi(0)\)。
  • 打靶即调节 \(E'\),使得 \(\Phi'(0) \approx 0\)(偶宇称),或者 \(\Phi(0) \approx 0\) (奇宇称)。

运行结果(以奇宇称第一激发态为例):

root= [3.00000002]  shoot(root)= 0.0002180337905883789

image

标签:10,Phi,宇称,python,打靶,谐振子,hbar,root,sol1
From: https://www.cnblogs.com/luyi07/p/16748140.html

相关文章

  • 使用 Python 处理 Json 数据
    一、引言:什么是JSONJSON(JavaScriptObjectNotation)是一种很常用的数据格式,它常常用在web应用程序中。它可以表示结构化的数据。下面是常见的JSON文件结构{......
  • Python 学习笔记
    随便写点看起来不太容易记住的知识感觉python吊打c++运算优先级: 来点例子理解一下foryearinrange(2018,2050):if(year%4==0)and(year%100!=0)......
  • Python下载-windows
    废话不多说,直接开始吧1.打开python官网下载链接直达链接打开的慢是正常状况,耐心等待即可下拉找到这个版本选择哪里选择你想要下载的版本我这里选的是3.8.4(个人喜好)......
  • 基于python的社团管理系统设计与实现-计算机毕业设计源码+LW文档
    开发语言:Python框架:djangoPython版本:python3.7.7数据库:mysql5.7(一定要5.7版本)数据库工具:Navicat11开发软件:PyCharm 浏览器:谷歌浏览器数据库:DROPTABLEIFEXISTS......
  • 基于Python的高校教室管理系统设计与实现-计算机毕业设计源码+LW文档
    摘 要随着社会的发展,社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。高校教室管理系统,主要的模块包括查看首页、个人中......
  • 基于Python的电影个性化推荐系统设计与实现-计算机毕业设计源码+LW文档
    摘 要本毕业设计的内容是设计并且实现一个电影个性化推荐系统。它是在Windows下,以MYSQL为数据库开发平台,Python技术和Tomcat网络信息服务作为应用服务器。电影个性化推荐......
  • 基于python的图书馆管理系统设计与实现-计算机毕业设计源码+LW文档
    摘要随着信息技术和网络技术的飞速发展,人类已进入全新信息化时代,传统管理技术已无法高效,便捷地管理信息。为了迎合时代需求,优化管理效率,各种各样的管理系统应运而生,各行各......
  • python编程从入门到实践--第2章
    一。字符串1。双引号与单引号灵活应用      str0='Itoldmyfriend,"Pythonismyfavoritelanguage!"'str1="Thelanguage'Python'isnamed......
  • python任务调度模块celery
    celery简介Celery是一个python开发的异步分布式任务调度模块。Celery本身并不提供消息服务,使用第三方服务,也就是borker来传递任务,一般使用rabbitMQ或者Redis。Celery特......
  • Python 语法之字典
    前面的文章中已经介绍了循环语句for与while,以及中断语句break与continue。今天一起给小伙伴们介绍一下Python中的“字典”,这里的字典和我们平时所用的字典不一样,这个是Pyth......