본문 바로가기
파이썬

파이썬 Laplace 코드

by Vacant June 2023. 3. 23.
반응형

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

댓글