TP5 Differenciálegyenletek numerikus felbontása; Informatikai dokumentáció mindenkinek
Az Euler-féle módszer a nehéz harmonikus vagy csillapított inga hozzávetőleges felbontására, valamint más módszerekre kíváncsi.

Több fázis portré, a három lehetséges rezsim bemutatásával (szubkritikus, kritikus, túlkritikus):
És egy ideális nehéz inga szép animációja szubkritikus rendszerben:
Dokumentáció¶
TP5 a Lakanal Lycée-nél (a témát Arnaud Basson írta), a nehéz ingán.
- Dátum: 01-13, szerda és 01-14, csütörtök (2016),
- Szerző: Lilian Besson, az informatika mindenkinek a parlamenti képviselők előkészítéséért (http://perso.crans.org/besson/infoMP/),
- Licencia: MIT licenc (http://lbesson.mit-license.org).
Globális változó \ (l = 30 \) cm (a rúd hossza).
Globális változó \ (g = 9.80665 \; m/s ^ 2 \) (a gravitáció gyorsulása a Föld felszínén).
Az \ (f: Y \ mapsto f (Y) \) (1) operátor, Python függvényként írva.
- Érvek:
- Y egydimenziós (kételemes) numpy tömb, és egy azonos méretű numpy tömböt ad vissza. \ (Y = [\ theta, \ dot \ theta] \) tehát \ (Y_0 = \ theta, Y_1 = \ dot \ theta \),
- (nem kötelező) g a gravitáció gyorsulása a Föld felszínén (\ (g = 9,80665 \; m/s ^ 2 \),
- (opcionális) l a rúd hossza (\ (l = 30 \) cm alkalmazásoknál).
- Példa:
Számszerűleg oldja meg az (2) egyszerű inga 2. rendjének differenciálegyenletét az Euler-módszerrel a \ (t \ in [0, t _] \) esetén, egy időlépéssel \ (h> 0 \) .
Az Euler-séma használatához meg kell írnunk ezt az egyenletet (rendes a 2. sorrendben, de nem lineáris!) A következő formában: \ (Y '(t) = f (t, Y) \), ahol \ (Y = [\ theta, \ dot \ theta] \):
Ezért az Euler frissítési sémája a következő:
De a mi esetünkben a diszkrét idők (t_i \) egyenletesen vannak elosztva, tehát \ (\ forall i \ in \, \; t_ - t_ = h \) (az idő lépés), ezért a diagram egyszerűsödik a (3) bekezdésben:
- Az \ (f: (t, Y) \ mapsto f (t, Y) \) operátor vektoros (méret \ (2 \ szor 2 \)), és az f () függvény adja meg. .
- A kezdeti feltételeket a theta0 és a thetaPoint0 adja meg .
- Egy tömböt (listát) ad vissza, amely tartalmazza a \ (u_c \) időnként kiszámított értékeit (t_i = i \ h-szor h \) (\ (0 \ leq i \ leq t_/h) \) .
- Érvek:
- h egy idő lépés (\ (h> 0 \)),
- tmax a digitális szimuláció teljes időtartama (\ (t_> 0 \)),
- theta0 \ (= \ theta_0 \) a \ (\ theta (t = 0) \) értéke,
- és a thetaPoint0 \ (= \ dot \) a \ (\ dot \ theta (t = 0) = \ left (\ frac \ right) (t = 0) \) értéke .
- Hipotézis: Megoldjuk a (t \ geq 0 \) egyenletét .
- Példa (I.2.c kérdés):
- Görbe \ ((t, \ theta (t)) \) már láthatjuk, hogy ez nem éppen harmonikus megoldás (a Taylor-közelítés által bevezetett numerikus hibák miatt van egy kis erősítés, amely igazolja Euler diagramfrissítését. módszer):
- Fázisportré (\ ((\ theta (t), \ dot \ theta (t)) \)), amely nem kör, ezért látjuk, hogy Euler-módszer nem pontos ehhez a szimulációhoz:
- Idő bonyolultsága: \ (O (n) \), \ (n = \ lceil t_/h \ rceil \) .
- Komplexitás a memóriában (I.2.c kérdés): konstansok, plusz egy 64 bites lebegő (numpy.float64, azaz 4 bájt) számtömb, pontosan \ ((n, 2) \) méretű, \ (n = \ lceil t_/h \ rceil \) (egy numpy tömb méretét a numpy.shape () függvénnyel lehet megkapni).
- Példa:
\ (\ omega_0 = \ sqrt \) a a harmonikus rendszer megfelelő lüktetése (további részletekért lásd ezt az oldalt).
Rajzolja a görbét \ (\ theta (t) \), a szögértéket \ (\ theta \) az idő függvényében \ (t \) .
- Érvek:
- listTime egy tömbszerű (lista vagy numpy tömb), amely \ (t_i \) értékeket tartalmaz,
- a theta a \ (\ theta_i = \ theta (t_i) \) értékeket (hozzávetőleges vagy nem) tartalmazza .
Rajzolja a fázisportrét, vagyis a \ (\ dot \ theta \) deriváltat a \ (\ theta \) szög értékétől függően .
- Érv:
- a theta egy tömbszerű (lista vagy numpy tömb), amelynek mérete ((n, 2) \), amely a (Y = [\ theta, \ dot \ theta] \ (hozzávetőleges vagy nem) értékeket tartalmazza ) pillanatok alatt \ (t_i \) .
Számszerűleg oldja meg az (4) egyszerű inga (2) sorrendjének differenciálegyenletét a \ (t \ in [0, t _] \) középpont metódusával időbeli lépéssel \ (h \) .
Ennek a másik sémának a használatához meg kell írnunk ezt a differenciálegyenletet is (a 2. sorrendben szokásos, de nem lineáris!) A (Y '(t) = f (t, Y) \) alakban, ahol \ (Y = [\ theta, \ dot \ theta] \):
Ez ugyanaz a \ (f \) operátor (a fenti f () függvény által kiszámítva). Ezért a középpont módszer frissítésének diagramja meg van írva: