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).
Обща променлива \ (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) \) .
Начертайте фазовия портрет, т.е. производната \ (\ dot \ theta \) в зависимост от стойността на ъгъла \ (\ theta \) .
- Аргумент:
- theta е подобен на масив (списък или numpy масив) с размер \ ((n, 2) \), който съдържа стойностите (приблизителни или не) на \ (Y = [\ theta, \ dot \ theta] \ ) на моменти \ (t_i \) .
Решете числено диференциалното уравнение от порядък 2 на простото махало (4) по метода на средната точка за \ (t \ in [0, t _] \) с крачка във времето \ (h \) .
За да използваме тази друга схема, трябва също да напишем това диференциално уравнение (обикновено от порядък 2, но не линейно!) Под формата \ (Y '(t) = f (t, Y) \), където \ (Y = [\ theta, \ dot \ theta] \):
Това е същият оператор \ (f \) (изчислен от функцията f () по-горе). И следователно, диаграмата за актуализиране на метода на средната точка е написана: