정보통신기술(ICT)

열역학: 볼츠만 분포(Boltzmann Distribution)

해머슴 2024. 10. 31. 10:16
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

 

작심삼주 오블완 챌린지

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

www.tistory.com