ich habe ein kleines Programm geschrieben, welches ein einfaches Pendel mit verschiedenen numerischen Verfahren berechnet. Dieses Pendel will ich jetzt noch mithilfe von Python simulieren. Ich arbeite unter Python 2.7. Ich habe die Berechnung bereits durchgeführt und mit matplot geplottet. Habe jetzt schon eine menge gegooglet und was ausprobiert, aber irgendwie funktioniert nichts und ich verstehe nicht so wirklich wie das mit dem simulieren funktioniert. Der entsprechende Teil meines codes sieht so aus:
Code: Alles auswählen
import numpy as np
import matplotlib.pylab as plt
import math
...
class problem_2(object):
def __init__(self, dt, frict):
self.frict = frict
self.dt = dt
self.theta0 = math.radians(85)
self.dtheta0 = math.radians(0)
self.m = 1.0
self.g = 9.81
self.l = 1.0
self.t = 10.0
self.end = int(self.t/self.dt)
self.time = np.zeros(self.end + 1)
self.theta = np.zeros(self.end + 1)
self.dtheta = np.zeros(self.end + 1)
self.time[0] = 0
self.theta[0] = self.theta0
self.dtheta[0] = self.dtheta0
def computation_euler(self):
for n in range (0, self.end):
self.theta[n+1] = self.theta[n] + self.dt*self.dtheta[n]
self.dtheta[n+1] = self.dtheta[n] + self.dt * ((-self.frict /self.m)*self.dtheta[n]+(-self.g/self.l) * math.sin(self.theta[n]))
self.time[n+1] = self.time[n] + self.dt
return (self.time, self.theta, self.dtheta)
def plot(self, a):
plt.figure()
plt.plot(a[0], a[1]*180/math.pi)
plt.xlabel("time [s]")
plt.ylabel("angle [deg]")
plt.grid()
plt.show()
...
if __name__ == '__main__':
...
y = problem_2
euler_ts_1 = y.computation_euler(problem_2(0.001, 1.0))
y.plot(problem_2(0.001, 1.0), euler_ts_1)
Gruß
Marvin