2024/10 20

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

import numpy as npimport matplotlib.pyplot as pltimport tkinter as tkfrom tkinter import simpledialog# 볼츠만 상수 (J/K)k_B = 1.380649e-23def 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 = bo..

수리 물리학: 베셀 함수(Bessel Function)

import numpy as npimport matplotlib.pyplot as pltfrom scipy.special import jn, ynimport tkinter as tkfrom tkinter import ttkdef plot_bessel_functions(order, x_min, x_max, num_points):    """    주어진 범위에서 베셀 함수(Jn, Yn)를 플로팅합니다.        Parameters:    - order: 베셀 함수의 차수 (n 값)    - x_min: x 값의 최소 범위    - x_max: x 값의 최대 범위    - num_points: x 범위 내의 포인트 수    """    x = np.linspace(x_min, x_max, num_poin..

푸리에 변환(Fourier Transform)

import numpy as npimport matplotlib.pyplot as pltimport tkinter as tkfrom tkinter import ttkfrom tkinter import filedialogdef perform_fourier_transform(signal_freq, sampling_rate, save_result=False, output_filename="fft_result.png"):    # 샘플링 시간 생성    t = np.linspace(0, 1, sampling_rate, endpoint=False)        # 입력 신호 생성 (사인파)    signal = np.sin(2 * np.pi * signal_freq * t)        # 푸리에 변환 수행   ..

2D 라플라스 방정식을 풀기 위한 함수

import numpy as npimport matplotlib.pyplot as pltfrom tkinter import Tk, Label, Entry, Button, Toplevel, messageboxdef solve_laplace(nx=50, ny=50, top=100, bottom=0, left=0, right=0, tolerance=1e-4, max_iterations=10000):    # 격자 초기화    u = np.zeros((nx, ny))    # 경계 조건 설정    u[0, :] = top    # 위쪽 경계 조건    u[-1, :] = bottom # 아래쪽 경계 조건    u[:, 0] = left   # 왼쪽 경계 조건    u[:, -1] = right  # 오른쪽 경계..

전자기학: 파동 방정식(Sine/Cosine 형태의 파동)

import numpy as npimport matplotlib.pyplot as pltfrom matplotlib.widgets import Slider, TextBoximport matplotlib.animation as animation# 초기 파동 파라미터 설정A = 1.0        # 진폭wavelength = 2.0  # 파장frequency = 1.0   # 주파수phi = 0.0      # 초기 위상# 계산을 위한 파생 파라미터k = 2 * np.pi / wavelength  # 파수omega = 2 * np.pi * frequency  # 각주파수# 공간 및 시간 범위 설정x = np.linspace(0, 10, 1000)time = np.linspace(0, 10, 100)# 업데..

조화진동자의 시간 진화 함수 그래프

import tkinter as tkfrom tkinter import messagebox, ttkimport matplotlib.pyplot as plt# 데이터 리스트 초기화time = []input_values = []output_values = []# 데이터 추가 함수def add_data():    try:        t = float(entry_time.get())        input_val = float(entry_input.get())        output_val = float(entry_output.get())        # 데이터 추가        time.append(t)        input_values.append(input_val)        output_value..

조화진동자 함수 그래프

import tkinter as tkfrom matplotlib.backends.backend_tkagg import FigureCanvasTkAggimport matplotlib.pyplot as pltimport numpy as np# 함수 정의def plot_graph():    # 사용자 입력값 가져오기    frequency = float(entry_frequency.get())    amplitude = float(entry_amplitude.get())    phase_shift = float(entry_phase.get())    time_end = float(entry_time.get())    # 시간 배열 생성    t = np.linspace(0, time_end, 1000)    ..