Punkty krytyczne układów nieliniowych

Wojciech Domitrz
Równania Różniczkowe Zwyczajne

Potoki hiperboliczne

(d/(dt))x=A·x , gdzie A macierz m×m o stałych współczynnikach. Niech ((R^m), (e^(t·A)) ) potok generowany przez to równanie. Potok jest hiperboliczny jeśli wszystkie wartości własne A mają niezerowe części rzeczywiste.
Twierdzenie.
Jeżeli ((R^m), (e^(t·A)) ) to potok hiperboliczny to (R^m)=(E^s)⊕(E^r), gdzie (E^s), (E^r)są niezmienniczymi podprzestrzeniami liniowymi macierzy A. 
(E^s) jest przestrzenią rozpiętą przez wektory własne odpowiadające wartościon własnym o ujemnej części rzeczywistej.
(E^sr) jest przestrzenią rozpiętą przez wektory własne odpowiadające wartościon własnym o dodatniej części rzeczywistej.
Potok w (E^s)   jest kontrakcją tzn. ∀x∈(E^s) ∃k>o ∃a>0 |(e^(t·A))x |⩽k(e^(-t·a))|x|, 
a potok w (E^r)   jest ekspansją tzn. ∀x∈(E^r) ∃k>o ∃a>0 |(e^(t·A))x |⩾k(e^(t·a))|x| .
Rozkład jest jednoznaczny.

R={{1,-1,1},{1,1,-1},{2,-1,0}}; MatrixForm[R]

eigensystem=Eigensystem[R]

Układ hiperboliczny, bo wszystkie wartości własne mają niezerowe części rzeczywiste.
Jedna wartość własna -1 ma ujemną część rzeczywistą.  Dwie wartości własne 2, 1 mają dodatnie części rzeczywiste. 
Wektor własny odpowiadający wartości własnej -1 to {-1,3,5}. 
Wektor własny odpowiadający wartości własnej 2 to {1,0,1}.
Wektor własny odpowiadający wartości własnej 1 to {1,1,1}.

val=Eigenvalues[R]

vect=Eigenvectors[R]

Podprzestrzenie niezmiennicze

Podprzestrzeń niezmiennicza (E^r)rozpięta przez wektory odpowiadające wartościon własnym 2, 1 (o dodatnich częściach rzeczywistych)

ER=ParametricPlot3D[t*vect[[1]]+s*vect[[3]],{t,-3,3},{s,-3,3},PlotStyle->{Yellow,Opacity[.5]},Mesh->None];

Podprzestrzeń niezmiennicza (E^s)rozpięta przez wektory odpowiadające wartości własnej -1 (o ujemnej części rzeczywistej)

ES=ParametricPlot3D[t*vect[[2]],{t,-1,1},PlotStyle->{Red}];

Show[ER,ES]

X[t_]=Transpose[{Exp[val[[1]]*t]*vect[[1]],Exp[val[[2]]*t]*vect[[2]],Exp[val[[3]]*t]*vect[[3]]}];MatrixForm[X[t]]

Fundam[t_]=X[t].Inverse[X[0]];MatrixForm[Fundam[t]]

Z[t_]=Fundam[t].{C[1],C[2],C[3]}

sol=Flatten[Table[Z[t]/.{C[1]->i,C[2]->j,C[3]->k},{i,-1,1,.5},{j,-1,1,.5},{k,-1,1,.5}],2];

psol=ParametricPlot3D[sol,{t,-1,1}]

pic1=Show[psol,ER,ES]

R={{2,5,1},{-4,-2,1},{0,0,-4}}; MatrixForm[R]

Eigenvalues[R]

Układ nie jest hiperboliczny, bo wartości własne 4i oraz -4i mają zerowe częci rzeczywiste.

Topologiczna równoważność

Definicja.

Dwa potoki (M, (Subscript[g, 1]^t)) i  (M, (Subscript[g, 2]^t)) są topologicznie równoważne jeżeli istnieje homeomorfizm h:M→M taki, że dla każdego t zachodzi h∘(Subscript[g, 1]^t)=(Subscript[g, 2]^t)∘h.
Homeomorfizm to przekształcenie ciągłe, które posiada ciągłe przekształcenie odwrotne.

Twierdzenie.

Dwa potoki hiperboliczne na taj samej przestrzeni fazowej są topologicznie równoważne, jeśli liczby wartości własnych o dodatnich i ujemnych wartościach własnych są takie same.

B={{-3,0,0},{0,2,-1},{0,1,2}}; MatrixForm[R]

eigensystem=Eigensystem[B]

Układ hiperboliczny, bo wszystkie wartości własne mają niezerowe części rzeczywiste.
Jedna wartość własna -3 ma ujemną część rzeczywistą.  Dwie wartości własne 2+i, 2-i mają dodatnie części rzeczywiste (równe 2). 
Wektor własny odpowiadający wartości własnej -3 to {1,0,0}. 
Wektor własny odpowiadający wartości własnej 2+i to {0,i,1}.
Wektor własny odpowiadający wartości własnej 2-i to {0,-i,1}.

vectBc=Eigenvectors[B]

vectBr={vectBc[[1]],Re[vectBc[[2]]],Im[vectBc[[2]]]}

Podprzestrzenie niezmiennicze

ERB=ParametricPlot3D[t*vectBr[[2]]+s*vectBr[[3]],{t,-3,3},{s,-3,3},PlotStyle->{Yellow,Opacity[.5]},Mesh->None];

ESB=ParametricPlot3D[t*vectBr[[1]],{t,-3,3},PlotStyle->{Red}];

Show[ERB,ESB]

FundamB[t_]=MatrixExp[t*B]

ZB[t_]=FundamB[t].{C[1],C[2],C[3]}

solB=Flatten[Table[ZB[t]/.{C[1]->i,C[2]->j,C[3]->k},{i,-1,1,.5},{j,-1,1,.5},{k,-1,1,.5}],2];

psolB=ParametricPlot3D[solB,{t,-1,1}]

picB=Show[psolB,ERB,ESB]

Układy topologicznie równoważne. Oba hiperboliczne i liczby warości własnych o dodatnich i ujemnych częciach rzeczywistych w obu układach są takie same.

pic1

picB

Linearyzacja

Definicja.

Linearyzacją układu autonomicznego (d/(dt))x=f(x) w otoczeniu punktu krytycznego (Subscript[x, 0]) nazywamy układ liniowy o stałych współczynnikach (d/(dt))x=A(x-(Subscript[x, 0])) taki, że f(x)=A(x-(Subscript[x, 0]))+g(x), 
gdzie (lim_(x→(Subscript[x, 0]))) ((| g(x)|)/(| x-(Subscript[x, 0])|))=0.
Punkt krytyczny układu autonomicznego jest prosty, jeśli po linearyzacji otrzymujemy układ prosty (det A≠0). Punkt krytyczny nazywa się hiperbolicznym jeśli po linearyzacji układ generuje potok hiperboliczny.

Twierdzenie (Grobmana-Hartmana)

Jeśli x=0 jest punktem hiperbolicznym układu (d/(dt))x=A x +g(x), gdzie g(x) jest klasy (C^1) w otoczeniu 0, g(0)=0 oraz  (lim_(x→0)) ((| g(x)|)/(| x|))=0 to układ jest topologicznie równoważny swojej linearyzacji (d/(dt))x=A x.

Definicja

Niech punkt (Subscript[x, 0])∈(R^2) będzie punktem krytycznym nieliniowego układu autonomicznego na płaszczyźnie. 

Jeśli (lim_(t→+∞))x(t)=(Subscript[x, 0]) dla każdego rozwiązania x(t) i istnieje wektor styczny do x(t) w (Subscript[x, 0]) (czyli istnieje (lim_(t→+∞))(d/(dt))x(t)/|(d/(dt))x(t)| ) to punkt (Subscript[x, 0]) nazywamy węzłem stabilnym.
Jeśli (lim_(t→-∞))x(t)=(Subscript[x, 0]) dla każdego rozwiązania x(t) i istnieje wektor styczny do x(t) w (Subscript[x, 0]) to punkt (Subscript[x, 0]) nazywamy węzłem niestabilnym.

Jeśli (lim_(t→+∞))x(t)=(Subscript[x, 0]) dla każdego rozwiązania x(t) i nie istnieje wektor styczny do x(t) w (Subscript[x, 0]) to punkt (Subscript[x, 0]) nazywamy ogniskiem stabilnym.
Jeśli (lim_(t→-∞))x(t)=(Subscript[x, 0]) dla każdego rozwiązania x(t) i nie istnieje wektor styczny do x(t) w (Subscript[x, 0]) to punkt (Subscript[x, 0]) nazywamy ogniskiem niestabilnym.

Jeśli (lim_(t→+∞))x(t)=(Subscript[x, 0]) dla pewnych rozwiązań x(t) i (lim_(t→-∞))x(t)=(Subscript[x, 0]) dla pewnych rozwiązań x(t)  to punkt (Subscript[x, 0]) nazywamy siodłem.

Jeśli wszystkie trajektorie x(t) w dostatecznie małym otoczeniu (Subscript[x, 0]) są zamkniętymi krzywymi to punkt (Subscript[x, 0]) nazywamy środkiem.

Twierdzenie

Niech (0,0) będzie punktem hiperbolicznym układu (d/(dt))x=A x +g(x) na płaszczyźnie, gdzie g(x) jest klasy (C^1) w otoczeniu 0, g(0)=0 oraz  (lim_(x→(0,0))) ((| g(x)|)/(((| x|))^(1+ϵ)))=0 dla pewnego ϵ>0. 
Jeśli (0,0) jest węzłem, ogniskiem lub siodłem dla linearyzacji (d/(dt))x=A x to jest również węzłem, ogniskiem lub siodłem (odpowiednio)  układu przed linearyzacją.

f[x1_,x2_]={x1+4x2+Exp[x1]-1,-x2-x2*Exp[x1]}

p1=StreamPlot[f[x1,x2],{x1,-2,2},{x2,-2,2}]

Jf[x1_,x2_]=Transpose[{D[f[x1,x2],x1],D[f[x1,x2],x2]}]
p2=StreamPlot[Jf[0,0].{x1,x2},{x1,-2,2},{x2,-2,2},StreamColorFunction->Hue]

Show[p1,p2]

g[x1_,x2_]={2*x1+x1^2,-x2-x2*x1}

p1=StreamPlot[g[x1,x2],{x1,-4,4},{x2,-4,4}]

crit=Solve[g[x1,x2]=={0,0},{x1,x2}]

Jg[x1_,x2_]=Transpose[{D[g[x1,x2],x1],D[g[x1,x2],x2]}] ; MatrixForm[Jg[x1,x2]]

Eigensystem[Jg[crit[[1,1,2]],crit[[1,2,2]]]]
p2=StreamPlot[Jg[crit[[1,1,2]],crit[[1,2,2]]].{x1-crit[[1,1,2]],x2-crit[[1,2,2]]},{x1,crit[[1,1,2]]-1,crit[[1,1,2]]+1},{x2,crit[[1,2,2]]-1,crit[[1,2,2]]+1},StreamColorFunction->Hue]

Eigensystem[Jg[crit[[2,1,2]],crit[[2,2,2]]]]
p2=StreamPlot[Jg[crit[[2,1,2]],crit[[2,2,2]]].{x1-crit[[2,1,2]],x2-crit[[2,2,2]]},{x1,crit[[2,1,2]]-1,crit[[2,1,2]]+1},{x2,crit[[2,2,2]]-1,crit[[2,2,2]]+1},StreamColorFunction->Hue]

Wahadło z tarciem.

h[x1_,x2_]={x2,-Sin[x1]-.5x2}

StreamPlot[h[x1,x2],{x1,-10,10},{x2,-5,5}]

Jh[x1_,x2_]=Transpose[{D[h[x1,x2],x1],D[h[x1,x2],x2]}] ; MatrixForm[Jh[x1,x2]]

MatrixForm[Jh[0,0]]

Eigensystem[Jh[0,0]]

StreamPlot[Jh[0,0].{x1,x2},{x1,-1,1},{x2,-1,1}]

MatrixForm[Jh[Pi,0]]

Eigensystem[Jh[Pi,0]]

StreamPlot[Jh[Pi,0].{x1,x2},{x1,-1,1},{x2,-1,1}]

ph[n_]:=StreamPlot[h[x1,x2],{x1,n*Pi-1,n*Pi+1},{x2,-1,1}]

ph[0]

ph[1]

ph[-1]

ph[2]

StreamPlot[h[x1,x2],{x1,-4,1},{x2,-1,4}]

Wahadło bez tarcia.

h[x1_,x2_]={x2,-Sin[x1]}

StreamPlot[h[x1,x2],{x1,-8,8},{x2,-4,4},AspectRatio->1/2]

Jh[x1_,x2_]=Transpose[{D[h[x1,x2],x1],D[h[x1,x2],x2]}] ; MatrixForm[Jh[x1,x2]]

MatrixForm[Jh[0,0]]

Eigensystem[Jh[0,0]]

StreamPlot[Jh[0,0].{x1,x2},{x1,-1,1},{x2,-1,1}]

MatrixForm[Jh[Pi,0]]

Eigensystem[Jh[Pi,0]]

StreamPlot[Jh[Pi,0].{x1,x2},{x1,-1,1},{x2,-1,1}]

ph[n_]:=StreamPlot[h[x1,x2],{x1,n*Pi-1,n*Pi+1},{x2,-1,1}]

ph[0]

ph[1]

ph[-1]

ph[2]

StreamPlot[h[x1,x2],{x1,-4,1},{x2,-1,4}]