import numpy as np
import matplotlib.pyplot as plt
from scipy.special import hermite
from math import factorial, pi
# 물리 상수 정의
m = 1.0 # 입자의 질량
omega = 1.0 # 진동자의 각진동수
hbar = 1.0 # 플랑크 상수
# 파동함수 정의
def psi_n(x, n):
# Hermite 다항식 계산
hermite_poly = hermite(n)
# 상수 부분 계산
normalization_factor = 1 / np.sqrt(2**n * factorial(n)) * (m * omega / (pi * hbar))**(1/4)
# 파동함수 계산
psi = normalization_factor * np.exp(-m * omega * x**2 / (2 * hbar)) * hermite_poly(np.sqrt(m * omega / hbar) * x)
return psi
# 파동함수를 그래프로 그리는 함수
def plot_wavefunctions(n_max, x_range=(-5, 5), num_points=1000):
x = np.linspace(x_range[0], x_range[1], num_points)
plt.figure(figsize=(10, 6))
# 각 n에 대해 파동함수 그리기
for n in range(n_max + 1):
plt.plot(x, psi_n(x, n), label=f'n = {n}')
# 그래프 설정
plt.title(f'1차원 조화진동자의 파동함수 (n = 0 ~ {n_max})')
plt.xlabel('x')
plt.ylabel('$\psi_n(x)$')
plt.legend()
plt.grid(True)
plt.show()
# n = 0부터 n = 4까지의 파동함수를 그리기
plot_wavefunctions(n_max=4)
'정보통신기술(ICT)' 카테고리의 다른 글
조화진동자의 시간 진화 함수 그래프 (0) | 2024.10.21 |
---|---|
조화진동자 함수 그래프 (0) | 2024.10.18 |
최대값과 최소값 함수 (0) | 2024.10.15 |
지수 함수 (0) | 2024.10.14 |
절대값 함수 (0) | 2024.10.11 |