P54.mws

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

Исследуемое   уравнение

U(x,y)*`will now be displayed as`*U

>    a:=y*(x*y-1):b:=x*(x*y+1):

>    eq:=a*diff(u,x)+b*diff(u,y)+u*y*x;

eq := y*(x*y-1)*U[x]+x*(x*y+1)*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));

eqv[2] := (2*x*y+1)*U[y]+(y^2+x*y)*U[x]+x*(x*y+1)*U[x,y]+y*(x*y-1)*U[x,x]+U*y

eqv[3] := (x*y+x^2)*U[y]+(2*x*y-1)*U[x]+x*(x*y+1)*U[y,y]+y*(x*y-1)*U[x,y]+U*x

Нахождение условия нестабильности

>   

>    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);

x*y

>    A;

Matrix(%id = 151059804)

Условие нестабильности

>    Dtr:=simplify(Determinant(A));

Dtr := -x*y+y^3*x-x^3*y

Выделяем множители

>    factor(Dtr);

-x*y*(1-y^2+x^2)

>    with(plots):

>    implicitplot(Dtr,x=-2..2,y=-4..4,numpoints=3000,thickness=2);

>