Chap9.mw

Maple Text Commands for Chapter 9 -  

LOCAL AND GLOBAL BIFURCATIONS 

Section 9.1: Computation of focal values for a Lienard system. 

> restart:kstart:=2:kend:=11:
pp:=array(1..20):qq:=array(1..20):vv:=array(1..20):vx:=array(0..20):
vy:=array(0..20):xx:=array(0..20,0..20):
yy:=array(0..20,0..20):uu:=array(0..20,0..20):
z:=array(0..20):ETA:=array(1..20):
pp[1]:=y:qq[1]:=-x:vv[2]:=(x^2+y^2)/2:vx[2]:=x:vy[2]:=y:
for j1 from 0 to 20 do
for j2 from 0 to 20 do
xx[j1,j2]:=0:yy[j1,j2]:=0:end do:end do:
# Insert the coefficients for a specific Lienard system #
xx[0,1]:=1:xx[2,0]:=-a2:xx[3,0]:=-a3:xx[4,0]:=-a4:
yy[1,0]:=-1:yy[2,0]:=-b2:yy[3,0]:=-b3:
for kloop from kstart to kend do
kk:=kloop:
dd1:=sum(pp[i]*vx[kk+2-i]+qq[i]*vy[kk+2-i],i=2..kk-1):
pp[kk]:=sum(xx[kk-i,i]*x^(kk-i)*y^i,i=0..kk):
qq[kk]:=sum(yy[kk-i,i]*x^(kk-i)*y^i,i=0..kk):
vv[kk+1]:=sum(uu[kk+1,i]*x^(kk+1-i)*y^i,i=0..kk+1):
d1:=y*diff(vv[kk+1],x)-x*diff(vv[kk+1],y)+pp[kk]*vx[2]+qq[kk]*vy[2]+dd1:
dd:=expand(d1):
if irem(kk,2)=1 then dd:=dd-ETA[kk+1]*(x^2+y^2)^((kk+1)/2): fi:
dd:=numer(dd):x:=1:  for i from 0 to kk+1 do z[i]:=coeff(dd,y,i); od:
if kk=2 then
seqn:=solve({z[0],z[1],z[2],z[3]},{uu[3,0],uu[3,1],uu[3,2],uu[3,3]}):
elif kk=3 then
seqn:=solve({z[0],z[1],z[2],uu[4,2],z[3],z[4]},{uu[4,0],uu[4,1],uu[4,2
],uu[4,3],uu[4,4],ETA[4]}):
elif kk=4 then
seqn:=solve({z[0],z[1],z[2],z[3],z[4],z[5]},{uu[5,0],uu[5,1],uu[5,2],uu[5,3],uu[5,4],uu[5,5]}):
elif kk=5 then
seqn:=solve({z[0],z[1],z[2],uu[6,2]+uu[6,4],z[3],z[4],z[5],z[6]},{uu[6
,0],uu[6,1],uu[6,2],uu[6,3],uu[6,4],uu[6,5],uu[6,6],ETA[6]}):
elif kk=6 then
seqn:=solve({z[0],z[1],z[2],z[3],z[4],z[5],z[6],z[7]},{uu[7,0],uu[7,1],uu[7,2],uu[7,3],uu[7,4],uu[7,5],uu[7,6],uu[7,7]}):
elif kk=7 then
seqn:=solve({z[0],z[1],z[2],z[3],z[4],uu[8,4],z[5],z[6],z[7],z[8]},{uu[8
,0],uu[8,1],uu[8,2],uu[8,3],uu[8,4],uu[8,5],uu[8,6],uu[8,7],uu[8,8],ETA[8]}):
elif kk=8 then
seqn:=solve({z[0],z[1],z[2],z[3],z[4],z[5],z[6],z[7],z[8],z[9]},{uu[9,0],uu[9,1],uu[9,2],uu[9,3],uu[9,4],uu[9,5],uu[9,6],uu[9,7],uu[9,8],uu[9,9]}):
elif kk=9 then
seqn:=solve({z[0],z[1],z[2],z[3],z[4],uu[10,4]+uu[10,6],z[5],z[6],z[7],z[8],z[9],z[10]},{uu[10,0],uu[10,1],uu[10,2],uu[10,3],uu[10,4],uu[10,5],uu[10,6],uu[10,7],uu[10,8],uu[10,9],uu[10,10],ETA[10]}):
elif kk=10 then
seqn:=solve({z[0],z[1],z[2],z[3],z[4],z[5],z[6],z[7],z[8],z[9],z[10],z[11]},{uu[11,0],uu[11,1],uu[11,2],uu[11,3],uu[11,4],uu[11,5],uu[11,6],uu[11,7],uu[11,8],uu[11,9],uu[11,10],uu[11,11]}):
elif kk=11 then
seqn:=solve({z[0],z[1],z[2],z[3],z[4],z[5],z[6],uu[12,6],z[7],z[8],z[9],z[10],z[11],z[12]},{uu[12,0],uu[12,1],uu[12,2],uu[12,3],uu[12,4],uu[12,5],uu[12,6],uu[12,7],uu[12,8],uu[12,9],uu[12,10],uu[12,11],uu[12,12],ETA[12]}):fi:
 

> assign(seqn):x:='x':i:='i':
vv[kk+1]:=sum(uu[kk+1,i]*x^(kk+1-i)*y^i,i=0..kk+1):
vx[kk+1]:=diff(vv[kk+1],x):vy[kk+1]:=diff(vv[kk+1],y):
ETA[kk+1]:=ETA[kk+1]:od:
print(L1=numer(ETA[4])):a3:=2*a2*b2/3:print(L2=numer(ETA[6]));
print(L3=numer(ETA[8]));print(L4=numer(ETA[10]));print(L5=numer(ETA[12]));
 

 

 

 

 








(1)
 

> with(Groebner):
 

Example 4: Division algorithm for multivariate polynomials. Fix a pure lexicographical order `and`(`≻`(x, y), `≻`(y, z)), divide the polynomial p = `+`(`*`(`^`(x, 4)), `*`(`^`(y, 4)), `*`(`^`(z, 4)))by the ordered list of polynomials{`+`(y, `-`(`*`(`^`(z, 2)))), `+`(`*`(`^`(x, 2)), y), `+`(`*`(`^`(z, 2), `*`(y)), `-`(1))}and 

 

> Reduce(x^4+y^4+z^4,[x^2+y,z^2*y-1,y-z^2],plex(x,y,z));
 

`+`(2, `*`(`^`(z, 4))) (2)
 

> Reduce(x^4+y^4+z^4,[y-z^2,z^2*y-1,x^2+y],plex(x,y,z));
 

`+`(`*`(2, `*`(`^`(z, 4))), `*`(`^`(z, 8))) (3)
 

Example 5: S-polynomials. Fix a pure lexicographical order `and`(`≻`(x, y), `≻`(y, z)), suppose that determine  

> SPolynomial(x-13*y^2-12*z^3,x^2-x*y+92*z,plex(x,y,z));
 

`+`(`-`(`*`(13, `*`(x, `*`(`^`(y, 2))))), `-`(`*`(12, `*`(x, `*`(`^`(z, 3))))), `*`(x, `*`(y)), `-`(`*`(92, `*`(z)))) (4)
 

Example 6: Compute the reduced Groebner basis of `<,>`(`+`(x, `*`(`^`(y, 2)), `-`(`*`(`^`(x, 3)))), `+`(`*`(4, `*`(`^`(x, 3))), `-`(`*`(12, `*`(`^`(xy, 2)))), `*`(`^`(x, 4)), `*`(2, `*`(`^`(x, 2), `*`(`^`(y, 2)))), `*`(`^`(y, 4))))  with respect to  

the pure lexicographical order `and`(`≻`(x, y), `≻`(y, z)). 

> GB=Basis([x+y^2-x^3,4*x^3-12*x*y^2+x^4+2*x^2*y^2+y^4],plex(x,y,z));
 

GB = [`+`(`-`(`*`(195, `*`(`^`(y, 4)))), `*`(1278, `*`(`^`(y, 6))), `-`(`*`(1037, `*`(`^`(y, 8)))), `*`(90, `*`(`^`(y, 10))), `*`(`^`(y, 12))), `+`(`*`(5970075, `*`(`^`(y, 2))), `*`(163845838, `*`(`^`...
GB = [`+`(`-`(`*`(195, `*`(`^`(y, 4)))), `*`(1278, `*`(`^`(y, 6))), `-`(`*`(1037, `*`(`^`(y, 8)))), `*`(90, `*`(`^`(y, 10))), `*`(`^`(y, 12))), `+`(`*`(5970075, `*`(`^`(y, 2))), `*`(163845838, `*`(`^`...
(5)
 

Example 7: Compute the Groebner basis of the first five Lyapunov quantities for a Lienard system. 

> restart:with(Groebner):
 

> GB:=Basis([-a1,2*a2*b2-3*a3,5*b2*(2*a4-b3*a2),-5*b2*(92*b2^2*a4-99*b3^2*a2+1520*a2^2*a4-760*a2^3*b3-46*b2^2*b3*a2+198*b3*a4),-b2*(14546*b2^4*a4+105639*a2^3*b3^2+96664*a2^3*b2^2*b3-193328*a2^2*b2^2*a4-891034*a2^4*a4+445517*a2^5*b3+211632*a2*a4^2-317094*a2^2*b3*a4-44190*b2^2*b3*a4+22095*b2^2*b3^2*a2-7273*b2^4*b3*a2+5319*b3^3*a2-10638*b3^2*a4)],plex(a1,a2,a3,a4,b2,b3));
 

[`+`(`*`(3, `*`(a3, `*`(b3))), `-`(`*`(4, `*`(b2, `*`(a4))))), `+`(`*`(2, `*`(a2, `*`(b2))), `-`(`*`(3, `*`(a3)))), a1] (6)
 

Figure 9.1: Global bifurcation of a limit cycle for  

> with(plots):with(DEtools):
deq1:=diff(x(t),t)=y(t)+10*x(t)*(0.1-(y(t))^2):
deq2:=diff(y(t),t)=-x(t)+C:
bifdeq1:=(parameter)->subs(C=parameter,deq1):
bifdeq2:=(parameter)->subs(C=parameter,deq2):
Homoclinic:=seq(DEplot({bifdeq1('i/100-0.3'),bifdeq2('i/100-0.3')},[x(t),y(t)],0..100,[[x(0)=0.1,y(0)=0]],y=-1.5..1.5,x=-1.5..1.5,arrows=NONE,stepsize=0.1,linecolour=blue),i=0..100):
Homoclinic:=subs(THICKNESS(3)=THICKNESS(0),[Homoclinic]):
display(Homoclinic,insequence=true);
 

Plot_2d
 

Example 10: A homoclinic bifurcation for  

> restart:with(plots):with(DEtools):
deq1:=diff(x(t),t)=y(t):
deq2:=diff(y(t),t)=x(t)+(x(t))^2-x(t)*y(t)+lambda*y(t):
bifdeq1:=(parameter)->subs(lambda=parameter,deq1):
bifdeq2:=(parameter)->subs(lambda=parameter,deq2):
Homoclinic:=seq(DEplot({bifdeq1('i/80-1.5'),bifdeq2('i/80-1.5')},[x(t),y(t)],0..80,[[x(0)=-0.4,y(0)=0]],y=-1..1,x=-2..0,arrows=NONE,stepsize=0.1,linecolour=blue),i=0..80):
Homoclinic:=subs(THICKNESS(3)=THICKNESS(0),[Homoclinic]):
display(Homoclinic,insequence=true);
 

Plot_2d
 

End of Chapter 9 Commands