Modellezzünk rakétamozgást!
Egy adott időpillanatban legyen a rakétánk $m$ tömegű, tegyük fel, hogy $v$ sebességgel halad. A rakéta hátulján egy kis, $\Delta m$ tömegű darabka a rakétához képest $v_e$, az álló megfigyelőhöz képest $v-v_e$ sebességgel távozik. A lendületmegmaradás miatt az álló megfigyelő szemszögévől:
$$ (m + \Delta m)\cdot v = m (v+\Delta v)+\Delta m\cdot (v-v_e) ,$$tehát
$$ 0 = m \Delta v - \Delta m \cdot v_e $$Rendezzük át:
$$\frac{\Delta v}{\Delta m}=-\frac{v_e}{m}$$Tartsunk $\Delta m$-mel a 0-hoz:
$$\frac{\mathrm{d} v}{\mathrm{d} m}=-\frac{v_e}{m},$$Ábrázoljuk a rakéta sebességét a rakéta tömegének függvényében! Vegyük a rakéta össztömegét 1-nek, és tételezzük fel, hogy az össztömeg 90%-a üzemanyag, tehát maximum 0.1-ig tud a tömeg csökkenni. Legyen $v_e=10$! Értelmezzük a kapott eredményt, vessük össze az analitikus megoldással (a diffegyenlet szétválasztható)!
Először töltsük be a szükséges csomagokat
%pylab inline
from scipy.integrate import *
Ezután definiáljuk a megoldandó diffegyenlet függvényét, és megoldjuk:
def raketa(v, m):
return (- 10/m) # A dv/dm npvekmény egyenlő -10/m-mel
mu = linspace(1, 0.1, 100)
v_0 = 0 # A kezdeti sebesség
v = odeint(raketa, v_0, mu)
Majd ábrázoljuk
plot(mu, v)
xlabel("tömeg", size=12)
ylabel("sebesség", size=12)
title("A rakéta sebessége, a tömeg függvényében", size=18, y=1.05)
A differencálegyenlet analitikusan is megoldható: $$ v \left(\mu\right) = - v_e \int_{1}^{\mu} \frac{\textrm{d} m}{m} = v_e \ln{\frac{1}{\mu}}$$ Ez alapján ábrázolva a sebességet $\mu$ függvényében:
plot(mu, 10*log(1/mu), "b-", lw=2)
plot(mu, v, "rx", markersize=5) # A numerikus megoldás értékeit is ábrázolom ellenőrizve, hogy jó-e
xlabel("tömeg", size=12)
ylabel("sebesség", size=12)
title("A rakéta sebessége, a tömeg függvényében", size=18, y=1.05)
Látszik, hogy elég jól egybeesnek, vagyis a megoldás jó.