Main Content

편미분 방정식 풀기

편미분 방정식(PDE)에서 해를 구하려는 함수는 여러 변수의 영향을 받으며, 미분 방정식에는 각 변수에 대한 편도함수가 포함될 수 있습니다. 편미분 방정식은 파장, 열 흐름, 유체 분산 및 시간에 따라 변화하는 공간적 거동을 보이는 기타 현상을 모델링하는 데 유용합니다.

MATLAB을 사용하여 풀 수 있는 PDE 유형

MATLAB® PDE 솔버 pdepe는 하나의 공간 변수 x와 시간 t에서 연립 PDE에 대한 초기 경계값 문제를 풉니다. 이는 시간에 따라 변화하는 일변수 ODE로 간주할 수 있습니다.

pdepe는 해를 구하려는 1차원 방정식에 대해 비공식 분류 기준을 사용합니다.

  • 시간 도함수가 있는 방정식은 포물선 방정식입니다. 이에 대한 예로 열 방정식을 들 수 있습니다. ut=2ux2

  • 시간 도함수가 없는 방정식은 타원 방정식입니다. 이에 대한 예로 라플라스 방정식을 들 수 있습니다. 2ux2=0

pdepe를 사용하려면 연립방정식에 하나 이상의 포물선 방정식이 있어야 합니다. 즉, 연립방정식 내에 하나 이상의 방정식에 시간 도함수가 있어야 합니다.

pdepe는 각 대칭으로 인해 1차원 문제로 간소화될 수 있는 특정 2차원 및 3차원 문제도 풀 수 있습니다. (자세한 내용은 대칭 상수 m에 대한 인수 설명을 참조하십시오.)

Partial Differential Equation Toolbox™ 는 이런 기능을 디리클레 및 노이만 경계 조건이 있는 2차원 및 3차원의 일반화된 문제까지 풀 수 있도록 확장했습니다.

1차원 PDE 풀기

1차원 PDE는 시간 t와 하나의 공간 변수 x에 따라 달라지는 함수 u(x,t)를 포함합니다. MATLAB PDE 솔버 pdepe는 다음 형식의 1차원 포물선 PDE와 1차원 타원 PDE로 구성된 연립방정식을 풉니다.

c(x,t,u,ux)ut=xmx(xmf(x,t,u,ux))+s(x,t,u,ux).

방정식은 다음과 같은 속성을 가집니다.

  • PDE는 t0 ≤ t ≤ tfa ≤ x ≤ b에서 성립합니다.

  • 공간 구간 [a, b]는 유한해야 합니다.

  • m은 0, 1, 2 중 하나여야 하며, 각각 슬래브(Slab) 대칭, 원통 대칭, 대칭에 해당합니다. m > 0이면 a ≥ 0도 성립해야 합니다.

  • 계수 f(x,t,u,ux)는 플럭스 항이고, s(x,t,u,ux)는 소스 항입니다.

  • 플럭스 항은 편도함수 ∂u/∂x에 종속되어야 합니다.

시간에 대한 편도함수의 결합은 대각 행렬 c(x,t,u,ux)의 곱셈으로 제한됩니다. 이 행렬의 대각선 요소는 0이거나 양수입니다. 0인 요소는 타원 방정식에 대응되고, 그렇지 않은 요소는 포물선 방정식에 대응됩니다. 하나 이상의 포물선 방정식이 있어야 합니다. 포물선 방정식에 대응되는 c의 요소는 메시 점(해를 구하는 점)인 경우 x의 고립된(Isolated) 값에서 0이 될 수 있습니다. 물질의 경계면으로 인한 c 및 s에서의 불연속은 메시 점이 각 경계면에 있는 경우 허용됩니다.

풀이 과정

pdepe로 PDE를 풀려면 c, f, s에 대한 방정식 계수, 초기 조건, 경계에 있는 해의 동작, 해를 구하는 점들로 구성된 메시를 정의해야 합니다. 함수 호출 sol = pdepe(m,pdefun,icfun,bcfun,xmesh,tspan)은 지정된 메시에서 다음 정보를 사용하여 해를 계산합니다.

  • m은 대칭 상수입니다.

  • pdefun은 풀려는 방정식을 정의합니다.

  • icfun은 초기 조건을 정의합니다.

  • bcfun은 경계 조건을 정의합니다.

  • xmesh는 x의 공간 값으로 구성된 벡터입니다.

  • tspan은 t의 시간 값으로 구성된 벡터입니다.

xmesh 벡터와 tspan 벡터는 pdepe가 해를 구하는 2차원 그리드를 함께 구성합니다.

방정식

pdepe에서 요구되는 표준 형식으로 PDE를 표현해야 합니다. 이 형식으로 작성하면 계수 c, f 및 s의 값을 파악할 수 있습니다.

MATLAB에서는 다음 형식의 함수를 사용하여 방정식을 코딩할 수 있습니다.

function [c,f,s] = pdefun(x,t,u,dudx)
c = 1;
f = dudx;
s = 0;
end
이 경우, pdefun은 방정식 ut=2ux2를 정의합니다. 방정식이 여러 개이면 c, f 및 s는 각 요소가 하나의 방정식에 대응하는 벡터입니다.

초기 조건

초기 시간 t = t0에서 모든 x에 대해 해 성분은 다음 형식의 초기 조건을 충족합니다.

u(x,t0)=u0(x).

MATLAB에서는 다음 형식의 함수를 사용하여 초기 조건을 코딩할 수 있습니다.

function u0 = icfun(x)
u0 = 1;
end
이 경우, u0 = 1은 초기 조건 u0(x,t0) = 1을 정의합니다. 방정식이 여러 개인 경우 u0은 각 요소가 하나의 방정식의 초기 조건을 정의하는 벡터입니다.

경계 조건

경계 x = a 또는 x = b에서 모든 t에 대해 해 성분은 다음 형식의 경계 조건을 충족합니다.

p(x,t,u)+q(x,t)f(x,t,u,ux)=0.

q(x,t)는 0이거나 절대로 0이 아닌 요소를 갖는 대각 행렬입니다. 참고로, 경계 조건은 x에 대한 u의 편도함수에 대해서가 아니라 플럭스 f에 대해 표현됩니다. 또한 두 개의 계수 p(x,t,u)q(x,t) 중 p만 u 값에 영향을 받습니다.

MATLAB에서는 다음 형식의 함수를 사용하여 경계 조건을 코딩할 수 있습니다.

function [pL,qL,pR,qR] = bcfun(xL,uL,xR,uR,t)
pL = uL;
qL = 0;
pR = uR - 1;
qR = 0;
end
pLqL은 왼쪽 경계에 대한 계수인 반면, pRqR은 오른쪽 경계에 대한 계수입니다. 이 경우, bcfun은 경계 조건을 정의합니다.

uL(xL,t)=0uR(xR,t)=1

방정식이 여러 개인 경우 출력값 pL, qL, pRqR은 각각의 요소가 하나의 방정식의 경계 조건을 정의하는 벡터입니다.

적분 옵션

MATLAB PDE 솔버의 디폴트 적분 속성은 일반적인 문제를 처리하도록 선택되어 있습니다. 경우에 따라, 이러한 디폴트 값을 재정의하여 솔버 성능을 향상시킬 수 있습니다. 그렇게 하려면 odeset을 사용하여 options 구조체를 만드십시오. 그런 다음, 구조체를 pdepe에 마지막 입력 인수로 전달하십시오.

sol = pdepe(m,pdefun,icfun,bcfun,xmesh,tspan,options)

기본 ODE 솔버 ode15s의 옵션 중 다음 표에 나와 있는 옵션만 pdepe에 사용할 수 있습니다.

범주

옵션 이름

오차 제어

RelTol, AbsTol, NormControl

스텝 크기

InitialStep, MaxStep

이벤트 기록

Events

해 구하기

pdepe를 사용하여 방정식을 풀면 MATLAB은 해를 3차원 배열 sol로 반환합니다. 여기서 sol(i,j,k)t(i)x(j)에서 구한 해의 k번째 성분을 포함합니다. 보통 명령 u = sol(:,:,k)를 사용하여 k번째 해 성분을 추출할 수 있습니다.

지정하는 시간 메시는 출력용으로만 사용되고 솔버가 취하는 내부 시간 스텝에는 영향을 주지 않습니다. 하지만 지정하는 공간 메시는 해의 품질과 속도에 영향을 줄 수 있습니다. 방정식을 푼 후 pdeval을 사용하여 다른 공간 메시로 pdepe에서 반환하는 해 구조체를 계산할 수 있습니다.

예제: 열 방정식

포물선 PDE의 예로는 1차원의 열 방정식을 들 수 있습니다.

ut=2ux2.

이 방정식은 0xLt0인 경우의 열 방산을 설명합니다. 목표는 온도 u(x,t)를 구하는 것입니다. 처음에 온도는 0이 아닌 상수이기 때문에 초기 조건은 다음과 같습니다.

u(x,0)=T0.

또한, 온도가 왼쪽 경계에서 0이고 오른쪽 경계에서 0이 아니기 때문에 경계 조건은 다음과 같습니다.

u(0,t)=0,

u(L,t)=1.

MATLAB®에서 이 방정식을 풀려면 방정식, 초기 조건 및 경계 조건을 코딩하고 적합한 해 메시를 선택한 후에 솔버 pdepe를 호출해야 합니다. 필요한 함수를 이 예제와 같이 파일 끝에 로컬 함수로 포함시킬 수도 있고, MATLAB 경로에 있는 디렉터리에 이름이 지정된 별도의 파일로 저장할 수도 있습니다.

방정식 코딩하기

방정식을 코딩하려면 먼저 방정식이 pdepe 솔버에서 요구하는 형식인지 확인해야 합니다.

c(x,t,u,ux)ut=x-mx(xmf(x,t,u,ux))+s(x,t,u,ux).

열 방정식을 이 형식으로 표현하면 다음과 같습니다.

1ut=x0x(x0ux)+0.

따라서, 계수의 값은 다음과 같습니다.

  • m=0

  • c=1

  • f=ux

  • s=0

m 값이 pdepe에 인수로 전달되는 반면, 다른 계수들은 다음과 같이 방정식의 함수에 인코딩됩니다.

function [c,f,s] = heatpde(x,t,u,dudx)
c = 1;
f = dudx;
s = 0;
end

(참고: 모든 함수는 예제 끝에 로컬 함수로 포함되어 있습니다.)

초기 조건 코딩하기

열 방정식에 대한 초기 조건 함수는 u0에 상수 값을 할당합니다. 이 함수는 x에 대한 입력값을 실제로 사용되지 않더라도 꼭 받아야 합니다.

function u0 = heatic(x)
u0 = 0.5;
end

경계 조건 코딩하기

pdepe 솔버에서 요구하는 경계 조건의 표준 형식은 다음과 같습니다.

p(x,t,u)+q(x,t)f(x,t,u,ux)=0.

이 문제의 경계 조건을 표준 형식으로 작성하면 다음과 같습니다.

u(0,t)+(0f)=0,

(u(L,t)-1)+(0f)=0.

pq의 값은 다음과 같습니다.

  • pL=uL, qL=0.

  • pR=uR-1, qR=0.

대응하는 함수는 다음과 같습니다.

function [pl,ql,pr,qr] = heatbc(xl,ul,xr,ur,t)
pl = ul;
ql = 0;
pr = ur - 1;
qr = 0;
end

해 메시 선택하기

20개의 점으로 구성된 공간 메시와 30개의 점으로 구성된 시간 메시를 사용합니다. 해가 빠르게 정상 상태에 도달하므로, 출력값에서 이 거동을 파악할 수 있도록 t=0 근처의 시간 점들은 조밀하게 배치되어 있습니다.

L = 1;
x = linspace(0,L,20);
t = [linspace(0,0.05,20), linspace(0.5,5,10)];

방정식 풀기

마지막으로 대칭 m, PDE 방정식, 초기 조건, 경계 조건, xt에 대한 메시를 사용하여 방정식을 풉니다.

m = 0;
sol = pdepe(m,@heatpde,@heatic,@heatbc,x,t);

해 플로팅하기

pcolor를 사용하여 해 행렬을 시각화합니다.

colormap hot
pcolor(x,t,sol)
colorbar
xlabel('Distance x','interpreter','latex')
ylabel('Time t','interpreter','latex')
title('Heat Equation for $0 \le x \le 1$ and $0 \le t \le 5$','interpreter','latex')

Figure contains an axes object. The axes object with title Heat Equation for 0 less equals x less equals 1 and 0 less equals t less equals 5, xlabel Distance x, ylabel Time t contains an object of type surface.

로컬 함수(Local Function)

function [c,f,s] = heatpde(x,t,u,dudx)
c = 1;
f = dudx;
s = 0;
end
function u0 = heatic(x)
u0 = 0.5;
end
function [pl,ql,pr,qr] = heatbc(xl,ul,xr,ur,t)
pl = ul;
ql = 0;
pr = ur - 1;
qr = 0;
end

PDE 예제와 파일

가장 일반적인 1차원 PDE 문제를 푸는데 있어 탁월한 출발점이 되는 예제 파일이 여러 개 있습니다. 예제를 찾아 실행하려면 미분 방정식 예제 앱을 사용하십시오. 이 앱을 실행하려면 다음을 입력하십시오.

odeexamples

편집을 위해 개별 파일을 열려면 다음을 입력하십시오.

edit exampleFileName.m

예제를 실행하려면 다음을 입력하십시오.

exampleFileName

다음 표에는 사용 가능한 PDE 예제 파일 목록이 포함되어 있습니다.

예제 파일

설명

예제 링크

pdex1

해에 대한 정식화, 계산 및 플로팅을 보여주는 단순한 PDE

단일 PDE 풀기

pdex2

불연속을 포함하는 문제

불연속을 갖는 PDE 풀기

pdex3

편도함수에 대한 계산 값을 필요로 하는 문제

PDE 풀기 및 편도함수 계산하기

pdex4

구간의 양쪽 끝에 경계층을 갖고 작은 t에 대해 급격히 변하는 해를 갖는 두 개의 PDE로 구성된 연립방정식

연립 PDE 풀기

pdex5

초기 조건으로 계단 함수를 사용하는 연립 PDE

초기 조건으로 계단 함수를 사용하는 연립 PDE 풀기

참고 문헌

[1] Skeel, R. D. and M. Berzins, "A Method for the Spatial Discretization of Parabolic Equations in One Space Variable," SIAM Journal on Scientific and Statistical Computing, Vol. 11, 1990, pp. 1–32.

참고 항목

| | | |

관련 항목