TP5 Rezoluția numerică a ecuațiilor diferențiale; Documentație IT pentru toți -
Suntem interesați de metoda lui Euler pentru rezoluția aproximativă a pendulului armonic greu sau pendul amortizat, precum și de alte metode.

Mai multe portrete de fază, care arată cele trei regimuri posibile (subcritice, critice, supracritice):
Și o animație drăguță a unui pendul greu ideal în regim subcritic:
Documentație¶
TP5 la Lycée Lakanal (subiect scris de Arnaud Basson), pe pendulul greu.
- Data: miercuri 01-13 și joi 01-14 (2016),
- Autor: Lilian Besson, pentru informatică pentru toate cursurile de pregătire MP (http://perso.crans.org/besson/infoMP/),
- Licență: Licență MIT (http://lbesson.mit-license.org).
Variabilă globală \ (l = 30 \) cm (lungimea tijei).
Variabilă globală \ (g = 9.80665 \; m/s ^ 2 \) (accelerația gravitației la suprafața Pământului).
Operatorul \ (f: Y \ mapsto f (Y) \) (1), scris ca o funcție Python.
- Argumente:
- Y este o matrice numpy unidimensională (cu două elemente) și returnează o matrice numpy de aceeași dimensiune. \ (Y = [\ theta, \ dot \ theta] \) deci \ (Y_0 = \ theta, Y_1 = \ dot \ theta \),
- (opțional) g este accelerația gravitației la suprafața Pământului (\ (g = 9.80665 \; m/s ^ 2 \)),
- (opțional) l este lungimea tijei (\ (l = 30 \) cm în aplicații).
- Exemplu:
Rezolvați numeric ecuația diferențială de ordinul 2 al pendulului simplu (2) prin metoda Euler pentru \ (t \ în [0, t _] \), cu un pas de timp \ (h> 0 \) .
Pentru a utiliza o schemă Euler, trebuie să scriem această ecuație (obișnuită de ordinul 2, dar nu liniară!) În forma \ (Y '(t) = f (t, Y) \), unde \ (Y = [\ theta, \ dot \ theta] \):
Prin urmare, schema de actualizare Euler este scrisă:
Dar în cazul nostru, timpii discreți \ (t_i \) sunt distanțați uniform, deci \ (\ forall i \ in \, \; t_ - t_ = h \) (pasul de timp), prin urmare diagrama este simplificată în (3):
- Operatorul \ (f: (t, Y) \ mapsto f (t, Y) \) este vectorial (de dimensiune \ (2 \ ori 2 \)) și este dat de funcția f () .
- Condițiile inițiale sunt date de theta0 și thetaPoint0 .
- Returnează o matrice (listă) care conține valorile lui \ (u_c \) calculate câteodată \ (t_i = i \ ori h \) (pentru \ (0 \ leq i \ leq t_/h) \) .
- Argumente:
- h este un pas de timp (\ (h> 0 \)),
- tmax este durata totală a simulării digitale (\ (t_> 0 \)),
- theta0 \ (= \ theta_0 \) este valoarea \ (\ theta (t = 0) \),
- și thetaPoint0 \ (= \ dot \) este valoarea \ (\ dot \ theta (t = 0) = \ left (\ frac \ right) (t = 0) \) .
- Ipoteza: Vom rezolva ecuația pentru \ (t \ geq 0 \) .
- Exemplu (întrebarea I.2.c):
- Curba \ ((t, \ theta (t)) \), putem vedea deja că nu este tocmai o soluție armonică (există o ușoară amplificare datorită erorilor numerice introduse de aproximarea Taylor care justifică actualizarea în diagramă a lui Euler metodă):
- Portret de fază (\ ((\ theta (t), \ dot \ theta (t)) \)), care nu este un cerc și, prin urmare, vedem că metoda lui Euler nu este exactă pentru această simulare:
- Complexitatea timpului: \ (O (n) \), cu \ (n = \ lceil t_/h \ rceil \) .
- Complexitate în memorie (întrebarea I.2.c): constante, plus o matrice numerică de flotări pe 64 de biți (numpy.float64, adică 4 octeți), cu dimensiunea exactă \ ((n, 2) \), cu \ (n = \ lceil t_/h \ rceil \) (dimensiunea unui tablou numpy poate fi obținută cu funcția numpy.shape ()).
- Exemplu:
\ (\ omega_0 = \ sqrt \) este pulsația corespunzătoare a sistemului armonic (vezi această pagină pentru mai multe detalii).
Desenați curba \ (\ theta (t) \), valoarea unghiului \ (\ theta \) în funcție de timp \ (t \) .
- Argumente:
- listTime este o matrice (listă sau matrice numpy) care conține valorile \ (t_i \),
- theta conține valorile (aproximative sau nu) ale \ (\ theta_i = \ theta (t_i) \) .
Desenați portretul de fază, adică derivatul \ (\ dot \ theta \) în funcție de valoarea unghiului \ (\ theta \) .
- Argument:
- theta este o matrice (listă sau matrice numpy) de dimensiune \ ((n, 2) \), care conține valorile (aproximative sau nu) ale \ (Y = [\ theta, \ dot \ theta] \ ) instantaneu \ (t_i \) .
Rezolvați numeric ecuația diferențială de ordinul 2 al pendulului simplu (4) prin metoda punctului de mijloc pentru \ (t \ în [0, t _] \) cu un pas de timp \ (h \) .
Pentru a utiliza această altă schemă, trebuie să scriem și această ecuație diferențială (obișnuită de ordinul 2, dar nu liniară!) În forma \ (Y '(t) = f (t, Y) \), unde \ (Y = [\ theta, \ dot \ theta] \):
Acesta este același operator \ (f \) (calculat de funcția f () de mai sus). Prin urmare, diagrama pentru actualizarea metodei punctului mediu este scrisă: