미분방정식의 풀이
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
'Matlab' 카테고리의 다른 글
[Matlab 응용] Unit difference between matlab and hysys (0) | 2020.05.08 |
---|---|
[Matlab 응용] Connecting Matlab to Hysys (2) | 2020.05.08 |
[Matlab 기초] 라플라스 변환 (0) | 2020.02.17 |
[Matlab 기초] 데이터 분석함수 (0) | 2020.02.16 |
[Matlab 기초] 행렬 생성함수 (0) | 2020.02.16 |