اذهب إلى المحتوى
  • 0

كيفية كتابة معادلة شرودنجر في البايثون 

Nou nou

السؤال

Recommended Posts

  • 0

باستطاعتك كتابة معادلة شرودنجر في البايثون باستخدام مكتبة SciPy. وفيما يلي مثال على كيفية فعل ذلك:

import numpy as np
from scipy.integrate import odeint
from scipy.constants import hbar

# تحديد الثوابت
m = 9.10938356e-31  # كتلة الالكترون
L = 1e-9  # طول الصندوق
N = 1000  # عدد النقاط
dx = L / (N - 1)  # تحديد مقدار الخطوة

# تعريف الدالة الجذرية
def psi(x, n):
    return np.sqrt(2 / L) * np.sin(n * np.pi * x / L)

# تعريف الدالة الموجية
def wavefunction(x, t, n):
    # تحديد الطاقة
    E = (n ** 2 * np.pi ** 2 * hbar ** 2) / (2 * m * L ** 2)
    # تحديد معامل الانحراف
    V = np.zeros(N)
    V[(x < L / 2) & (x > L / 4)] = 1e6
    # حل معادلة شرودنجر باستخدام odeint
    dpsi_dt = np.zeros(N)
    dpsi_dt[1:-1] = (hbar / (2 * m * dx ** 2)) * (psi(x[2:], n) + psi(x[:-2], n) - 2 * psi(x[1:-1], n)) + (V[1:-1] - E) * psi(x[1:-1], n) / hbar
    return dpsi_dt

# تحديد الزمن
t = np.linspace(0, 1e-15, 100)

# تحديد نسبة الاهتزاز
n = 1

# حساب حالة الموجة للنسبة المحددة
x = np.linspace(0, L, N)
psi_0 = psi(x, n)
psi_t = odeint(wavefunction, psi_0, t, args=(n,))

# رسم حالة الموجة في الزمن
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
ax.plot(x, np.abs(psi_t[0]) ** 2, label='t=0')
ax.plot(x, np.abs(psi_t[50]) ** 2, label='t=0.5 fs')
ax.plot(x, np.abs(psi_t[-1]) ** 2, label='t=1 fs')
ax.set_xlabel('x (m)')
ax.set_ylabel(r'$|\psi(x, t)|^2$')
ax.legend()
plt.show()

الكود السابق يعمل على بحساب حالة الموجة لصندوق كمي مربع الشكل باستخدام معادلة شرودنجر.

يتم تمثيل نتائج الحساب بواسطة رسم بياني يعرض حالة الموجة في الزمن، وحساب حالة الموجة في الزمن باستخدام دالة odeint الموجودة في مكتبة SciPy، ثمتحديد الثوابت مثل الكتلة وطول الصندوق وعدد النقاط ومقدار الخطوة.

وتتمثل الفكرة الأساسية في تحديد الطاقة ومعامل الانحراف وحل معادلة شرودنجر باستخدام odeint، لتمثيل الحل بواسطة رسم بياني لحالة الموجة في الزمن.

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...