Main Content

연립미분방정식 풀기

초기 조건의 유무와 상관없이 dsolve 함수를 사용하여 몇 가지 변수로 여러 개의 연립상미분방정식을 풉니다. 단일 미분 방정식을 풀려면 미분 방정식 풀기 항목을 참조하십시오.

연립미분방정식 풀기

다음 1계 선형 연립미분방정식을 풀어 보십시오.

dudt=3u+4v,dvdt=-4u+3v.

기호 함수 u(t)v(t)를 생성하려면 우선 syms를 사용하여 uv를 나타냅니다.

syms u(t) v(t)

==를 사용하여 방정식을 정의하고 diff 함수를 사용하여 미분을 표현합니다.

ode1 = diff(u) == 3*u + 4*v;
ode2 = diff(v) == -4*u + 3*v;
odes = [ode1; ode2]
odes(t) = 

(t u(t)=3u(t)+4v(t)t v(t)=3v(t)-4u(t))

해를 구조체의 요소로 반환하는 dsolve 함수를 사용하여 방정식을 풉니다.

S = dsolve(odes)
S = struct with fields:
    v: C1*cos(4*t)*exp(3*t) - C2*sin(4*t)*exp(3*t)
    u: C2*cos(4*t)*exp(3*t) + C1*sin(4*t)*exp(3*t)

dsolve로 방정식을 풀 수 없다면 수치적으로 방정식을 풀어 보십시오. 수치적으로 2계 미분 방정식 풀기 항목을 참조하십시오.

u(t)v(t)에 액세스하려면 구조체 S의 요소를 참조하십시오.

uSol(t) = S.u
uSol(t) = C2cos(4t)e3t+C1sin(4t)e3t
vSol(t) = S.v
vSol(t) = C1cos(4t)e3t-C2sin(4t)e3t

또는 여러 개의 출력 인수를 제공하여 직접 u(t)v(t)를 저장할 수도 있습니다.

[uSol(t),vSol(t)] = dsolve(odes)
uSol(t) = C2cos(4t)e3t+C1sin(4t)e3t
vSol(t) = C1cos(4t)e3t-C2sin(4t)e3t

조건을 지정하지 않았기 때문에 상수 C1C2가 나타납니다. 초기 조건 u(0) == 0v(0) == 0을 사용하여 연립방정식을 풉니다. dsolve 함수는 이러한 조건을 만족하는 상수 값을 구합니다.

cond1 = u(0) == 0;
cond2 = v(0) == 1;
conds = [cond1; cond2];
[uSol(t),vSol(t)] = dsolve(odes,conds)
uSol(t) = sin(4t)e3t
vSol(t) = cos(4t)e3t

fplot을 사용하여 해를 시각화합니다.

fplot(uSol)
hold on
fplot(vSol)
grid on
legend('uSol','vSol','Location','best')

행렬 형식의 미분 방정식 풀기

dsolve를 사용하여 행렬 형식의 미분 방정식을 풀어 보십시오.

다음 연립미분방정식이 있다고 가정해 보겠습니다.

dxdt=x+2y+1,dydt=-x+y+t.

이 방정식의 행렬 형식은 다음과 같습니다.

[xy]=[12-11][xy]+[1t].

다음과 같이 가정하겠습니다.

Y=[xy],A=[12-11],B=[1t].

이 방정식은 이제 Y=A Y+B.가 됩니다.

다음 행렬과 행렬 방정식을 정의합니다.

syms x(t) y(t)
A = [1 2; -1 1];
B = [1; t];
Y = [x; y];
odes = diff(Y) == A*Y + B
odes(t) = 

(t x(t)=x(t)+2y(t)+1t y(t)=t-x(t)+y(t))

dsolve를 사용하여 행렬 방정식을 풉니다. simplify 함수를 사용하여 해를 단순화합니다.

[xSol(t),ySol(t)] = dsolve(odes);
xSol(t) = simplify(xSol(t))
xSol(t) = 

2t3+2C2etcos(2t)+2C1etsin(2t)+19

ySol(t) = simplify(ySol(t))
ySol(t) = 

C1etcos(2t)-t3-C2etsin(2t)-29

조건을 지정하지 않았기 때문에 상수 C1C2가 나타납니다.

초기 조건 u(0)=2v(0)=-1을 사용하여 연립방정식을 풉니다. 방정식을 행렬 형식으로 지정할 때 초기 조건 역시 행렬 형식으로 지정해야 합니다. dsolve는 이러한 조건을 만족하는 상수 값을 구합니다.

C = Y(0) == [2;-1];
[xSol(t),ySol(t)] = dsolve(odes,C)
xSol(t) = 

2etσ217218+e-t4σ1+2σ2+6tσ1+62tσ218-2etσ1e-t4σ2-2σ1+6tσ2-62tσ118+79where  σ1=sin(2t)  σ2=cos(2t)

ySol(t) = 

-etσ117218+e-t4σ1+2σ2+6tσ1+62tσ218-etσ2e-t4σ2-2σ1+6tσ2-62tσ118+79where  σ1=sin(2t)  σ2=cos(2t)

fplot을 사용하여 해를 시각화합니다.

clf
fplot(ySol)
hold on
fplot(xSol)
grid on
legend('ySol','xSol','Location','best')

참고 항목