Отвлекшись от физики, приведем несколько примеров на составление и решение дифференциальных уравнений первого порядка в аналитическом виде (файл dea):
> dsolve(diff(y(х),х)-а*х=0, y(х));
> dsolve(diff(y(х),х)-y(х)=ехр(-х), y(х));
> dsolve(diff(y(х),х)-y(х)=sin(х)*х, y(х));
> infolevel[dsolve] := 3:
> dsolve(diff(y(x),x)-y(x)=sin(x)*x, y(x));
Methods for first order ODEs:
Trying classification methods —
trying a quadrature
trying 1st order linear
<- 1st order linear successful
Обратив внимание на вывод в последнем примере. Он дан при уровне вывода n=3
Следующие примеры иллюстрируют возможность решения одного и того же дифференциального уравнения ode_L разными методами:
> restart: ode_L := sin(x)*diff(y(x),x)-cos(x)*y(x)=0;
> dsolve(ode_L, [linear], useInt);
> value(%);
y(x) = _C1 sin(x)
> dsolve(od_L, [separable], useInt);
> value(%);
ln(sin(x)) - ln(у(x)) + _C1 = 0
> mu := intfactor(ode_L);
> dsolve(mu*ode_L, [exact], useInt);
y(x) = -_C1 sin(x)
Разумеется, приведенными примерами далеко не исчерпываются возможности аналитического решения дифференциальных уравнений.
7.2.2. Полет тела, брошенного вверх
Из приведенных выше примеров видно, что для задания производной используется ранее рассмотренная функция diff. С помощью символа $ в ней можно задать производную более высокого порядка.
В соответствии со вторым законом Ньютона многие физические явления, связанные с движением объектов, описываются дифференциальными уравнениями второго порядка. Ниже дан пример задания и решения такого уравнения (файл
dem), описывающего движение тела, брошенного вверх на высоте h 0со скоростью v 0при ускорении свободного падения g:
> restart; eq2:=diff(h(t),t$2) = -g;
> dsolve({eq2,h(0)=h[0], D(h)(0)=v[0]},h(t));assign(s2);
Итак, получено общее уравнение для временной зависимости высоты тела h(t). Разумеется, ее можно конкретизировать, например, для случая, когда g=9,8, h 0=10 и v 0=100:
> g:=9.8:
> s2:=dsolve({eq2,h(0)=10,D(h)(0)=100},h(t));assign(s2);
> plot(h(t),t=0..20,color=black);
Зависимость высоты тела от времени h(t) представлена на рис. 7.5. Нетрудно заметить, что высота полета тела вначале растет и достигнув максимума начинает снижаться. Оговоримся, что сопротивление воздуха в данном примере не учитывается, что позволяет считать задачу линейной. Полученное с помощью Maple 9.5 для этого случая решение совпадает с полученным вручную в примере, описанном в разделе 7.1.3.
Рис. 7.5. Зависимость высоты полета тела от времени h(t)
7.2.3. Поведение идеального гармонического осциллятора
Еще одним классическим применением дифференциальных уравнений второго порядка является решение уравнение идеального гармонического осциллятора (файл deio):
> restart:eq3:=diff(y(t),t$2)=-omega^2*y(t);
> dsolve(eq3,y(t));
у(t) = _C1 sin(ω) + _C2 cos(ω)
> s:=dsolve({eq3,y(0)=-1,D(y)(0)=1}, y(t));
> assign(s);omega:=2;
ω := 2
> plot(y(t),t=0..20,color=black);
Читать дальше
Конец ознакомительного отрывка
Купить книгу