정보통신기술(ICT)

양자역학: 입자상자 문제(Particle in a Box)

해머슴 2024. 11. 1. 10:08
import tkinter as tk
from tkinter import messagebox
import matplotlib.pyplot as plt
import numpy as np

# 에너지 계산 함수
def calculate_and_plot_energy():
    try:
        length = float(entry_length.get())  # 상자 길이
        mass = float(entry_mass.get())      # 입자 질량
        max_n = int(entry_n.get())          # 최대 양자수

        # 상자 속 입자의 에너지 계산 공식
        h = 6.62607015e-34  # 플랑크 상수 (J*s)
        n_values = np.arange(1, max_n + 1)
        energies = (n_values**2 * h**2) / (8 * mass * (length**2))

        # 그래프 그리기
        plt.figure(figsize=(8, 5))
        plt.bar(n_values, energies, color='skyblue')
        plt.xlabel('Quantum Number (n)')
        plt.ylabel('Energy (Eₙ) in Joules')
        plt.title('Particle in a Box Energy Levels')
        plt.xticks(n_values)
        plt.show()

    except ValueError:
        messagebox.showerror("Invalid Input", "Please enter valid numeric values.")

# GUI 설정
root = tk.Tk()
root.title("Particle in a Box - Quantum Mechanics")

# 상자 길이 입력
label_length = tk.Label(root, text="Box Length (L) in meters:")
label_length.grid(row=0, column=0, padx=10, pady=10)
entry_length = tk.Entry(root)
entry_length.grid(row=0, column=1, padx=10, pady=10)

# 질량 입력
label_mass = tk.Label(root, text="Particle Mass (m) in kg:")
label_mass.grid(row=1, column=0, padx=10, pady=10)
entry_mass = tk.Entry(root)
entry_mass.grid(row=1, column=1, padx=10, pady=10)

# 최대 양자수 입력
label_n = tk.Label(root, text="Maximum Quantum Number (n):")
label_n.grid(row=2, column=0, padx=10, pady=10)
entry_n = tk.Entry(root)
entry_n.grid(row=2, column=1, padx=10, pady=10)

# 결과 표시 버튼
btn_calculate = tk.Button(root, text="Plot Energy Levels", command=calculate_and_plot_energy)
btn_calculate.grid(row=3, column=0, columnspan=2, pady=20)

root.mainloop()

 

 

 https://www.tistory.com/event/write-challenge-2024

 

작심삼주 오블완 챌린지

오늘 블로그 완료! 21일 동안 매일 블로그에 글 쓰고 글력을 키워보세요.

www.tistory.com