Tsiolkovsky Rocket Equation — the Math of Reaching Orbit
Konstantin Tsiolkovsky derived his rocket equation in 1903, decades before the first liquid-fuel rocket flew. It reveals a cruel exponential tyranny: every kilogram of payload you want to send to orbit requires roughly 20 kilograms of propellant on the launchpad. Understanding the equation — and its workarounds via staging, propellant choice, and gravity assists — is the foundation of all spaceflight analysis.
1. Derivation from Newton's Third Law
A rocket accelerates by ejecting mass backward. At instant t, the rocket has mass m and velocity v. It ejects propellant at exhaust velocity v_e relative to the rocket:
2. Specific Impulse
Specific impulse I_sp is the thrust produced per unit weight of propellant consumed per second — the "fuel efficiency" of a rocket engine:
3. Mass Ratio and the Exponential Problem
To achieve orbital velocity (~9.4 km/s with losses), rearranging gives the required mass ratio:
4. Staging: Beating the Exponential
By discarding empty propellant tanks and engines (structural mass), staging multiplies the effective mass ratio:
5. Gravity and Drag Losses
6. Propellant Choices
RP-1 / LOX
Refined kerosene + liquid oxygen. Dense (high propellant mass per tank volume), simple handling. Isp ≈ 311 s vacuum. Falcon 9, Saturn V first stage.
LH₂ / LOX
Liquid hydrogen + oxygen. Highest Isp ≈ 453 s vacuum. But LH₂ density is very low → huge tanks, complex cryogenic handling. SSME, SLS core.
CH₄ / LOX
Methane + oxygen. Isp ≈ 363 s vacuum. Denser than LH₂, simpler than LH₂, can be produced on Mars. SpaceX Raptor, Blue Origin BE-4.
N₂O₄ / UDMH
Storable hypergolics (ignite on contact). No cryogenics, excellent for long missions. Isp ≈ 315 s vac. Used in RCS thrusters and Proton rocket.
7. JavaScript Rocket Simulator
// Tsiolkovsky rocket simulator with gravity + drag
function simulateRocket({
m_dry, // dry mass [kg]
m_prop, // propellant mass [kg]
Isp, // specific impulse [s]
thrust, // thrust [N]
dt = 0.5, // timestep [s]
Cd = 0.3, // drag coefficient
A = 10 // cross-section area [m²]
}) {
const g0 = 9.80665, R_E = 6.371e6;
const ve = Isp * g0;
const mdot = thrust / ve; // mass flow rate [kg/s]
let m = m_dry + m_prop;
let v = 0, alt = 0;
let t = 0;
const log = [];
while (m > m_dry + 0.1 && alt >= 0) {
const g = g0 * (R_E / (R_E + alt)) ** 2;
const rho = 1.225 * Math.exp(-alt / 8500); // exponential atmosphere
const drag = 0.5 * rho * Cd * A * v * Math.abs(v);
const F_net = thrust - m * g - drag;
const a = F_net / m;
v += a * dt;
alt += v * dt;
m -= mdot * dt;
t += dt;
log.push({t, alt, v, m});
}
return log;
}
// Falcon 9 first stage approximation
const flight = simulateRocket({
m_dry: 25 600, // kg
m_prop: 395 700, // kg RP-1 + LOX
Isp: 282, // sea-level average
thrust: 7_607_000, // N (9 Merlin engines)
dt: 0.5
});
const meco = flight[flight.length - 1];
console.log(`MECO: alt=${(meco.alt/1000).toFixed(1)} km, v=${meco.v.toFixed(0)} m/s`);
// Ideal (vacuum, no gravity): Δv = Isp·g₀·ln(m₀/m_f)
const deltaV_ideal = 311 * 9.80665 * Math.log((25600+395700) / 25600);
console.log(`Ideal Δv = ${(deltaV_ideal/1000).toFixed(2)} km/s`); // ~9.4 km/s
8. Real Rockets and Mission Design
- Gravity assist: Swing-by a planet to gain velocity "for free" (exchanged from the planet's orbital energy). Voyager 2 used Jupiter, Saturn, Uranus to reach Neptune — this would be impossible with propellant alone.
- Delta-v budget: Every mission is planned as a sequence of Δv manoeuvres: launch, TLI, LOI, landing. Total Δv determines propellant mass via Tsiolkovsky.
- Reusability: SpaceX Falcon 9 reserves ~400 m/s Δv for boostback and landing burns — reducing payload but amortising vehicle cost over many flights.
- ISRU (in-situ resource utilisation): Producing methane/oxygen on Mars from CO₂ and water ice eliminates the return-trip propellant from the mass ratio, enabling human return missions.
- Electric propulsion: Ion thrusters (Isp ~3000 s) dramatically reduce propellant mass but provide millinewtons of thrust — practical only for deep-space probes or station-keeping.