%%html
<style type="text/css">
input.good:checked + label {color: green}
input.bad:checked + label {color: red}
input.good:checked + label::after {color: green; content: ' Õige vastus!'}
input.bad:checked + label::after {color: red; content: ' Vale vastus!'}
</style>
See tööleht näitab, kuidas ja millisel juhul saab uurida mittelineaarse süsteemi püsipunktide stabiilsust lineariseermise abil.
Kui on antud üldine (mittelineaarne) n-mõõtmeline dünaamiline süsteem $\underline{\dot{x}} = f(\underline{x})$, see tähendab funktsioonid
\begin{eqnarray} \dot{x}_1 &=& f_1(x_1, \ldots, x_n)\\ \vdots &=& \vdots\\ \dot{x}_n &=& f_n(x_1, \ldots, x_n) \end{eqnarray}ja püsipunkt $\underline{x}_*$, kus kehtib $f(\underline{x}_*) = (0, \ldots, 0)$, siis saab püsipunkti stabiilsust uurida lineariseermise abil. Selleks vaatame funktsiooni $f$ Taylori arengut püsipunkti ümbruses:
$$\begin{split} \dot{x}_i &= f_i(\underline{x})\\ &= \underbrace{f_i(\underline{x}_*)}_{= 0} + \sum_{j = 1}^{n}\left.\frac{\partial f_i}{\partial x_j}\right|_{\underline{x}_*}(x_j - x_{*j}) + \ldots\\ &= \left[\underline{\underline{J}}(\underline{x}_*) \cdot (\underline{x} - \underline{x}_*)\right]_i + \ldots \end{split}$$Maatriks $\underline{\underline{J}}(\underline{x}_*) = \left(\left.\frac{\partial f_i}{\partial x_j}\right|_{\underline{x}_*}\right)_{ij}$ on Jacobi maatriks. Süsteem, millest on kõik liikmed peale lineaarse liikme ära jäetud, on lineariseeritud süsteem püsipunkti ümbruses. Seost mittelineaarse ja lineariseeritud süsteemi vahel kirjeldab Hartman-Grobmani teoreem.
Mittelineaarse süsteemi püsipunktide uurida aitab Hartman-Grobmani teoreem:
Kui on antud üldine (mittelineaarne) $N$-mõõtmeline dünaamiline süsteem $\underline{\dot{x}} = f(\underline{x})$ ja hüperboolne püsipunkt $\underline{x}_*$ (see tähendab, et kõikide Jacobi maatriksi $\underline{\underline{J}}$ omaväärtuste reaalosad on nullist erinevad), siis on olemas püsipunkti ümbrus $U \ni \underline{x}_*$, hulk $V \subset \mathbb{R}^n$ ja homöomorfism $\phi: U \to V$, niiet kehtib
kui $\underline{x} \in U$.
Hartman-Grobmani teoreemist järeldub, et hüperboolse püsipunkti stabiilsust määrab ainult Jacobi maatriks selles punktis, täpsemalt tema omaväärstuste reaalosad.
Kui Jacobi maatriksil on ka omaväärtus, mille reaalosa on null (ehk püsipunkt ei ole hüperboolne), siis tuleb ka kõrgemaid liikmeid Taylori arengust arvesse võtta, ja ainult Jacobi maatriksist ei piisa.
Me rakendame üleval selgitatud teooriat praktilisele näitele. Sümboolseks arvutamiseks kasutame SymPy, numbriliseks arvutamiseks NumPy ja joonistamiseks PyPlot.
%matplotlib inline
import matplotlib.pyplot as plt
import numpy as np
import sympy as sp
from sympy.interactive.printing import init_printing
init_printing(use_unicode=True)
Kõigepealt defineerime oma dünaamilist süsteemi. Siin valime kahemõõtmelist süsteemi, mille faasiruum on $Q = \mathbb{R}^2$, ja muutujad tähistame $x$ ja $y$-ga. Dünaamikaks valime
$$f(x, y) = \begin{pmatrix} (x - 1)(x + 1)\\ xy \end{pmatrix}.$$x, y = sp.symbols('x y', real=True)
f = sp.Matrix([(x + 1) * (x - 1), x * y])
f
Järgmisena joonistame faasiportreet. Selleks konverteerime funktsiooni NumPy funktsioonideks, et neid oleks lihtsam joonistada.
fx, fy = [sp.lambdify((x, y), ff, 'numpy') for ff in f]
Joonistamiseks kasutame quiver ja streamplot.
fig = plt.figure()
ax = fig.add_subplot(111)
ax.set_aspect('equal', 'box')
ax.set_xlabel('x')
ax.set_ylabel('y')
X = np.linspace(-1.9, 1.9, 101)
Y = np.linspace(-1.9, 1.9, 101)
XX, YY = np.meshgrid(X, Y)
DX = fx(XX, YY)
DY = fy(XX, YY)
ax.streamplot(XX, YY, DX, DY, color='b')
X = np.linspace(-1.8, 1.8, 21)
Y = np.linspace(-1.8, 1.8, 21)
XX, YY = np.meshgrid(X, Y)
DX = fx(XX, YY)
DY = fy(XX, YY)
ax.quiver(XX, YY, DX, DY, color='r')
plt.show()
Püsipunktide leidmiseks lahendame süsteemi $f(x_*, y_*) = 0$. Esimene tingimus $(x_* - 1)(x_* + 1) = 0$ näitab, et $x_*$ peab olema kas $x_* = 1$ või $x_* = -1$. Teisest tingimusest siis järeldub et $y_* = 0$. Seega on püsipunktid (1, 0) ja (-1, 0).
fp1 = [(x, 1), (y, 0)]
fp2 = [(x, -1), (y, 0)]
Kontrollime, et püsipunktides tõepoolest kehtib $f(x_*, y_*) = 0$.
f.subs(fp1)
f.subs(fp2)
Lõpuks arvutame Jacobi maatriksi teatud valemi järgi.
J = f.jacobian([x, y])
J
Esimese püsipunkti juures on Jordani maatriks selline.
J1 = J.subs(fp1)
J1
Omaväärtused on positiivsed, nende kordsus on 1.
J1.eigenvals()
Tulemus näitab, et püsipunkt $(x_*, y_*) = (1, 0)$ on ebastabiilne sõlm.
Teise püsipunkti juures on Jordani maatriks selline.
J2 = J.subs(fp2)
J2
Omaväärtused on negatiivsed, nende kordsus on 1.
J2.eigenvals()
Tulemus näitab, et püsipunkt $(x_*, y_*) = (-1, 0)$ on stabiilne sõlm.
Uurige süsteemi $(x, y) \in Q = \mathbb{R}^2$, mille dünaamika on
$$\begin{pmatrix} \dot{x}\\ \dot{y} \end{pmatrix} = \begin{pmatrix} x^2 - y^2\\ x^2 + y^2 - 1 \end{pmatrix}.$$Mitu sadulat on süsteemil?
Kus asub süsteemi atraktor?
Kus asub süsteemi repeller?