Szukam tylko potwierdzenia, czy dobrze zrobiłem rozwiązanie numeryczne...
Mam do rozwiązania numerycznie niemal ten sam przykład co kolega wyżej - oscylator harmoniczny (sprężyna, masa i tłumienie), także metodą Rungego Kutty 4-go rzędu.
Dostałem układ równań, który muszę rozwiązać numerycznie:
\(\displaystyle{
\frac{dV}{dt} = - \frac{c\cdot V}{m} - \frac{k \cdot x}{m}
}\)
oraz:
\(\displaystyle{
\frac{dx}{dt} = V
}\)
Czyli układ równań pierwszego rzędu (w pierwszym mamy przyspieszenie w drugim prędkość)
Chciałem prosić o sprawdzenie, czy dobrze zrobiłem rozwiązanie numeryczne:
Kod: Zaznacz cały
x[0] = init_x
v[0] = init_V
for i in range(0, liczba_krokow):
rate(1000)
k1x = h*v[i]
k1v = h * przysp(x[i], v[i])
k2x = h*(v[i]+0.5 * k1v)
k2v = h * przysp(x[i] + 0.5 * k1x, v[i])
k3x = h*(v[i]+0.5 * k2v)
k3v = h * przysp(x[i] + 0.5 * k2x, v[i])
k4x = h*(v[i]+k3v)
k4v = h * przysp(x[i] + k3x, v[i])
x[i + 1] = x[i] + (k1x + 2 * k2x + 2 * k3x + k4x) / 6.0
v[i + 1] = v[i] + (k1v + 2 * k2v + 2 * k3v + k4v) / 6.0
xt = x[i]
Vt = v[i]
Kod: Zaznacz cały
def przysp(x, v):
return (-c*v-k*x)/m
Czy wszystko jest dobrze?
Z góry dziękuję za pomoc!