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
'정보통신기술(ICT)' 카테고리의 다른 글
양자역학: 터널링 효과(Quantum Tunneling Effect) (4) | 2024.11.05 |
---|---|
상미분 방정식: 로렌츠 방정식(Lorenz Equations) (3) | 2024.11.04 |
열역학: 볼츠만 분포(Boltzmann Distribution) (0) | 2024.10.31 |
로지스틱 함수 (0) | 2024.10.30 |
맵 타임랩스 소프트웨어(10.29.24) (0) | 2024.10.29 |