03 - Rakétamozgás

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ó)!

Megoldás

Először töltsük be a szükséges csomagokat

In [1]:
%pylab inline
from scipy.integrate import *
Populating the interactive namespace from numpy and matplotlib

Ezután definiáljuk a megoldandó diffegyenlet függvényét, és megoldjuk:

In [2]:
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

In [3]:
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)
Out[3]:
<matplotlib.text.Text at 0x7f123e1560b8>

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:

In [4]:
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)
Out[4]:
<matplotlib.text.Text at 0x7f12446bbbe0>

Látszik, hogy elég jól egybeesnek, vagyis a megoldás jó.