This is the "grind every case" companion to the parent GPS note . There we built the ideas; here we hit every kind of number the topic can throw at you — positive and negative clock bias, degenerate geometry, limiting angles, a word problem, and an exam twist.
If a symbol below feels unfamiliar, it was defined in the parent note. The three you must keep close:
Recall Quick symbol refresher (open if rusty)
ρ i ::: pseudorange to satellite i = true distance r i plus the clock error c b .
b ::: receiver clock bias, in seconds . Positive means the clock reads too late (fast).
c ::: speed of light, ≈ 3 × 1 0 8 m/s. Multiply a time by c to turn it into a distance.
G ::: geometry matrix — rows are line-of-sight unit vectors to each satellite, last column all 1's.
Q = ( G ⊤ G ) − 1 ::: the DOP matrix. Its diagonal gives the DOP numbers. Geometry only.
Every GPS problem in this chapter is one of the cells below. The examples that follow are tagged with the cell they cover.
Cell
Case class
What makes it tricky
Example
C1
Bias positive (clock fast)
subtract c b from ρ
A
C2
Bias negative (clock slow)
add ∣ c b ∣ — sign flips
B
C3
Bias zero (degenerate)
pseudorange = true range
B
C4
Solving for b (unknown clock)
4th equation does the work
C
C5
Good geometry (wide spread)
DOP near its floor
D
C6
Degenerate geometry (parallel LOS)
det ( G ⊤ G ) → 0 , DOP → ∞
E
C7
Limiting angle (spread → 0 ∘ or → 9 0 ∘ )
how DOP behaves at the extremes
F
C8
Real-world word problem
UERE × PDOP budget
G
C9
Exam twist (5 satellites, over-determined)
least squares, not exact solve
H
A satellite is at true distance r = 20 , 000 , 000 m from you. Your receiver clock is fast by 2 μ s , so b = + 2 × 1 0 − 6 s. What pseudorange ρ does the receiver compute, and how far off is it from the truth?
Forecast: Will ρ be larger or smaller than the true 20 , 000 km? Guess before reading.
Step 1 — turn the bias into a distance.
c b = ( 3 × 1 0 8 ) ( 2 × 1 0 − 6 ) = 600 m .
Why this step? b is a time ; the position equation lives in metres . Only after multiplying by c can the bias be added to a range.
Step 2 — build the pseudorange.
ρ = r + c b = 20 , 000 , 000 + 600 = 20 , 000 , 600 m .
Why this step? This is the definition ρ i = r i + c b straight from the parent note.
Step 3 — read the sign. A fast clock (b > 0 ) makes the arrival time read too large, so the naive distance is too big — the + 600 m is a surplus.
Verify: Remove the bias to recover truth: ρ − c b = 20 , 000 , 600 − 600 = 20 , 000 , 000 m. ✓ Matches r . Forecast answer: larger , by 600 m.
Same satellite, true distance r = 20 , 000 , 000 m. Now the clock is slow by 2 μ s : b = − 2 × 1 0 − 6 s. (a) Find ρ . (b) What is ρ if the clock is perfect , b = 0 ?
Forecast: With a slow clock, is ρ bigger or smaller than truth this time?
Step 1 — bias to distance (keep the sign!).
c b = ( 3 × 1 0 8 ) ( − 2 × 1 0 − 6 ) = − 600 m .
Why this step? The sign of b carries the physics. Dropping it is the #1 arithmetic error.
Step 2 — pseudorange (a).
ρ = r + c b = 20 , 000 , 000 + ( − 600 ) = 19 , 999 , 400 m .
Why this step? A slow clock reports arrival too early ⇒ underestimated distance ⇒ ρ is smaller than truth.
Step 3 — the degenerate case (b), b = 0 .
ρ = r + c ( 0 ) = r = 20 , 000 , 000 m .
Why this step? When the bias vanishes, "pseudo"-range collapses to true range. This is the boundary that separates Cell C1 from Cell C2.
Verify: Recover truth in (a): ρ − c b = 19 , 999 , 400 − ( − 600 ) = 20 , 000 , 000 m ✓. In (b) ρ = r exactly ✓. Forecast: slow clock ⇒ smaller ρ .
Common mistake "Slow clock, so I subtract."
The clock bias enters as + c b always . When b is negative the "+" naturally reduces ρ . Don't hand-flip the sign; let the algebra do it.
A receiver reports pseudoranges to 4 satellites. After one solve iteration it finds the raw pseudoranges are all too long by a common 900 m. What clock bias b explains this, and why could 3 satellites never have told you?
Forecast: How many seconds of clock error hide behind 900 m?
Step 1 — invert the distance-to-time step.
b = c c b = 3 × 1 0 8 900 = 3 × 1 0 − 6 s = 3 μ s .
Why this step? The same surplus on every satellite is the fingerprint of the shared clock bias (parent note §1). One shared unknown, so one number to extract.
Step 2 — why 3 satellites fail. With 4 unknowns ( x , y , z , b ) and only 3 equations, the system is underdetermined. The 4th satellite supplies exactly the equation whose job is to pin b .
Verify: Push b back to a distance: c b = ( 3 × 1 0 8 ) ( 3 × 1 0 − 6 ) = 900 m ✓. This is precisely the common surplus we started from.
A 2D toy: two satellites with line-of-sight unit vectors e 1 = ( 1 , 0 ) and e 2 = ( 0 , 1 ) — a clean 9 0 ∘ apart. Compute DOP.
Forecast: For the best possible 2-satellite geometry, what's the smallest DOP you can get?
Step 1 — write G .
G = [ 1 0 0 1 ] .
Why this step? Each row is a line-of-sight direction; here they're the two axes.
Step 2 — form G ⊤ G and invert.
G ⊤ G = [ 1 0 0 1 ] = I , Q = ( G ⊤ G ) − 1 = I .
Why this step? DOP lives entirely in Q = ( G ⊤ G ) − 1 (parent §3).
Step 3 — read the DOP.
DOP = q xx + q y y = 1 + 1 = 2 ≈ 1.41.
Verify: Look at the left panel of the figure — the two range rings cross at a sharp right angle, so the shaded error box is a tight square. 2 is the geometric floor for two orthogonal directions. ✓
Now the two satellites are only 1 0 ∘ apart: e 1 = ( 1 , 0 ) , e 2 = ( cos 1 0 ∘ , sin 1 0 ∘ ) . Show the DOP explodes and say why.
Forecast: Will DOP roughly double , or grow by more than 10× ?
Step 1 — build G ⊤ G .
With cos 1 0 ∘ ≈ 0.9848 , sin 1 0 ∘ ≈ 0.1736 ,
G ⊤ G = [ 1 + cos 2 1 0 ∘ cos 1 0 ∘ sin 1 0 ∘ cos 1 0 ∘ sin 1 0 ∘ sin 2 1 0 ∘ ] = [ 1.9698 0.1710 0.1710 0.0302 ] .
Why this step? This 2×2 encodes how "spread out" the directions are.
Step 2 — the determinant is the danger signal.
det ( G ⊤ G ) = sin 2 1 0 ∘ ≈ 0.0302.
Why this step? Q = ( G ⊤ G ) − 1 divides by this determinant. Near-zero determinant ⇒ giant Q ⇒ giant DOP. A tiny determinant means the two line-of-sight vectors are almost parallel .
Step 3 — actual DOP. Inverting gives q xx ≈ 1.00 , q y y ≈ 65.3 , so
DOP = q xx + q y y = 1.00 + 65.3 ≈ 8.14.
Verify: Right panel of the figure — the rings graze at a shallow angle and the error box smears into a long ellipse. 8.14/1.41 ≈ 5.8 : the geometry alone multiplied your error nearly 6× without any change in measurement quality. Forecast answer: more than 10× worse area (length ~6×, so area ~34×). ✓
Let the angular spread be θ , with e 1 = ( 1 , 0 ) , e 2 = ( cos θ , sin θ ) . The clean 2-satellite result is DOP ( θ ) = ∣ sin θ ∣ 2 . Examine the two limits θ → 0 ∘ and θ → 9 0 ∘ .
Forecast: At which angle is DOP smallest, and what happens as the spread shrinks to zero?
Step 1 — the general formula. From det ( G ⊤ G ) = sin 2 θ one finds q xx + q y y = 2/ sin 2 θ , hence
DOP ( θ ) = ∣ s i n θ ∣ 2 .
Why this step? A single closed form lets us take clean limits instead of re-inverting matrices.
Step 2 — limit θ → 9 0 ∘ . sin 9 0 ∘ = 1 , so
DOP → 2 ≈ 1.41.
Why this step? This confirms Example D as the best case — DOP bottoms out when satellites are orthogonal.
Step 3 — limit θ → 0 ∘ . sin θ → 0 , so
DOP → + ∞.
Why this step? Perfectly parallel line-of-sight vectors give no independent information in the second direction — the fix is unbounded. This is the singular boundary of Cell C6.
Verify: Plug θ = 1 0 ∘ : 2 / sin 1 0 ∘ = 1.4142/0.17365 ≈ 8.14 ✓ — exactly Example E. The curve in the figure dives to 1.41 at 9 0 ∘ and rockets up as θ → 0 . Forecast: smallest at 9 0 ∘ ; blows up at 0 ∘ .
Your phone's receiver has a User-Equivalent Range Error of σ UERE = 6 m per satellite. The current satellite geometry gives PDOP = 2.5 . (a) What is the expected 3D position error? (b) The satellites drift and PDOP worsens to 8 . New error? (c) To keep error under 18 m in the bad geometry, how good must UERE become?
Forecast: Does halving the geometry quality (PDOP 2.5 → 8 , roughly 3×) also roughly 3× the position error?
Step 1 — the budget formula.
σ pos = PDOP × σ UERE .
Why this step? From covariance propagation (parent §3), geometry and measurement quality multiply — two independent knobs.
Step 2 — part (a).
σ pos = 2.5 × 6 = 15 m .
Step 3 — part (b).
σ pos = 8 × 6 = 48 m .
Why this step? Same UERE, worse geometry — the error scales linearly with PDOP.
Step 4 — part (c), invert the budget.
σ UERE = PDOP σ pos = 8 18 = 2.25 m .
Why this step? With geometry fixed at PDOP = 8 , the only lever left is measurement quality; solve the formula for it.
Verify: Check (c): 8 × 2.25 = 18 m ✓. Ratio in (b) vs (a): 48/15 = 3.2 , matching the PDOP ratio 8/2.5 = 3.2 ✓. Forecast: yes, error scales exactly with PDOP.
A receiver sees 5 satellites (4 unknowns), so the system Δ ρ = G Δ x is over-determined. Given a simple over-determined case
G = 1 1 1 , Δ ρ = 2 4 6 ,
find the least-squares update Δ x and explain why we can't solve it exactly.
Forecast: Will the answer be one of 2 , 4 , 6 , or something in between?
Step 1 — why not exact? Three equations Δ x = 2 , Δ x = 4 , Δ x = 6 contradict each other — measurement noise made them inconsistent. No single Δ x satisfies all three.
Why this step? Real GPS almost always has more satellites than unknowns; the fix is the best compromise , not an exact intersection.
Step 2 — apply the least-squares formula.
Δ x = ( G ⊤ G ) − 1 G ⊤ Δ ρ .
Here G ⊤ G = [ 1 + 1 + 1 ] = [ 3 ] and G ⊤ Δ ρ = [ 2 + 4 + 6 ] = [ 12 ] , so
Δ x = 3 12 = 4.
Why this step? For this one-column G , least squares is literally the average of the measurements — the point minimizing total squared residual.
Step 3 — read the residuals. Residuals are 2 − 4 = − 2 , 4 − 4 = 0 , 6 − 4 = + 2 ; they sum to zero, the signature of a least-squares fit.
Verify: ( G ⊤ G ) − 1 G ⊤ Δ ρ = 3 1 ( 2 + 4 + 6 ) = 4 ✓, which equals the mean 3 2 + 4 + 6 = 4 ✓. Forecast: it's in between — the average, 4.
Recall Self-test (open after trying)
Clock fast by b > 0 : is ρ bigger or smaller than r ? ::: Bigger — ρ = r + c b with c b > 0 .
Two satellites 9 0 ∘ apart give DOP = ? ::: 2 ≈ 1.41 , the floor.
As angular spread θ → 0 ∘ , DOP → ? ::: + ∞ — near-parallel LOS is singular.
With PDOP = 2.5 and UERE = 6 m, position error = ? ::: 15 m.
Over-determined single-column G : least squares gives the ? ::: mean of the measurements.
Error = Geometry × Measurement. DOP is the geometry knob (satellite spread), UERE is the measurement knob (signal quality). Turn either down to sharpen your fix.
See also: Trilateration and Multilateration · Least Squares Estimation · Covariance Propagation · Clock Bias and Atomic Clocks · Time of Flight and Ranging · Reference Frames — ECEF and WGS84 · Kalman Filter in GNC .