Z reševanjem diferencialne enačbe po Eulerjevi metodi želim dobiti polje pomikov in hitrosti.
Enačbo sem po mojem pravilno zastavil, problem imam da t_sci ne poteka enako kot polje čas (kot bi moralo) in zato ne dobim pravih rešitev.
Kaj bi moral spremeniti v kodi, da bi se t_sci spreminjal tako kot se spreminja čas ? Torej od časa t_0 (0.0001 s) do časa t_1 ( 0.008 s), s korakom dt (7,188 e-6 s) ? t_sci ima sedaj namreč prvo vrednost nastavljeno - t_0, druga vrednost je pa korak, prištet k ničli. Druga vrednost bi pa morala biti korak, prištet k prejšnji vrednosti. In tako za vsako vrednost naprej.
Prosim za pomoč, če pa opazite napako še kje drugje, kar sporočite :)
čas, dt = np.linspace(t_0, t_1, n, retstep=True)
zac_pogoji = np.array([0, 0])
#Funkcija 1. odvodov
def funk(t,x):
return np.array([x[1], (F(t) - d*x[1] - k*x[0])/m])
solver = integrate.ode(funk).set_integrator('vode').set_initial_value(zac_pogoji)
t_sci = [t_0]
x_sci = [zac_pogoji]
while solver.successful() and solver.t < t_1:
solver.integrate(solver.t+dt)
t_sci.append(solver.t)
x_sci.append(solver.y)
t_sci = np.array(t_sci)
x_sci = np.array(x_sci)
t_sci
array([ 1.00000000e-04, 7.18835305e-06, 1.43767061e-05, ...,
7.98626024e-03, 7.99344859e-03, 8.00063694e-03])
čas
array([ 0.0001 , 0.00010719, 0.00011438, ..., 0.00798562,
0.00799281, 0.008 ])