Программа 52. Задача 70.
> | restart; |
Процедура дифференцирования по t любого порядка
> | Dif:=proc(x,i) if i=0 then x else diff(x,t$i) fi end: |
> | with(LinearAlgebra): |
> | with(PDEtools,declare): declare(x(t)): |
Максимальный порядок
> | Nmax:=3: N:=Nmax-2: A:=Matrix(N+1): |
Исcледуемое уравнение
> | eq:=16*diff(x(t),t$2)*sqrt(diff(x(t),t))+b*diff(x(t),t)+x(t)^4; |
Производные уравнения по времени порядка от 0 до N
> | for k from 0 to N do z[k+1]:=Dif(eq,k);od: |
Задаем порядок особой точки и скорость
> | Порядок:={0,3}; v0:=1: |
Порядок искомых производных (для уравнения 2 порядка)
> | SET:={seq(j,j=0..Nmax)} minus Порядок; |
Заполнение матрицы
> | for i to N+1 do |
> | for j to N+1 do |
> | A[i,j]:=subs(xx=Dif(x(t),SET[j]), |
> | diff(subs(Dif(x(t),SET[j])=xx,z[i]),xx)); |
> | od: |
> | od: |
> | A; |
Условие нестабильности
> | Dtr:=Determinant(A); |
Выражение 2-й производной функции из уравнения (необходимо, если в Dtr входит 2-я производная)
> | xtt:=solve(eq,diff(x(t),t$2)); |
> | xttt:=diff(xtt,t); |
Подстановка 2-й и 3-й производной функции в условие нестабильности
> | Dtr1:=simplify(subs(diff(x(t),t$3)=xttt,Dtr)); |
> | Dtr2:=collect(simplify(subs(diff(x(t),t$2)=xtt,Dtr1)),x(t)); |
> | subs(diff(x(t),t)=v0,Dtr2); |
> |
> | _MaxSols:=4; |
> | evalf(solve(subs(diff(x(t),t)=v0,Dtr2),x(t))); |