Advanced Dead Reckoning
Dead reckoning (DR) is navigation by calculation from a known position using course and distance traveled. This module covers the mathematics of error propagation, position uncertainty, and professional DR techniques used in aviation and maritime navigation.
Etymology and History
"Dead" reckoning derives from "deduced reckoning" (ded. reckoning → dead reckoning), not from navigating to your death.
Historical context: * 1500s: Columbus used DR across the Atlantic * 1700s: Traverse tables enabled precise plotting * 1900s: E6B flight computers mechanized DR * Today: DR provides backup to GPS and validates electronic fixes
|
DR is not obsolete. When GPS fails, satellites are jammed, or electronics die, DR is your survival skill. Every navigator must master it. |
Core Principles
The DR Position
A DR position is estimated based on: 1. Last known (fixed) position 2. Course steered (direction) 3. Speed (rate of travel) 4. Time elapsed
Fundamental Equations
Distance traveled:
Where: - d = distance (nm, km, or m) - v = speed (knots, km/h, m/s) - t = time
Position update (simple rectangular):
The longitude correction \(\frac{1}{\cos(\text{Lat})}\) accounts for meridian convergence at higher latitudes.
Mathematical Error Analysis
Sources of Error
| Source | Typical Error | Cumulative? |
|---|---|---|
Compass deviation |
±2-5° |
Yes |
Compass reading |
±1-2° |
Yes |
Speed estimation |
±3-10% |
Yes |
Current/wind (unknown) |
Variable |
Yes |
Time measurement |
±1% |
Minimal |
Initial position |
±0-500m |
No (constant) |
Error Propagation Model
After traveling distance \(d\) on course \(\theta\) with angular error \(\sigma_\theta\) and distance error \(\sigma_d\):
Cross-track error (perpendicular to course):
Along-track error (parallel to course):
Position error (combined):
The Circle of Uncertainty
Your DR position lies within a circle of uncertainty:
× Actual position (unknown)
╱
╱
╭───────────────────╮
╱ ╲
│ │
│ ⊕ DR position │ Radius = position error
│ │
╲ ╱
╰───────────────────╯
Radius calculation:
For typical values: - Angular error: 3° = 0.052 radians - Distance error: 5%
After 10 km:
Error Growth Over Multiple Legs
For n consecutive legs with independent errors:
This is not linear - errors compound by root-sum-square, not addition.
Example: 5-leg course, each leg 2km, 5% distance error
Not 500m (linear sum), but 224m (RSS sum).
However, angular errors compound differently - they cause drift in one direction, not random scatter.
Multi-Leg DR Plotting
Plotting Sheet Method
For each leg, record:
LEG | TIME START | COURSE | SPEED | TIME END | DISTANCE | DR POSITION
----|------------|--------|-------|----------|----------|------------
1 | 0800 | 045° | 5 kt | 0830 | 2.5 nm |
2 | 0830 | 090° | 4 kt | 0915 | 3.0 nm |
3 | 0915 | 135° | 6 kt | 0945 | 3.0 nm |
Rectangular Coordinates
Convert polar (course + distance) to rectangular (ΔN, ΔE):
Where θ is measured from north, clockwise.
Worked Example
Leg 1: Course 045°, Distance 2.5 nm
Leg 2: Course 090°, Distance 3.0 nm
Leg 3: Course 135°, Distance 3.0 nm
Total displacement:
Course Made Good:
Since ΔN < 0 and ΔE > 0, we’re in the SE quadrant:
Wait, let me recalculate. If ΔN is negative (south) and ΔE is positive (east), the angle from north is:
Since this is negative, add 180°:
Actually, for SE quadrant (ΔN<0, ΔE>0):
Hmm, that’s not right either. Let me be more careful.
With ΔN = -0.35 (south) and ΔE = 6.89 (east): The direction is almost due east, slightly south.
Using atan2:
That makes sense - almost 090° (east) with a slight southward component.
Distance Made Good:
Traverse Table Method
Traditional traverse tables provide pre-computed values for ΔN and ΔE (called "Departure" and "Latitude") for each degree of course and distances.
Modern calculation replaces tables with calculators, but understanding the principle remains essential.
Set and Drift
Concept
Set = direction the current/wind pushes you (true direction) Drift = rate of current/wind (speed)
Your Course Made Good (CMG) differs from your Course Steered due to set and drift.
N
↑
│
Set │ Heading
(water │ (through water)
track) │ ↗
│↗
↗ CMG (ground track)
╱
╱
↙ Current/Wind
Vector Triangle
Where: - \(\vec{V}_{ground}\) = speed and direction over ground (CMG + Speed Made Good) - \(\vec{V}_{heading}\) = speed and direction through water/air (heading + boat/airspeed) - \(\vec{V}_{current}\) = current set and drift
Calculating Set and Drift
If you know your DR position and get a fix:
DR Position: 34°15.0'N, 119°30.0'W (at 1200)
Fix Position: 34°17.0'N, 119°25.0'W (at 1200)
Difference:
ΔLat = 2.0' N = 2.0 nm north
ΔLon = 5.0' E = 5.0 × cos(34.25°) = 4.13 nm east
Time since last fix: 2 hours
Set (direction of current):
Drift (speed of current):
Correcting for Known Current
To make good a desired course in a known current:
Vector Triangle Solution
Given: - Desired CMG: 090° at 6 knots - Current: Set 180°, Drift 2 knots - Boat speed: 8 knots
Find heading to steer.
Solution: Using the vector triangle:
Convert to components:
Check: The heading should be "into" the current to compensate. Current is from 180° (going south), so you steer north of your desired track (072° vs 090°). ✓
Aviation DR
Wind Triangle
In aviation, the wind triangle relates: - Heading (HDG) and True Airspeed (TAS): Direction and speed through the air - Track (TRK) and Ground Speed (GS): Direction and speed over the ground - Wind Direction (WD) and Wind Speed (WS): Wind velocity
Wind
↓
┌───────────┐
│ │
HDG │ ↘ │ TRK
TAS │ ↘ │ GS
│ ↘ │
└───────────┘
E6B Flight Computer
The E6B (manual or electronic) solves: 1. Wind side: Calculate heading and ground speed given true course, TAS, and wind 2. Calculator side: Time-speed-distance, fuel, unit conversions
Modern electronic versions (e.g., CX-3) add GPS integration but the math remains the same.
DR in IFR Flight
When radar and GPS fail, pilots revert to DR:
1. Note last known position (VOR fix, GPS waypoint)
2. Record time
3. Fly assigned heading
4. Track elapsed time
5. Estimate ground speed (TAS adjusted for wind)
6. Calculate position at regular intervals
7. Plot on chart
8. Report position to ATC
Maritime DR
Standard Plotting Symbols
⊕ = Fix (known position from visual, radar, GPS)
DR = DR position (calculated)
EP = Estimated Position (DR adjusted for current/leeway)
→ = Course line with heading
⇢ = Track line (actual path)
DR Plotting Rules
-
Label all DR positions with time (e.g., "DR 1430")
-
Plot DR every hour at minimum
-
Plot DR at course changes
-
Plot DR when fix obtained (compare DR vs fix)
-
Label course and speed on track line
Running Fix
When only one landmark is visible:
Time 1000: Bearing to lighthouse = 045°
Time 1030: Bearing to same lighthouse = 090°
Procedure:
1. Plot line from lighthouse at 225° (back azimuth of 045°)
2. Plot line from lighthouse at 270° (back azimuth of 090°)
3. "Run forward" the 1000 line by course and distance traveled
4. Intersection of advanced 1000 line with 1030 line = fix
LH (lighthouse)
╱╲
╱ ╲
225° 270°
╱ ╲
╱ ↓ ╲ ← Advanced 1000 bearing
╱ ⊕ ╲ (moved along course/distance)
╱ Fix ╲
╱ at 1030 ╲
Traverse Computation
The Traverse Method
For complex routes with many turns:
-
List all course changes with distances
-
Compute ΔN and ΔE for each leg
-
Sum ΔN and ΔE separately
-
Calculate final position from start
-
Compute Course Made Good and Distance Made Good
Traverse Form
LEG | COURSE | DISTANCE | cos(C) | sin(C) | ΔN | ΔE
----|--------|----------|--------|--------|---------|-------
1 | 030° | 5.0 km | 0.866 | 0.500 | +4.330 | +2.500
2 | 090° | 3.0 km | 0.000 | 1.000 | 0.000 | +3.000
3 | 150° | 4.0 km | -0.866 | 0.500 | -3.464 | +2.000
4 | 270° | 2.0 km | 0.000 | -1.000 | 0.000 | -2.000
----|--------|----------|--------|--------|---------|-------
TOTALS: | +0.866 | +5.500
CMG = atan2(5.500, 0.866) = 81.0° = 081°
DMG = √(0.866² + 5.500²) = 5.57 km
Position Fixing to Reset DR
DR error grows continuously. Regular fixes reset the error:
Accuracy over time:
×
× × ×
× DR error grows
×
×
×
×
×
FIX ──→ ⊕──────×──────────×─────────────×──────────────────
↑ ↑ ↑ ↑
Start 10min 30min 60min
0m ~100m ~300m ~500m+ error
Fix methods: - Visual bearing intersection - Radar range/bearing - GPS (most accurate) - Celestial fix (noon sight, two-body fix) - Radio navigation (VOR, NDB)
Rule of thumb: Get a fix every 30-60 minutes, or whenever passing identifiable landmarks.
Estimated Position (EP)
The EP corrects DR for known influences:
Leeway: Sideways drift due to wind on boat’s topsides (not current).
Wind
↓
┌───────┐
│ │
Course │ ↘ │ Track (actual)
│ ↘ │
│ ↘ │ ← Leeway angle (typically 3-7°)
└───────┘
EP is more accurate than DR but less certain than a fix.
Python DR Calculator
import math
def dead_reckon(lat, lon, course, distance, unit='nm'):
"""
Calculate new position from DR.
Args:
lat: Starting latitude (decimal degrees, positive = N)
lon: Starting longitude (decimal degrees, positive = E)
course: Course in degrees (true)
distance: Distance traveled
unit: 'nm' (nautical miles), 'km', or 'm'
Returns:
(new_lat, new_lon) in decimal degrees
"""
# Convert to nautical miles if needed
if unit == 'km':
distance = distance / 1.852
elif unit == 'm':
distance = distance / 1852
# Convert to radians
lat_r = math.radians(lat)
course_r = math.radians(course)
# Calculate deltas
# 1 nautical mile = 1 minute of latitude
delta_lat = distance * math.cos(course_r) / 60 # degrees
# Longitude correction for latitude
delta_lon = (distance * math.sin(course_r)) / (60 * math.cos(lat_r))
new_lat = lat + delta_lat
new_lon = lon + delta_lon
return new_lat, new_lon
def course_made_good(lat1, lon1, lat2, lon2):
"""Calculate course and distance between two points."""
# Delta in minutes
delta_lat = (lat2 - lat1) * 60 # nm (approximately)
delta_lon = (lon2 - lon1) * 60 * math.cos(math.radians((lat1 + lat2) / 2))
# Distance
distance = math.sqrt(delta_lat**2 + delta_lon**2)
# Course (using atan2 for correct quadrant)
course = math.degrees(math.atan2(delta_lon, delta_lat))
if course < 0:
course += 360
return course, distance
def error_circle_radius(distance, angular_error_deg=3, distance_error_pct=5):
"""
Calculate position uncertainty radius.
Args:
distance: Distance traveled (any unit)
angular_error_deg: Compass error in degrees
distance_error_pct: Distance error as percentage
Returns:
Radius of uncertainty circle (same unit as distance)
"""
angular_error_rad = math.radians(angular_error_deg)
cross_track_error = distance * math.sin(angular_error_rad)
along_track_error = distance * (distance_error_pct / 100)
total_error = math.sqrt(cross_track_error**2 + along_track_error**2)
return total_error
# Example usage
if __name__ == "__main__":
# Starting position
start_lat = 34.0
start_lon = -118.0
# Multi-leg traverse
legs = [
(45, 10, 'nm'), # Course 045°, 10 nm
(90, 5, 'nm'), # Course 090°, 5 nm
(180, 8, 'nm'), # Course 180°, 8 nm
]
lat, lon = start_lat, start_lon
total_dist = 0
print(f"Start: {lat:.4f}°N, {abs(lon):.4f}°W")
for course, dist, unit in legs:
lat, lon = dead_reckon(lat, lon, course, dist, unit)
total_dist += dist
print(f"After {course:03d}°/{dist}{unit}: {lat:.4f}°N, {abs(lon):.4f}°W")
# Course made good
cmg, dmg = course_made_good(start_lat, start_lon, lat, lon)
print(f"\nCourse Made Good: {cmg:.1f}°")
print(f"Distance Made Good: {dmg:.2f} nm")
# Error estimate
error = error_circle_radius(total_dist)
print(f"\nPosition uncertainty: ±{error:.2f} nm ({error * 1.852:.2f} km)")
Exercises
Exercise 1: Basic DR Plot
Given: - Start position: 40°00.0’N, 074°00.0’W - Time: 0800 - Course: 090° True - Speed: 10 knots
Calculate DR position at 0900, 1000, and 1100.
Solution
At 10 knots, you travel 10 nm per hour.
0900 (1 hour, 10 nm):
ΔLat = 10 × cos(90°) = 10 × 0 = 0 nm = 0'
ΔLon = 10 × sin(90°) / cos(40°) = 10 × 1 / 0.766 = 13.05' E
Position: 40°00.0’N, 073°46.95’W (moved ~13' east)
Actually, let me recalculate more carefully.
Distance = 10 nm east. At latitude 40°, 1 minute of longitude = cos(40°) × 1 nm = 0.766 nm. So 10 nm = 10 / 0.766 = 13.05 minutes of longitude.
0900: 40°00.0’N, 073°46.95’W 1000: 40°00.0’N, 073°33.90’W (another 13.05' east) 1100: 40°00.0’N, 073°20.85’W (another 13.05' east)
Exercise 2: Multi-Leg Traverse
Given: - Start: 35°00.0’N, 120°00.0’W at 0600 - Leg 1: Course 045°, Speed 6 kt, for 1 hour - Leg 2: Course 135°, Speed 8 kt, for 30 minutes - Leg 3: Course 270°, Speed 5 kt, for 2 hours
Find final DR position and Course/Distance Made Good.
Solution
Leg 1: 6 nm on 045° - ΔN = 6 × cos(45°) = 4.24 nm = 4.24' - ΔE = 6 × sin(45°) / cos(35°) = 4.24 / 0.819 = 5.18'
Leg 2: 4 nm on 135° - ΔN = 4 × cos(135°) = -2.83 nm = -2.83' - ΔE = 4 × sin(135°) / cos(35.07°) = 2.83 / 0.818 = 3.46'
Leg 3: 10 nm on 270° - ΔN = 10 × cos(270°) = 0 nm = 0' - ΔE = 10 × sin(270°) / cos(35.01°) = -10 / 0.819 = -12.21'
Totals: - ΔN = 4.24 - 2.83 + 0 = 1.41' North - ΔE = 5.18 + 3.46 - 12.21 = -3.57' West
Final position: - Lat: 35°00.0' + 1.41' = 35°01.41’N - Lon: 120°00.0' + 3.57' = 120°03.57’W
Course Made Good: CMG = atan2(-3.57 × 0.819, 1.41) = atan2(-2.92, 1.41) = -64.2°
Since ΔE is negative (west) and ΔN is positive, we’re in NW quadrant: CMG = 360° - 64.2° = 295.8° ≈ 296° True
Distance Made Good: DMG in nm: Need to convert ΔE back to nm. ΔE_nm = -3.57 × cos(35°) = -2.92 nm DMG = √(1.41² + 2.92²) = √(1.99 + 8.53) = √10.52 = 3.24 nm
Or: DMG = √(ΔN² + ΔE_nm²) = √(1.41² + (-2.92)²) = 3.24 nm
Exercise 3: Set and Drift
Given: - DR position at 1400: 33°30.0’N, 117°45.0’W - Fix position at 1400: 33°32.5’N, 117°40.0’W - Time since last fix: 2.5 hours
Calculate set and drift.
Solution
Difference between DR and Fix: - ΔLat = 32.5' - 30.0' = 2.5' N = 2.5 nm north - ΔLon = 45.0' - 40.0' = 5.0' E
At latitude 33.5°: ΔE_nm = 5.0 × cos(33.5°) = 5.0 × 0.834 = 4.17 nm east
Set (direction of current): Set = atan2(4.17, 2.5) = 59.1° ≈ 059° True
Drift (speed of current): Distance = √(2.5² + 4.17²) = √(6.25 + 17.39) = √23.64 = 4.86 nm
Drift = 4.86 nm / 2.5 hours = 1.94 knots ≈ 2.0 knots
Answer: Current setting 059° at 2.0 knots.
Quick Reference
Formulas
| Calculation | Formula |
|---|---|
Distance from time/speed |
d = v × t |
ΔN (northing) |
d × cos(course) |
ΔE (departure) |
d × sin(course) |
Course from Δs |
atan2(ΔE, ΔN) |
Distance from Δs |
√(ΔN² + ΔE²) |
Position error |
√(σ_cross² + σ_along²) |
Longitude correction |
ΔLon = ΔE / cos(Lat) |
Error Estimates
| Distance Traveled | Typical Position Error |
|---|---|
1 km |
±50-70 m |
5 km |
±250-350 m |
10 km |
±500-700 m |
20 km |
±1000-1400 m |
Rule of thumb: 5-7% of distance traveled as position uncertainty.
Related Topics
-
Celestial Navigation (fixes to reset DR)
-
Map Projections (for accurate plotting)