정보통신기술(ICT)

양자역학 1차원 조화진동자의 파동함수(Hermite Polynomial)

해머슴 2024. 10. 17. 10:48

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