import numpy as np
import matplotlib.pyplot as plt
import tkinter as tk
from tkinter import simpledialog
# 볼츠만 상수 (J/K)
k_B = 1.380649e-23
def boltzmann_distribution(energy, temperature):
# 볼츠만 분포 계산
return np.exp(-energy / (k_B * temperature))
def plot_boltzmann_distribution(energy_range, temperature):
# 에너지 범위 생성
energies = np.linspace(0, energy_range, 500)
# 분포 계산
distribution = boltzmann_distribution(energies, temperature)
# 그래프 출력
plt.figure(figsize=(10, 6))
plt.plot(energies, distribution, label=f'Temperature: {temperature}K')
plt.xlabel('Energy (J)')
plt.ylabel('Probability')
plt.title('Boltzmann Distribution')
plt.legend()
plt.grid(True)
plt.show()
def get_user_input():
# tkinter 기본 창 생성 및 숨기기
root = tk.Tk()
root.withdraw()
# 에너지 범위와 온도 입력 받기
try:
energy_range = float(simpledialog.askstring("Input", "에너지 범위 (J)을 입력하세요:"))
temperature = float(simpledialog.askstring("Input", "온도 (K)을 입력하세요:"))
# 그래프 출력
plot_boltzmann_distribution(energy_range, temperature)
except (ValueError, TypeError):
print("잘못된 입력입니다. 숫자를 입력해주세요.")
# 사용자 입력 함수 호출
get_user_input()
https://www.tistory.com/event/write-challenge-2024
'정보통신기술(ICT)' 카테고리의 다른 글
상미분 방정식: 로렌츠 방정식(Lorenz Equations) (3) | 2024.11.04 |
---|---|
양자역학: 입자상자 문제(Particle in a Box) (3) | 2024.11.01 |
로지스틱 함수 (0) | 2024.10.30 |
맵 타임랩스 소프트웨어(10.29.24) (0) | 2024.10.29 |
맵 타임랩스 소프트웨어 (0) | 2024.10.28 |