[PYTHON] Führe numerische Berechnungen mit Phython durch, während du nichtlineare Dynamik und Chaos lernst [1]

Inhalt dieser Serie

Dieser Artikel ist von Steven H. Strogatz ["Strogats nichtlineare Dynamik und Chaos"](https://www.amazon.co.jp/%E3%82%B9%E3%83%88%E3%83%AD% E3% 82% AC% E3% 83% 83% E3% 83% 84-% E9% 9D% 9E% E7% B7% 9A% E5% BD% A2% E3% 83% 80% E3% 82% A4% E3 % 83% 8A% E3% 83% 9F% E3% 82% AF% E3% 82% B9% E3% 81% A8% E3% 82% AB% E3% 82% AA% E3% 82% B9-Steven-H -Eine Zusammenfassung der nichtlinearen Dynamik und des Chaos, die basierend auf Strogatz / dp / 4621085808) und Implementierungscode mit Python erstellt wurden. Um eine kurze Selbsteinführung zu geben, der Autor dieses Artikels ist ein Maschinenbaustudent an einer örtlichen nationalen Universität, und die Mathematik, die in diesem Artikel erscheint, ist im Grunde ein Selbststudium. (Ich mache mir also Sorgen um die Genauigkeit.) Ich denke, es ist besser, es als Memorandum zu betrachten, dass ein Amateur die Gleichungen, die in diesem Buch erscheinen, implementiert, während er alleine denkt. Wir planen, den Inhalt anderer Kapitel nacheinander hinzuzufügen. Wenn Sie Fehler finden, wäre ich Ihnen sehr dankbar, wenn Sie darauf hinweisen könnten!

0. Ausführungsumgebung

Der gesamte Code im Artikel ist der von Python3.8.2 ausgeführte.

1. Eindimensionale Strömung

Dieser Artikel basiert auf dem Buch von Strogats Wir werden uns in dieser Reihenfolge mit eindimensionalen Gleichungen → zweidimensionalen Gleichungen → dreidimensionalen Gleichungen (Auftreten von Chaos) befassen. Betrachten wir zunächst eine eindimensionale Gleichung, dh eine Funktion, die in der folgenden Form ausgedrückt werden kann.

\frac{dx}{dt} = f(x)

1.1 Fixpunkte und deren Stabilität

Verwenden Sie ein virtuelles Partikel *** $ x_0, um die Lösung von *** $ x '= f (x) $ *** ausgehend von einer beliebigen Anfangsbedingung *** $ x_0 $ *** zu finden Legen Sie es in $ *** und beobachten Sie, wie es vom Fluss getragen wird. Mit der Zeit bewegt sich dieser Punkt gemäß einer Funktion *** $ x (t) $ *** entlang der *** $ x $ *** -Achse. Diese Funktion wird als ** Lösungsbahn ** ab *** $ x_0 $ *** bezeichnet und repräsentiert die Lösung der Differentialgleichung ab der Anfangsbedingung *** $ x_0 $ ***. Ein System, das alle qualitativ unterschiedlichen Aktivierungen darstellt, wird als ** Phasendiagramm ** bezeichnet. In diesem Phasendiagramm wird der Punkt, an dem *** $ x '= 0 $ *** ist, als ** Fixpunkt ** bezeichnet.

[Beispiel 1.1] Finden Sie alle Fixpunkte von
*** $ x '= x ^ 2-1 $ *** und klassifizieren Sie sie.
[Beispielcode 1.1]

example1_1.py


import sympy as sym
from sympy.plotting import plot
x = sym.Symbol('x')
dx = x**2 - 1
plot(dx, (x, -10, 10), aspect_ratio='auto', title='example1.1', xlim = (-5, 5), ylim = (-3, 25),ylabel="x'")
[Ausführungsergebnis 1.1] example1_1.png
[Antwort 1.1]
Wie in der Abbildung gezeigt, gibt es zwei feste Punkte *** $ x = -1, x = 1 $ ***. Ersteres ist stabil, da die Rückstellkraft auch bei kleinen Störungen in der Nähe des Fixpunkts wirkt. Andererseits ist letzteres nicht stabil (als ** Senke ** bezeichnet), da sich der Punkt in Richtung der Verstärkung einer kleinen Störung bewegt. (Wird als ** Quelle ** bezeichnet)

1.2 Lineare Stabilitätsanalyse

Betrachten wir nun eine Methode zur Analyse der Stabilität in der Nähe eines festen Punkts, wie im vorherigen Beispiel gezeigt. *** $ x ^ \ ast $ *** als fester Punkt, *** $ \ eta (t) = x (t) -x ^ \ ast $ *** als *** $ x ^ \ ast $ Lass es eine kleine Störung von *** sein.

\begin{eqnarray}
\dot{\eta} &=& \frac{d}{dt}(x-x^\ast)=\dot{x}\\
&=& f(x)\\
&=& f(x^\ast+\eta)\\
&=& f(x^\ast)+\eta \cdot f'(x^\ast) + o(\eta^2)\\
&\simeq& \eta \cdot f'(x^\ast)
\end{eqnarray}

Daher die Linearisierung um den Fixpunkt

\dot{\eta} \simeq \eta \cdot f'(x^\ast)

Es ist ersichtlich, dass es ausgedrückt werden kann als. (Taylor-Erweiterung wurde bei der Transformation von der 3. Zeile zur 4. Zeile in der Ausdruckserweiterung verwendet) Basierend auf diesem Ergebnis

* $ f '(x ^ \ ast)> 0 $ * wächst exponentiell, Wenn
* $ f '(x ^ \ ast) <0 $ * ist, wird es gedämpft.
* Diese gelten jedoch für * $ f '(x ^ \ ast) \ neq0 $ * Sie können sehen, dass.

1.3 Existenz und Einzigartigkeit der Lösung

Von hier aus ein sehr wichtiger Satz zur Betrachtung eines nichtlinearen mechanischen Systems.

*** $ \ dot {x} = f (x) , x (0) = x_0 $ ***. Angenommen, *** $ f (x) $ *** und *** $ f '(x) $ *** sind im offenen Intervall R auf der *** $ x $ *** -Achse stetig. Es wird angenommen, dass *** $ x_0 $ *** ein Punkt in R ist. Dann wird dieses Anfangswertproblem durch *** $ (- \ gamma, \ gamma) $ *** gelöst, während man um *** $ t = 0 $ *** herumläuft. *** $ x (t) $ Mit *** ist diese Lösung einzigartig. Mit anderen Worten, Wenn *** $ f (x) $ *** glatt genug ist, existiert die Lösung und ist eindeutig </ font>.