Программа 53. Задача 71. Определение условия нестабильности системы 2 уравнений
restart;
Процедура дифференцирования по t любого порядка
> | Dif:=proc(x,i) if i=0 then x else diff(x,t$i) fi end: |
> | with(LinearAlgebra): x1:=X(t): x2:=Y(t): |
> | with(PDEtools,declare): declare(x1,x2): |
Исследуемая система уравнения
> | eq[1]:=diff(x1,t$2)*(x1^2+3*x2)+2*x1*x2+diff(x1,t)*(2*x1+3*x2); |
> | eq[2]:=diff(x1,t$2)*x1+7*diff(x2,t$2)*x1+4*x1+3*x2; |
Выражение ускорений из системы уравнений
> | EQ:=subs(diff(x1,t$2)=xtt,diff(x2,t$2)=ytt,{eq[1],eq[2]}): |
> | assign(solve(EQ,{xtt,ytt})); |
Процедура нахождения условия нестабильности с подстановкой ускорений(xtt,ytt) из уравнений движения
> | NC:=proc(M) local i,j,Dtr;global A; |
> | A:=Matrix(2): |
> | for i to 2 do |
> | for j to 2 do |
> | A[i,j]:=subs(xx=Dif(x||j,M),diff(subs(Dif(x||j,M)=xx,eq[i]),xx)); |
> | od: |
> | od: |
Dtr:=simplify(Determinant(A));
collect(numer(simplify(subs({diff(x1,t$2)=xtt,diff(x2,t$2)=ytt},Dtr))),X(t));
> | end proc: |
Условие нестабильности с учетом значений скоростей
> | U0:=subs(diff(x1,t)=1,diff(x2,t)=0,NC(0)); |
> | A; # Матрица исследуемой системы |
> | with(plots): |
> | W0:=subs(x1=X1,x2=Y1,U0): |
> | implicitplot(W0,X1=-1..1,Y1=-1..1,numpoints=2000); |
> | solve(W0,Y1); |
> |