Ich habe es gewagt, mich in die Thematik
'Differemtialgleichungen '
zu wagen und bin nun soweit gekommen,
dass ich glaube das Prinzip 'Lösung von Dgl mit Hilfe von scipy u. numpy'
in etwa vertanden zu haben. Aus scipy habe ich den ersten Code *Pendelbewegung'
entnommen.
Es ist eine einfache Dgl, die auch sehr gut erklärt ist.
Ich habe weitere einfache Dgl 's studiert und werde auch diese
als Beispiele vorstellen . Mit dem ''Werkzeug' Differential- und
Integralrechnung' sollten die math. technischen Voraussetzungen
für eine erffolgreiche Einarbeitung gegeben sein.
Gute Zeit OSWALD
Code: Alles auswählen
#theta''(t) + b*theta'(t) + c*sin(theta(t)) = 0
#wobei b und c positive Konstanten sind
#und ein Strich (') eine Ableitung bezeichnet.
#Um diese Gleichung mit odeint zu lösen
#müssen wir sie zunächst in ein System von Gleichungen erster Ordnung umwandeln.
#Durch Definition der Winkelgeschwindigkeit erhalten wir
# das System: omega(t) = theta'(t)
# theta'(t) = omega(t)
# omega'(t) = -b*omega(t) - c*sin(theta(t))
# der Vektor sei [ theta , omega ].
import numpy as np
def pend(y, t, b, c):
theta, omega = y
dydt = [omega, -b*omega - c*np.sin(theta)]
return dydt
#Wir nehmen an, dass die Konstanten b = 0,25 und c = 5,0 sind:
b = 0.25
c = 5.0
#Für die Anfangsbedingungen nehmen wir an,
#dass das Pendel mit Theta(0) = pi – 0,1 nahezu vertikal steht
#und anfänglich in Ruhe ist,
# also omega(0) = 0. Dann ist der Vektor der Anfangsbedingungen
y0 = [np.pi - 1.0,0]
#Wir werden eine Lösung mit 101 gleichmäßig beabstandeten Abtastungen
#im Intervall 0 <= t <= 10 generieren. Unsere Zeitreihe ist also:
t = np.linspace(0, 10, 101)
#Rufen Sie ++***odeint *** auf , um die Lösung zu generieren.
#Um die Parameter b und c an pend zu übergeben ,
#geben wir sie mit odeintdem Argument args an .
from scipy.integrate import odeint
sol = odeint(pend, y0, t, args=(b, c))
#Die Lösung ist ein Array mit der Form (101, 2).
# Die erste Spalte ist Theta(t) und die zweite ist Omega(t) .
# Der folgende Code zeichnet beide Komponenten.
import matplotlib.pyplot as plt
plt.plot(t, sol[:, 0], 'b', label='theta(t)')
plt.plot(t, sol[:, 1], 'g', label='omega(t)')
plt.legend(loc='best')
plt.xlabel('t')
plt.ylabel(" omega(t) = theta'(t) ")
plt.grid()
plt.show()