Résoudre des équations différentielles normales en Python

introduction

Je vais vous expliquer comment résoudre des équations différentielles ordinaires en utilisant Python.

OS / Python module version Le système d'exploitation utilisé est Windows 10. La version du module Python est:

console


> python --version
Python 3.4.3
> pip freeze
matplotlib==1.4.3
numpy==1.13.1+mkl
pandas==0.16.2
pyparsing==2.0.3
python-dateutil==2.4.2
pytz==2015.4
scipy==0.19.1
six==1.9.0

sample code Résolvez l'équation différentielle suivante.

y'' = -y \\

Introduisez la variable z. En augmentant les variables, une équation différentielle du second ordre est considérée comme une équation simultanée de deux équations différentielles du premier ordre.

y' = z \\
z' = -y \\

Les conditions initiales sont $ t = 0, y_0 = 1, z_0 = 0 $. La solution est $ cos (t) $. Étant donné que la solution correcte peut être facilement obtenue, l'erreur peut être évaluée.

Ce qui suit est un programme Python qui résout les équations différentielles. Résolvez en utilisant scipy.integrate.ode.

test.py


import numpy as np
import matplotlib.pyplot as plt
from scipy.integrate import ode

def f(t, v): # t, y:v[0], y'=z:v[1]
    return [v[1], -v[0]] # y':return[0] y''=z':return[1]
v0 = [1.0, 0.0] # y0, y'0=z0

solver = ode(f)
solver.set_integrator(name="dop853")
solver.set_initial_value(v0)
tw = 10.0*2.0*np.pi
dt = tw / 1000;
t = 0.0
ts = []
ys = []
while solver.t < tw:
    solver.integrate(solver.t+dt)
    ts += [solver.t]
    ys += [solver.y[0]]
plt.figure(0)
plt.plot(ts, ys)
plt.figure(1)
plt.plot(ts, np.cos(ts)-ys)
plt.show()
print(np.max(np.cos(ts)-ys))

Je le ferai.

console


> python .\test.py

Une fois exécuté, le graphique sera affiché.

Le graphique suivant est la solution de l'équation différentielle. Le graphique de cos (t) est affiché pendant 10 cycles. figure_0.png

Le graphique suivant trace l'erreur. À mesure que t augmente, l'erreur augmente également. L'erreur sera de l'ordre de 10 $ ^ {-15} $. figure_1.png

Recommended Posts

Résoudre des équations différentielles normales en Python
Résolvez des équations différentielles normales simultanées avec Python et SymPy.
Résoudre ABC168D en Python
Résolvez ABC167-D avec Python
Résolvez ABC146-C avec Python
Résoudre ABC098-C en Python
Résoudre ABC159-D en Python
Résolvez ABC169 avec Python
Résolvez ABC160-E avec Python
Résolution d'équations différentielles normales avec Python ~ Gravitation universelle
Résolvez des équations simultanées en un instant en utilisant Python
Résoudre ABC176 E en Python
Résolvez des exercices Wooldridge en Python
Résoudre ABC175 D en Python
Résoudre les problèmes d'optimisation avec Python
[Méthode de calcul numérique, python] Résolution d'équations différentielles ordinaires par la méthode Eular
Résoudre Atcoder ABC169 A-D avec Python
Résoudre ABC036 A ~ C avec Python
Résoudre ABC175 A, B, C avec Python
ABC 157 D - Résolvez les suggestions d'amis en Python!
Je voulais résoudre ABC159 avec Python
Résoudre ABC165 A, B, D avec Python
Résolvez le problème maximum de sous-tableau en Python
Quadtree en Python --2
Python en optimisation
CURL en Python
Métaprogrammation avec Python
Python 3.3 avec Anaconda
Géocodage en python
SendKeys en Python
Méta-analyse en Python
Unittest en Python
Époque en Python
Discord en Python
Allemand en Python
DCI en Python
tri rapide en python
N-Gram en Python
Programmation avec Python
Plink en Python
Constante en Python
FizzBuzz en Python
Sqlite en Python
Étape AIC en Python
LINE-Bot [0] en Python
CSV en Python
Assemblage inversé avec Python
Réflexion en Python
[Calcul scientifique / technique par Python] Résolution d'équations différentielles ordinaires, formules mathématiques, sympy
nCr en Python.
format en python
Scons en Python 3
Puyopuyo en python
python dans virtualenv
Quad-tree en Python
Réflexion en Python
Chimie avec Python
Hashable en Python
DirectLiNGAM en Python
LiNGAM en Python