• 注册
  • 量子物理 量子物理 关注:1014 内容:44

    python代码:氢原子定态薛定谔方程,输出概率密度和本征值

  • 查看作者
  • 打赏作者
  • 当前位置: 博科园 > 物理学 > 量子物理 > 正文
    • 8
    • Lv.14质子中子电子
      🌼春暖花开
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      29
      30
      31
      32
      33
      34
      35
      36
      37
      38
      39
      40
      41
      42
      43
      44
      45
      46
      47
      48
      49
      50
      51
      52
      53
      54
      55
      56
      57
      58
      59
      60
      61
      62
      63
      64
      65
      66
      67
      68
      69
      70
      71
      72
      73
      74
      75
      76
      77
      78
      79
      80
      import matplotlib.pyplot as plt
      import numpy as np
      from scipy import constants as const
      from scipy import sparse  # 稀疏矩阵
      from scipy.sparse.linalg import eigs  # 稀疏<a href="https://www.bokeyuan.net/topic/xianxing">线性</a>代<a href="https://www.bokeyuan.net/topic/shu">数</a>。矩阵
       
      #这部分给出<a href="https://www.bokeyuan.net/topic/changshu">常数</a>
      hbar =const.hbar
      =const.e
      m_e =const.m_e
      pi =const.pi
      epsilon_0=const.epsilon_0
      joul_to_eV=e
       
      #定义r的<a href="https://www.bokeyuan.net/topic/hanshu">函数</a>
      def calculate_potential_term(r):
          potential=e**2/(4.0*pi*epsilon_0)/r
          sparse.diags((potential))
          return potential
       
      def calculate_angular_term(r):
          angular =l*(l+1)/r**2
          angular_term=sparse.diags((angular))
          return angular_term
       
      def calculate_laplace_three_point(r):
          h=r[1]-r[0]
       
          main_diag = -2.0 / ** 2 * np.ones(N)
          off_diag = 1.0 / ** 2 * np.ones(N - 1)
          laplace_term = sparse.diags([main_diag, off_diag, off_diag], (0-11))
          return laplace_term
       
       
      def build_hamiltonian(r):
          laplace_term = calculate_laplace_three_point(r)
          angular_term = calculate_angular_term(r)
          potential_term = calculate_potential_term(r)
       
          hamiltonian = -hbar ** 2 / (2.0 * m_e) * (laplace_term - angular_term)-potential_term
       
          return hamiltonian
       
       
      def plot(r, densities, eigenvalues):
          plt.xlabel('x ($\\mathrm{\AA}$)')
          plt.ylabel('probability density ($\\mathrm{\AA}^{-1}$)')
          energies = ['E = {: >5.2f} eV'.format(eigenvalues[i].real / e) for in range(3)]
          plt.plot(r * 1e+10, densities[0], color='blue', label=energies[0])
          plt.plot(r * 1e+10, densities[1], color='green', label=energies[1])
          plt.plot(r * 1e+10, densities[2], color='red', label=energies[2])
       
          plt.legend()
          plt.show()
          return
       
       
      """ set up horizontal axis and hamiltonian """
      = 2000
      = 0
      = np.linspace(2e-90.0, N, endpoint=False)#?
      hamiltonian = build_hamiltonian(r)
       
      """ solve eigenproblem """
      number_of_eigenvalues = 30
      eigenvalues, eigenvectors = eigs(hamiltonian, k=number_of_eigenvalues, which='SM')#?
       
      """ sort eigenvalue and eigenvectors """
      eigenvectors = np.array([x for _, x in sorted(zip(eigenvalues, eigenvectors.T), key=lambda pair: pair[0])])
      #zip() 函数用于将可迭代的对象作为参数,将对象中对应的<a href="https://www.bokeyuan.net/topic/yuansu">元素</a>打包成一个个元组,然后返回由这些元组组成的列表。
      #如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用 * 号操作符,可以将元组解压为列表。
      eigenvalues = np.sort(eigenvalues)
       
      """ compute probability density for each eigenvector """
      densities = [np.absolute(eigenvectors[i, :]) ** 2 for in range(len(eigenvalues))]
      #len()字符串长度
      #对数组中的每一个元素求其绝对值。np.abs是这个函数的简写。
       
      """ plot results """
      plot(r, densities, eigenvalues)

    • 生成海报
    • Lv.14质子中子电子
      🌼春暖花开
      置顶

      回复
      Lv.3弦理论长度
      普朗克
      点个赞
      回复
      Lv.29人类
      博科园VIP5
      靓号:12345
      笛卡尔❤️
      打赏了6金币
      回复
      Lv.29人类
      博科园VIP5
      靓号:12345
      笛卡尔❤️
      要是有代码运行效果图就更好了 [s-57]
      回复
      Lv.9高能中微子
      开普勒
      点个赞
      回复
      Lv.37卡普坦星
      门捷列夫
      你端坐在那里,我才知道我有多么浅薄,我曾忘情于两汉的歌赋,我曾惊讶于唐宋诗词,也曾流连于宋元的曲牌,如今而你才是人世间真正的圣人。
      回复
      Lv.35火星
      3888天纪念
      厉害诶 [s-70]
      回复
      Lv.1量子泡沫
      什么软件?
      回复

      请登录之后再进行评论

      登录
      🌼春暖花开
      个人说明:他太懒了,什么都没有写
      关注33 粉丝50 喜欢631内容21

      赞助商

    • 相互支持,合作共赢 Win-Win Cooperation

      邀请好友加入【博科园】有奖励啦♪

    • 任务
    • 偏好设置(换皮肤)
    • 博科园书签 自定义浏览器主页Tab 高效美观的浏览器网址书签标签页管理与导航
    • ★基于全球领先的AI4.0大语言模型 知识问答 内容创作 AI绘画 AI音乐 代码编程 生活办公 对话聊天 样样精通 超强大的AI助手★
      博科园AI
      有疑惑?万能AI为你解答
    • 切换夜间模式
    • 博科园支持全球近百种语言翻译切换|页面格式仅适配中文|点击选择语种
    • 到底部
    • 帖子间隔 侧栏位置:
      注意:部分手机移动网络下载会无反应(疑似手机信号和或系统限制)需要切换WiFi连接才能下载海报成功
      关闭窗口
      下载海报