Программа 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); |
| > |