미분방정식의 풀이

 

Matlab에서는 다양한 상미분 방정식 풀이함수를 제공한다. 대부분 ode45 함수를 가장 많이 사용한다.

 

풀이 함수 풀이 방법
ode23 Runge-Kutta lower-order(2차 및 3)
ode45 Runge-Kutta higher-order(4차 및 5)
ode113 Adams-Bashforth-Moulton

 

Matlab의 상미분 방정식 풀이함수(solver)는 다음과 같이 사용한다.

 

[t,y]=solver(odefun,tspan,y0) 또는 [t, y] = solver(odefun,tspan,y0,options)

 

위에서 solver는 풀이함수 이름, odefun은 미분방정식 함수 파일 이름, tspan은 독립변수 구간, y0는 초기값이다.

 

풀이함수가 다음과 같을때 ode45 solver를 이용하여 미분방정식을 풀어보자.

 

아래와 같은 풀이함수를 script로 저장한다.

 

function dy = dfun (t,y)

dy = exp(-t);

end

 

명령창에 다음과 같이 입력한다.

@dfun으로 함수를 불러온다.

 

>> tspan = [0 1]; y0 = -1;

>> [t y] = ode45(@dfun, tspan, y0);

>> plot(t,y), grid, xlabel('t'), ylabel('y(t)')

 

dsolve를 이용하여 미분방정식 풀이

 

dsolve 명령어를 이용하여 미분방정식을 풀 수 있다.

 

>> dsolve('D3x+3*D2x+Dx-2*x=1+exp(3*t)','x(0)=1','Dx(0)=0','D2x(0)=1')

 

ans =

exp(3*t)/5 - (7*exp(-2*t))/10 + exp(t*(5^(1/2)/2 - 1/2))*(exp(t/2 - (5^(1/2)*t)/2)*(5^(1/2)/10 - 1/2) + exp((7*t)/2 - (5^(1/2)*t)/2)*((4*5^(1/2))/55 - 1/11)) - exp(-t*(5^(1/2)/2 + 1/2))*(exp(t/2 + (5^(1/2)*t)/2)*(5^(1/2)/10 + 1/2) + exp((7*t)/2 + (5^(1/2)*t)/2)*((4*5^(1/2))/55 + 1/11)) - exp(t*(5^(1/2)/2 - 1/2))*((4*5^(1/2))/55 - 12/11) + (4*5^(1/2)*exp(-t*(5^(1/2)/2 + 1/2))*(3*5^(1/2) + 1))/55 + 1/2

+ Recent posts