이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.
미분 방정식 풀기
초기 조건의 유무와 관계없이 dsolve
함수를 사용하여 해석적으로 미분 방정식의 해를 구합니다. 연립미분방정식의 해를 구하려면 연립미분방정식 풀기 항목을 참조하십시오.
1계 선형 ODE
다음 미분 방정식을 풀어 보겠습니다.
기호 함수 y(t)
를 생성하려면 우선 syms
를 사용하여 y를 나타내십시오.
syms y(t)
==
를 사용하여 방정식을 정의하고 diff
함수를 사용하여 미분을 표현합니다.
ode = diff(y,t) == t*y
ode(t) = diff(y(t), t) == t*y(t)
dsolve
를 사용하여 방정식을 풉니다.
ySol(t) = dsolve(ode)
ySol(t) = C1*exp(t^2/2)
조건이 있는 미분 방정식 풀기
이전 해법에서는 조건을 지정하지 않았기 때문에 상수 C1
이 나타납니다. 초기 조건 y(0) == 2
를 사용하여 방정식을 풉니다. dsolve
함수는 이 조건을 충족시키는 C1
의 값을 구합니다.
cond = y(0) == 2; ySol(t) = dsolve(ode,cond)
ySol(t) = 2*exp(t^2/2)
dsolve
로 방정식을 풀 수 없다면 수치적으로 방정식을 풀어 보십시오. 수치적으로 2계 미분 방정식 풀기 항목을 참조하십시오.
초기 조건이 있는 비선형 미분 방정식
초기 조건이 있는 다음 비선형 미분 방정식을 풀어 보십시오. 이 방정식에는 여러 개의 해가 있습니다.
syms y(t) ode = (diff(y,t)+y)^2 == 1; cond = y(0) == 0; ySol(t) = dsolve(ode,cond)
ySol(t) = exp(-t) - 1 1 - exp(-t)
초기 조건이 있는 2계 ODE
2개의 초기 조건이 있는 다음 2계 미분 방정식을 풀어 보십시오.
방정식과 조건을 정의합니다. 두 번째 초기 조건은 y
의 1계 도함수를 포함합니다. 기호 함수 Dy = diff(y)
를 작성하여 도함수를 표현한 다음 Dy(0)==0
을 사용하여 조건을 정의합니다.
syms y(x) Dy = diff(y); ode = diff(y,x,2) == cos(2*x)-y; cond1 = y(0) == 1; cond2 = Dy(0) == 0;
y
에 대해 ode
를 풉니다. simplify
함수를 사용하여 해를 단순화합니다.
conds = [cond1 cond2]; ySol(x) = dsolve(ode,conds); ySol = simplify(ySol)
ySol(x) = 1 - (8*sin(x/2)^4)/3
초기 조건이 있는 3계 ODE
3개의 초기 조건이 있는 다음 3계 미분 방정식을 풀어 보십시오.
초기 조건에는 1계 및 2계 도함수가 포함되어 있으므로 두 개의 기호 함수 Du = diff(u,x)
및 D2u = diff(u,x,2)
를 작성하여 초기 조건을 지정합니다.
syms u(x) Du = diff(u,x); D2u = diff(u,x,2);
방정식과 초기 조건을 작성하고 이 방정식을 풉니다.
ode = diff(u,x,3) == u; cond1 = u(0) == 1; cond2 = Du(0) == -1; cond3 = D2u(0) == pi; conds = [cond1 cond2 cond3]; uSol(x) = dsolve(ode,conds)
uSol(x) = (pi*exp(x))/3 - exp(-x/2)*cos((3^(1/2)*x)/2)*(pi/3 - 1) -... (3^(1/2)*exp(-x/2)*sin((3^(1/2)*x)/2)*(pi + 1))/3
기타 ODE 예
다음 표에는 여러 미분 방정식의 예와 관련 Symbolic Math Toolbox™ 구문이 나와 있습니다.
미분 방정식 | MATLAB® 명령 |
---|---|
| syms y(t) ode = diff(y)+4*y == exp(-t); cond = y(0) == 1; ySol(t) = dsolve(ode,cond) ySol(t) = exp(-t)/3 + (2*exp(-4*t))/3 |
| syms y(x) ode = 2*x^2*diff(y,x,2)+3*x*diff(y,x)-y == 0; ySol(x) = dsolve(ode) ySol(x) = C1/(3*x) + C2*x^(1/2) |
에어리 방정식. | syms y(x) ode = diff(y,x,2) == x*y; ySol(x) = dsolve(ode) ySol(x) = C1*airy(0,x) + C2*airy(2,x) |
퓌죠 급수해 | syms y(x) a ode = (x^2+1)*diff(y,x,2)-2*x*diff(y,x)+y == 0; Dy = diff(y,x); cond = [Dy(0) == a; y(0) == 5]; ySol(x) = dsolve(ode,cond,'ExpansionPoint',0) ySol(x) = - (a*x^5)/120 - (5*x^4)/24 + (a*x^3)/6 - (5*x^2)/2 + a*x + 5 |
참고 항목
dsolve
| odeFunction
| odeToVectorField
| reduceDifferentialOrder
| daeFunction