10 . DSOLVE Решение ОДУ и их систем . Функция r =dsolve(‘eg1’,’eg2’,…,’cond1’,’cond2’,…,’v’)вычисляет решение обыкновенных дифференциальных уравнений eg1,eg2,…относительно независимой переменной v с граничными или начальными условиями, определяемыми переменными cond1, cond2,...По умолчанию в качестве независимой переменной принимается t. Символ D , за которым следует цифра, означает повторное дифференцирование , т.е. D соответствует d/dt, а D2 соответствует d2/dt2 и т.д. . Символ, за оператором дифференцированья это зависимая переменная, например D3y означает d3y/dt3. Имя зависимой переменной не должно быть буквой D. Граничные или начальные условия задаются уравнениями вида y(a)=b,Dy(a)=b, где у зависимая переменная, a и b константы. Если количество условий меньше количества переменных, то решение включает произвольные константы C1,C2,…
Каждое уравнение или условие можно записать в виде отдельного аргумента, но не более 12 .Если не указаны входные аргументы, dsolve возвращает список решений. Если решение не найдено, dsolve возвращает предупреждение:
Warning: explicit solution could not be found and return an empty sym object.
(символьное решение не найдено, выход – пустая символьная переменная- [empty sym] ).
В этом случае для отыскания численного решения следует воспользоваться функциями ode23(не жесткие ОДУ, метод низкого порядка) или ode45 (не жесткие ОДУ, метод 4-го порядка)
Функция в форме r = dsolve (‘eg1,eg2,… ‘,’cond1,cond2,…’,’v’) позволяет объединить несколько уравнений или условий в один аргумент. Результаты вычислений выдаются тремя способами: для одного уравнения и одного аргумента решение выдается в виде массива ячеек; для систем уравнений с числом аргументов, равному числу переменных, решения выдается в алфавитном порядке по именам переменных; для систем уравнений с одним аргументом решение выдается в виде массива записей.
Примеры:
» dsolve ('Dx = -a*x')
ans =
C1*exp(-a*t)
» x = dsolve ('Dx = -a*x','x (0) = 1','s')
x =
exp (-a*s)
» y = dsolve ('(Dy)^2+y^2 = 1','y(0) = 0')
y =
[ sin (t)]
[ - sin (t)] » S = dsolve ('Df = f+g','Dg = -f+g','f(0) = 1',’g (0) = 2')
S =
f: [1x1 sym ]
g: [1x1 sym ]
» S.f
ans =
exp (t)*(cos (t)+2*sin(t))
» S.g
ans =
-exp(t)*(sin(t)-2*cos(t)
dsolve('Df = f+sin(t)','f(pi/2) =0')
ans =
-1/2*cos(t)-1/2*sin(t)+1/2*exp(t)/(cosh(1/2*pi)+sinh(1/2*pi))
Решение ОДУ с граничными условиями:
» dsolve('D2y = -a^2*y','y(0) = 1,Dy(pi/a) = 0')
ans =
cos(a*t)
Решение систем ОДУ:
S =dsolve('Dx = y','Dy = -x','y(0) = 1')
S =
x: [1x1 sym]
y: [1x1 sym]
» S.x
ans =
-cos(t)*C1+sin(t)
» S.y
ans
-sin(t)*C1+cos(t)
S = dsolve('Du=v,Dv=w,Dw=-u','u(0)=0,v(0)=0,w(0)=1')
S =
u: [1x1 sym]
v: [1x1 sym]
w: [1x1 sym]
» S.u
ans =
1/3*3^(1/2)*exp(1/2*t)*sin(1/2*t*3^(1/2))-1/3*exp(1/2*t)*cos(1/2*t*3^(1/2))+1/3*exp(-t
» S.v
ans =
1/3*exp(1/2*t)*cos(1/2*t*3^(1/2))+1/3*3^(1/2)*exp(1/2*t)*sin(1/2*t*3^(1/2))-1/3*exp(-
» S.w
ans =
1/3*exp(-t)+2/3*exp(1/2*t)*cos(1/2*t*3^(1/2))
» w = dsolve('D3w = -w','w(0) = 1,Dw(0) = 0,D2w(0) = 0')
w = (1/3*exp(-t)+2/3*exp(1/2*t)*cos(1/2*t*3^(1/2))
f = dsolve('Df = f+sin(t)')
f= -1/2*cos(t)-1/2*sin(t)+exp(t)*C1
» y =dsolve('(Dy)^2+y^2 = 1','s')
y =
[ -1]
[ 1]
[ sin(s-C1)]
[ -sin(s-C1)]
y = dsolve('Dy = a*y','y(0) = b')
y =
b*exp(a*t)
» [x,y] = dsolve('Dx = y','Dy = -x')
x =
cos(t)*C1+sin(t)*C2
y =
-sin (t)*C1+cos(t)*C2
|