码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Numerov算法解一维无限深势阱的问题 (含量子力学导论)


    写在前面

    • 原子物理期末论文要写一篇和量子隧穿的问题,然后,啊,写不出来.
    • 请有志之人给点帮助!!!球球了!
    • 之中可能会遇到这样的微分方程

    \frac{d^2y}{dx^2}+f(r)y=s(r)

    • 所以需要学学Numerov算法来解决一些问题.

    均匀格点上的Numerov算法

    • 推导
    • 事实上你可以自己推导出一种算法,然后坚称这是你自己发明的

    • 整理:

     

    一维无限深势阱

    波函数

    \frac{d^2\varphi }{dx^2}+\frac{2uE}{h^2}\varphi=0

    边界条件:

    \varphi|_{x=0}=\varphi|_{x=1}=0

    显然,在无限深势阱中的能量是分立的

    为了说明这个问题,我们首先要回顾一下量子力学导论的部分

    量子力学导论回顾

    • 禁闭的波必然导出量子化的条件

    习题选(杨福家 第五版)

    程序设计

    • 该问中,能量的解析解为

    E=n^2\pi^2\frac{h^2}{2u}

    • 我们将不断调整\sqrt{\frac{2uE}{h^2}}的值,
    • 代入上式,得:

    k=n\pi

    • 为了能够找到合适的k值,我们应当设置一个tol值,当满足边界条件时,记录当前的k值

    完整代码

    1. import numpy as np
    2. import matplotlib.pyplot as plt
    3. def numerov(f,y0,dy0):
    4. h = 0.01
    5. y = np.zeros(len(f))
    6. y[0] = y0
    7. y[1] = y0 + h * dy0
    8. for i in range(1,len(f)-1):
    9. k1 = (1 + h**2/12. * f[i+1])
    10. k2 = 2 * (1 + h**2/12. * f[i])
    11. k3 = (1 + h**2/12. * f[i])
    12. y[i+1] = (k2*y[i] - k3*y[i-1] - h**2 * f[i] * y[i])/k1
    13. return y
    14. tmin,tmax = 0,1
    15. T = np.linspace(tmin,tmax,int((tmax-tmin)/0.01))
    16. #归一化之前波函数启动点处的导数值可以随意取
    17. y0 = 0
    18. dy0 = 1
    19. tol = 10 ** -6
    20. k = 0
    21. dk = 0.0001
    22. u = 1
    23. K,Kx = [],[]
    24. for n in range(1000000):
    25. F = lambda r:k**2
    26. f = np.array([F(i) for i in T])
    27. Y = numerov(f,y0,dy0)
    28. if abs(Y[-1]) <= tol:
    29. K.append(Y[-1])
    30. Kx.append(k)
    31. if not n%5000:
    32. print(n/1000000)
    33. k += dk
    34. import joblib
    35. joblib.dump(K,"model-Numerov-infinity-K.pkl")
    36. joblib.dump(Kx,"model-Numerov-infinity-Kx.pkl")
    37. #plt.plot(Kx,K)
    38. plt.scatter(Kx,K,s=2,c="red")
    39. plt.plot(Kx,K,linewidth=2,c="blue")
    40. plt.scatter([i*np.pi for i in range(1,30)],[0 for i in range(29)],s=2,c="green")
    41. #plt.scatter([np.pi*i for i in range(10)],[0.03 for i in range(10)],s=1)
    42. plt.show()

    图像

     

    •  它的误差在1e-6的量级上,至少说明还是和理论符合的差不多的

  • 相关阅读:
    利用特殊反序列化组件攻击原生反序列化入口
    【第51篇】用于交通预测的时空交互动态图卷积网络
    python 基于django协同过滤的旅游推荐系统
    Android进阶:5、发送post请求、json数据格式以及okhttp框架的使用
    【目标检测】50、YOLOX | 回归 anchor-free 的 YOLO 依然能打!
    压测工具nGrinder:性能测试入门
    【计算机网络】从输入URL到页面都显示经历了什么??
    ValueError: could not determine the shape of object type ‘Series’.
    FL Studio2024官方破解中文版本下载
    MyBatis映射文件深入
  • 原文地址:https://blog.csdn.net/Chandler_river/article/details/127578583
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号