반응형
2차 차분 방정식인 라플라스 방정식은 열 전달, 유체 역학, 전자기학 등의 여러 분야에서 사용합니다. 이번 블로그 포스트에서는 Python을 사용하여 라플라스 방정식을 구현하는 방법을 알아보겠습니다.
1단계: 라이브러리 가져오기
먼저 필요한 라이브러리를 가져와야 합니다. 배열 작업을 위해 NumPy 라이브러리를 사용하고 결과를 그리기 위해 Matplotlib 라이브러리를 사용합니다.
import numpy as np
import matplotlib.pyplot as plt
2단계: 정의된 영역과 경계 조건 설정하기
다음으로, 라플라스 방정식의 정의된 영역과 경계 조건을 설정해야 합니다. 간단하게 L 길이의 2D 정사각형 영역을 사용하고 모든 면에서 Dirichlet 경계 조건을 적용할 것입니다.
# 영역 길이
L = 1
# 격자점 개수
N = 100
# 격자 간격
dx = L/N
# 2D 격자
x, y = np.meshgrid(np.linspace(0, L, N+1), np.linspace(0, L, N+1))
# 초기 조건 (모든 위치에서 0)
u = np.zeros_like(x)
# 경계 조건 (Dirichlet)
u[0, :] = 1
u[N, :] = 0
u[:, 0] = 0
u[:, N] = 0
3단계: 라플라스 방정식 풀기
이제, 유한 차분법(Finite Difference Method, FDM)과 Jacobi 반복법을 사용하여 라플라스 방정식을 풀 수 있습니다.
# Jacobi 반복법
for k in range(10000):
u[1:N, 1:N] = (u[0:N-1, 1:N] + u[2:N+1, 1:N] + u[1:N, 0:N-1] + u[1:N, 2:N+1])/4
4단계: 결과 그래프화
마지막으로, 결과를 그래프로 그려서 라플라스 방정식의 해를 시각화할 수 있습니다.
# Plot solution
plt.imshow(u, cmap='jet', origin='lower', extent=[0, L, 0, L])
plt.colorbar()
plt.xlabel('x')
plt.ylabel('y')
plt.show()
728x90
'파이썬' 카테고리의 다른 글
파이썬 콘솔(console) 출력 보이지 않게 하는 코드 (0) | 2023.09.05 |
---|---|
파이썬 DFT 코드 (0) | 2023.04.09 |
tesseract 설치 및 환경변수 설정 방법 (0) | 2023.03.27 |
파이썬 matplotlib 간단 소개 (0) | 2023.03.23 |
파이썬 FFT 코드 (1) | 2023.03.23 |
댓글