TP5 Числена резолюция на диференциални уравнения; ИТ документация за всички -

Интересуваме се от метода на Ойлер за приблизителната разделителна способност на тежкото хармонично или амортизирано махало, както и от други методи.

уравнения

Няколко фазови портрета, показващи трите възможни режима (подкритичен, критичен, свръхкритичен):

И приятна анимация на идеално тежко махало в подкритичен режим:

Документация¶

TP5 в Lycée Lakanal (тема, написана от Arnaud Basson), върху тежкото махало.

  • Дата: сряда 01-13 и четвъртък 01-14 (2016),
  • Автор: Лилиан Бесон, за компютърни науки за всички курсове за подготовка на MP (http://perso.crans.org/besson/infoMP/),
  • Лиценз: MIT лиценз (http://lbesson.mit-license.org).
TP5. l = 0,3¶

Обща променлива \ (l = 30 \) cm (дължина на пръта).

Глобална променлива \ (g = 9,80665 \; m/s ^ 2 \) (ускорение на гравитацията на повърхността на Земята).

Операторът \ (f: Y \ mapsto f (Y) \) (1), написан като функция на Python.

  • Аргументи:
    • Y е едномерен (двуелементен) numpy масив и връща numpy масив със същия размер. \ (Y = [\ theta, \ dot \ theta] \) така \ (Y_0 = \ theta, Y_1 = \ точка \ theta \),
    • (по избор) g е ускорението на гравитацията на повърхността на Земята (\ (g = 9,80665 \; m/s ^ 2 \)),
    • (по избор) l е дължината на пръта (\ (l = 30 \) cm при приложения).
  • Пример:

Решете числено диференциалното уравнение от ред 2 на простото махало (2) по метода на Ойлер за \ (t \ в [0, t _] \), с крачка във времето \ (h> 0 \) .

За да използваме схема на Ойлер, трябва да напишем това уравнение (обикновено от порядък 2, но не линейно!) Под формата \ (Y '(t) = f (t, Y) \), където \ (Y = [\ theta, \ dot \ theta] \):

И следователно е написана схемата за актуализация на Euler:

Но в нашия случай дискретните времена \ (t_i \) са равномерно разпределени, така че \ (\ forall i \ in \, \; t_ - t_ = h \) (времевата стъпка), следователно диаграмата е опростена в (3):

  • Операторът \ (f: (t, Y) \ mapsto f (t, Y) \) е векторен (с размер \ (2 \ по 2 \)) и е даден от функцията f () .
  • Началните условия се дават от theta0 и thetaPoint0 .
  • Връща масив (списък), съдържащ стойностите на \ (u_c \), изчислени на моменти \ (t_i = i \ times h \) (за \ (0 \ leq i \ leq t_/h) \) .
  • Аргументи:
    • h е стъпка във времето (\ (h> 0 \)),
    • tmax е общата продължителност на цифровата симулация (\ (t_> 0 \)),
    • theta0 \ (= \ theta_0 \) е стойността на \ (\ theta (t = 0) \),
    • и thetaPoint0 \ (= \ точка \) е стойността на \ (\ точка \ theta (t = 0) = \ ляво (\ frac \ дясно) (t = 0) \) .
  • Хипотеза: Ще разрешим уравнението за \ (t \ geq 0 \) .
  • Пример (въпрос I.2.c):
  • Крива \ ((t, \ theta (t)) \), вече виждаме, че не е точно хармонично решение (има леко усилване поради числените грешки, въведени от приближението на Тейлър, което оправдава актуализацията на диаграмата на Ойлер метод):
  • Фазов портрет (\ ((\ theta (t), \ dot \ theta (t)) \)), който не е кръг и следователно виждаме, че методът на Euler не е точен за тази симулация:
  • Сложност във времето: \ (O (n) \), с \ (n = \ lceil t_/h \ rceil \) .
  • Сложност в паметта (въпрос I.2.c): константи, плюс масивен масив от 64-битови плувки (numpy.float64, т.е. 4 байта), с размер точно \ ((n, 2) \), с \ (n = \ lceil t_/h \ rceil \) (размерът на масив numpy може да бъде получен с функцията numpy.shape ()).
  • Пример:

\ (\ omega_0 = \ sqrt \) е правилна пулсация на хармоничната система (вижте тази страница за повече подробности).

Начертайте кривата \ (\ theta (t) \), стойността на ъгъла \ (\ theta \) като функция от времето \ (t \) .

  • Аргументи:
    • listTime е подобен на масив (списък или масив numpy), съдържащ стойностите \ (t_i \),
    • theta съдържа стойностите (приблизителни или не) на \ (\ theta_i = \ theta (t_i) \) .
TP5. portraitPhase (thetas, method = "по метода на Ойлер") [източник] ¶

Начертайте фазовия портрет, т.е. производната \ (\ dot \ theta \) в зависимост от стойността на ъгъла \ (\ theta \) .

  • Аргумент:
    • theta е подобен на масив (списък или numpy масив) с размер \ ((n, 2) \), който съдържа стойностите (приблизителни или не) на \ (Y = [\ theta, \ dot \ theta] \ ) на моменти \ (t_i \) .
TP5. средна точка (h, tmax, theta0, thetaPoint0) [източник] ¶

Решете числено диференциалното уравнение от порядък 2 на простото махало (4) по метода на средната точка за \ (t \ in [0, t _] \) с крачка във времето \ (h \) .

За да използваме тази друга схема, трябва също да напишем това диференциално уравнение (обикновено от порядък 2, но не линейно!) Под формата \ (Y '(t) = f (t, Y) \), където \ (Y = [\ theta, \ dot \ theta] \):

Това е същият оператор \ (f \) (изчислен от функцията f () по-горе). И следователно, диаграмата за актуализиране на метода на средната точка е написана: