Программа 54. Задача 72. Определение кривых нестабильности уравнения в частных производных
> | restart; |
Процедура дифференцирования по t любого порядка
> | Dif:=proc(u,i,x) if i=0 then u else diff(u,x$i) fi end: |
> | with(LinearAlgebra): u:=U(x,y): |
> | with(PDEtools,declare): declare(u): |
Исследуемое уравнение
> | a:=y*(x*y-1):b:=x*(x*y+1): |
> | eq:=a*diff(u,x)+b*diff(u,y)+u*y*x; |
> | eqv[1]:=eq: |
> | coll:=proc(F)#Процедура упрощений |
> | collect(collect(F,diff(u,x)),diff(u,y)): |
> | end proc: |
> | eqv[2]:=coll(diff(eq,x)); |
> | eqv[3]:=coll(diff(eq,y)); |
Нахождение условия нестабильности
> |
> | A:=Matrix(3): |
> | sbs:=proc(i,n,z) #Процедура варьирования |
> | subs(xx=Dif(u,n,z),diff(subs(Dif(u,n,z)=xx,eqv[i]),xx)) |
> | end proc: |
> | for i to 3 do |
> | A[i,1]:=sbs(i,0,x); |
> | A[i,2]:=sbs(i,1,x); |
> | A[i,3]:=sbs(i,1,y); |
> | od: |
Условие нестабильности
> | sbs(1,0,x); |
> | A; |
Условие нестабильности
> | Dtr:=simplify(Determinant(A)); |
Выделяем множители
> | factor(Dtr); |
> | with(plots): |
> | implicitplot(Dtr,x=-2..2,y=-4..4,numpoints=3000,thickness=2); |
> |