Lösen Sie normale Differentialgleichungen in Python

Einführung

Ich werde erklären, wie man gewöhnliche Differentialgleichungen mit Python löst.

OS / Python module version Das verwendete Betriebssystem ist Windows 10. Die Python-Modulversion lautet:

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 Lösen Sie die folgende Differentialgleichung.

y'' = -y \\

Führen Sie die Variable z ein. Durch Erhöhen der Variablen wird eine Differentialgleichung zweiter Ordnung als simultane Gleichung zweier Differentialgleichungen erster Ordnung betrachtet.

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

Die Anfangsbedingungen sind $ t = 0, y_0 = 1, z_0 = 0 $. Die Lösung ist $ cos (t) $. Da die richtige Lösung leicht erhalten werden kann, kann der Fehler bewertet werden.

Das folgende ist ein Python-Programm, das Differentialgleichungen löst. Lösen Sie mit 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))

Ich werde das machen.

console


> python .\test.py

Bei der Ausführung wird das Diagramm angezeigt.

Das folgende Diagramm ist die Lösung der Differentialgleichung. Der Graph von cos (t) wird für 10 Zyklen angezeigt. figure_0.png

Das folgende Diagramm zeigt den Fehler. Wenn t zunimmt, nimmt auch der Fehler zu. Der Fehler liegt auf der Skala von $ 10 ^ {-15} $. figure_1.png

Recommended Posts

Lösen Sie normale Differentialgleichungen in Python
Lösen Sie simultane normale Differentialgleichungen mit Python und SymPy.
Löse ABC168D in Python
Löse ABC167-D mit Python
Löse ABC146-C mit Python
Löse ABC098-C in Python
Löse ABC159-D in Python
Löse ABC169 mit Python
Löse ABC160-E mit Python
Lösen normaler Differentialgleichungen mit Python ~ Universal Gravitation
Lösen Sie simultane Gleichungen sofort mit Python
Löse ABC176 E in Python
Löse Wooldridge-Übungen in Python
Löse ABC175 D in Python
Lösen Sie Optimierungsprobleme mit Python
[Numerische Berechnungsmethode, Python] Lösen gewöhnlicher Differentialgleichungen mit der Eular-Methode
Löse den Atcoder ABC169 A-D mit Python
Löse ABC036 A ~ C mit Python
Löse ABC175 A, B, C mit Python
ABC 157 D - Lösungsvorschläge für Freunde in Python!
Ich wollte ABC159 mit Python lösen
Löse ABC165 A, B, D mit Python
Lösen Sie das maximale Subarray-Problem in Python
Quadtree in Python --2
Python in der Optimierung
CURL in Python
Metaprogrammierung mit Python
Python 3.3 mit Anaconda
Geokodierung in Python
SendKeys in Python
Metaanalyse in Python
Unittest in Python
Epoche in Python
Zwietracht in Python
Deutsch in Python
DCI in Python
Quicksort in Python
N-Gramm in Python
Programmieren mit Python
Plink in Python
Konstante in Python
FizzBuzz in Python
SQLite in Python
Schritt AIC in Python
LINE-Bot [0] in Python
CSV in Python
Reverse Assembler mit Python
Reflexion in Python
[Wissenschaftlich-technische Berechnung mit Python] Lösen gewöhnlicher Differentialgleichungen, mathematischer Formeln, Sympy
nCr in Python.
Format in Python
Scons in Python 3
Puyopuyo in Python
Python in Virtualenv
Quad-Tree in Python
Reflexion in Python
Chemie mit Python
Hashbar in Python
DirectLiNGAM in Python
LiNGAM in Python