Math World Lab

GPS測位の仕組み(三点測量)

距離を半径とする円(球)の交点を求めるだけで、地上の位置が一点に定まる幾何学

この単元の発見をシェア
3行要約(Key Takeaways / AIOサマリー)
1
GPSは、複数の衛星から受信機までの距離(電波の到達時間 × 光速)を測定し、各衛星を中心とする「距離circle」の交点として受信機の位置を求める(トリラテレーション、三点測量)
2
平面(2次元)上で位置を一意に決めるには、距離の情報だけでは円の交点が2つ生じてしまうため、最低3つの衛星(3つの円)からの距離情報が必要になる
3
実際のGPSは3次元空間+時刻のずれ(受信機の時計誤差)という4つの未知数を持つため、通常4機以上の衛星からの信号を使って連立方程式を解いている

なぜこれを学ぶのか? — 現実社会とテクノロジーでの価値

Purpose & Motivation

なぜ生まれたのか?

GPSは、複数の衛星から受信機までの距離(電波の到達時間 × 光速)を測定し、各衛星を中心とする「距離circle」の交点として受信機の位置を求める(トリラテレーション、三点測量)

身につく武器・思考力

平面(2次元)上で位置を一意に決めるには、距離の情報だけでは円の交点が2つ生じてしまうため、最低3つの衛星(3つの円)からの距離情報が必要になる

実社会・ITでの活躍現場

  • •GPS受信機における2次元トリラテレーション(三点測量)の位置計算
  • •ITシステム・アルゴリズム実装における論理設計
  • •データ分析やシミュレーションにおける数理モデリング

Layer 1 — 直感・シミュレーター

3つの「衛星」の点をドラッグして自由に配置し、それぞれの半径(測定距離)もスライダーで調整してみよう。各衛星を中心とする円が描かれ、3つの円が重なる1点(受信機の推定位置、緑の点)がリアルタイムに計算・表示される。衛星を2個だけに減らすモードに切り替えると、円の交点が2つ残ってしまい位置が一意に定まらない様子も確認できる。

「衛星」の点をドラッグし、各半径(測定距離)を調整してみよう。3つの円が重なる1点が受信機の推定位置になる。
衛星A 測定距離2.50
衛星B 測定距離2.20
衛星C 測定距離3.00
推定受信機位置: (0.23, 0.78)

3つの円の連立方程式 (x−xi)2+(y−yi)2=di2(x-x_i)^2+(y-y_i)^2=d_i^2 を解いて、緑の点として一意に求まっています。

↑ GPSは衛星からの距離を半径とする円(実際は3次元の球)の交点を求めるトリラテレーション(三点測量)で位置を計算します。平面上で一意に位置を決めるには最低3つの距離情報が必要です。

直感チェック!ミニクイズ

平面(2次元)上で、GPS受信機の位置をただ一点に絞り込むために、原理的に最低何個の衛星(距離情報)が必要か?

Layer 2 — 定義・受験・証明

定義

衛星 ii の位置を (xi,yi)(x_i, y_i)、その衛星から受信機 (x,y)(x, y) までの測定距離を did_i とすると、三平方の定理(距離公式)より次の関係が成り立つ。

(x−xi)2+(y−yi)2=di2(i=1,2,3,…)(x-x_i)^2 + (y-y_i)^2 = d_i^2 \qquad (i = 1, 2, 3, \ldots)

これは中心 (xi,yi)(x_i,y_i)、半径 did_i の円の方程式であり、受信機の位置 (x,y)(x,y) はこの円周上のどこかにある。複数の衛星から得られる円の方程式を連立させ、共通の交点を求める処理が「トリラテレーション(三点測量)」である。

公式・数理モデル

(x−xi)2+(y−yi)2=di2  (i=1,2,3)  ⟹  (2(x2−x1)2(y2−y1)2(x3−x1)2(y3−y1))(xy)=(d12−d22+x22−x12+y22−y12d12−d32+x32−x12+y32−y12)(x-x_i)^2+(y-y_i)^2=d_i^2 \;(i=1,2,3) \;\Longrightarrow\; \begin{pmatrix}2(x_2-x_1) & 2(y_2-y_1)\\ 2(x_3-x_1) & 2(y_3-y_1)\end{pmatrix}\begin{pmatrix}x\\y\end{pmatrix} = \begin{pmatrix}d_1^2-d_2^2+x_2^2-x_1^2+y_2^2-y_1^2\\ d_1^2-d_3^2+x_3^2-x_1^2+y_3^2-y_1^2\end{pmatrix}

証明・導出

非線形の連立方程式を線形化して解く導出: 3つの円の方程式は

(x−x1)2+(y−y1)2=d12(1)(x-x_1)^2+(y-y_1)^2=d_1^2 \quad(1)

(x−x2)2+(y−y2)2=d22(2)(x-x_2)^2+(y-y_2)^2=d_2^2 \quad(2)

(x−x3)2+(y−y3)2=d32(3)(x-x_3)^2+(y-y_3)^2=d_3^2 \quad(3)

このままでは x2,y2x^2, y^2 の項を含む非線形の連立方程式だが、式(2)から式(1)を引くと、x2,y2x^2, y^2 の項が完全に相殺される。

(x−x2)2−(x−x1)2+(y−y2)2−(y−y1)2=d22−d12(x-x_2)^2-(x-x_1)^2 + (y-y_2)^2-(y-y_1)^2 = d_2^2-d_1^2

展開すると、

2(x1−x2)x+2(y1−y2)y=d22−d12−x22+x12−y22+y122(x_1-x_2)x + 2(y_1-y_2)y = d_2^2-d_1^2-x_2^2+x_1^2-y_2^2+y_1^2

これは x,yx, y に関する「線形」な直線の方程式である(幾何学的には、2つの円の交点を結ぶ直線=根軸に対応する)。同様に式(3)から式(1)を引くともう1本の線形な直線の方程式が得られる。 この2本の連立一次方程式を行列表示すると上記の公式のようになり、逆行列(またはクラメルの公式)を用いて (x,y)(x, y) を一意に解くことができる。

【なぜ2個の円では一意に決まらないか】 円1個の情報だけでは、条件を満たす点は円周上の無限個。円2個(式(1)(2))を連立させると、上記の引き算により得られる1本の直線と、元の円1個との交点を求めることになり、直線と円は一般に2点で交わる(2次方程式の解が2つ)。この2つの交点のどちらが正しい受信機位置かを絞り込むために、3個目の円(衛星)の情報が必要になる。

押さえておきたいポイント

  • GPSでは実際には距離ではなく電波の「到達時間」を測定するため、光速 cc を用いて di=c×(到達時間)d_i = c \times (\text{到達時間}) と変換している
  • 受信機の時計は衛星の原子時計ほど正確ではないため、時刻のずれ δt\delta t という4つ目の未知数が加わり、3次元位置 (x,y,z)(x,y,z) と合わせて未知数は4つになる。そのため実運用では4機以上の衛星が必要
  • この「複数の距離(円・球)の交点から位置を求める」手法はトリラテレーション(trilateration)と呼ばれ、角度を使う三角測量(triangulation)とは区別される
  • Wi-Fi測位やインドアの音波・電波を使った位置推定(UWB測位など)にも同じトリラテレーションの数学が応用されている
参照基準・学習指導要領との対応

本トピックの内容・数理モデルは、文部科学省学習指導要領(算数・数学・情報)および国際標準カリキュラムに準拠し、エンジニアリング現場の実装事例と照らし合わせてMath World Lab編集部により検証・作成されています。

Layer 3 — 工学応用・現場実装

GPS受信機における2次元トリラテレーション(三点測量)の位置計算

3つの衛星(基準点)の座標と、それぞれから受信機までの測定距離をもとに、円の方程式の差分をとって線形連立方程式に帰着させ、受信機の推定位置を計算する簡略化されたトリラテレーション実装。

1type Point = { x: number; y: number };
2
3// 3つの衛星の位置と、そこから受信機までの測定距離からトリラテレーションで位置を推定
4function trilaterate(
5 p1: Point, d1: number,
6 p2: Point, d2: number,
7 p3: Point, d3: number
8): Point {
9 // 円の方程式の差分をとり、線形連立方程式 A * [x, y]^T = b に帰着
10 const A11 = 2 * (p2.x - p1.x);
11 const A12 = 2 * (p2.y - p1.y);
12 const A21 = 2 * (p3.x - p1.x);
13 const A22 = 2 * (p3.y - p1.y);
14
15 const b1 =
16 d1 ** 2 - d2 ** 2 - p1.x ** 2 + p2.x ** 2 - p1.y ** 2 + p2.y ** 2;
17 const b2 =
18 d1 ** 2 - d3 ** 2 - p1.x ** 2 + p3.x ** 2 - p1.y ** 2 + p3.y ** 2;
19
20 // クラメルの公式で2元連立一次方程式を解く
21 const det = A11 * A22 - A12 * A21;
22 if (Math.abs(det) < 1e-9) {
23 throw new Error("衛星が一直線上にあり、位置を一意に決定できません");
24 }
25
26 const x = (b1 * A22 - b2 * A12) / det;
27 const y = (A11 * b2 - A21 * b1) / det;
28 return { x, y };
29}
30
31// 例: 3つの衛星(基準局)の座標と測定距離
32const satelliteA: Point = { x: 0, y: 0 };
33const satelliteB: Point = { x: 10, y: 0 };
34const satelliteC: Point = { x: 5, y: 10 };
35
36const receiverPosition = trilaterate(
37 satelliteA, 7.07,
38 satelliteB, 7.07,
39 satelliteC, 7.07
40);
41
42console.log(`推定受信機位置: (${receiverPosition.x.toFixed(2)}, ${receiverPosition.y.toFixed(2)})`);
この単元につながる学習ロードマップ

次に学ぶならコレ!おすすめトピック

この単元と深い繋がりを持つ、あわせて学ぶと理解が深まるおすすめ単元

数理モデル・概念が近い関連トピック

関連度高高校数学

正弦定理と余弦定理(三角測量)

直接行けない遠方の山や島までの距離を「角度」から精密に測る測量・GPSの基礎数学

関連度高工学応用

当たり判定アルゴリズムの数学

2点間の距離公式と座標の不等式だけで、ゲームの「衝突」を判定する仕組み

関連度高中学数学

三平方の定理

直角三角形の3辺に隠れた面積の等式

同じレベルで次に挑戦したいトピック

同レベル推薦工学応用

勾配降下法

谷底を探すAIの基本アルゴリズム

同レベル推薦工学応用

ニューラルネットワークの数学(順伝播と活性化関数)

入力に重みを掛けて足し合わせ、非線形関数で発火させるAIの基本素子

同レベル推薦工学応用

レコメンドの仕組み(コサイン類似度とベクトル検索)

ユーザーの好みと商品の近さを「ベクトルのなす角」で判定するアルゴリズム

工学・実社会での応用先でつながるトピック

"PASS"c=mᵉ%n
工学・実践連携工学応用

RSA暗号と素数の秘密(公開鍵暗号)

「掛け算は簡単だが、素因数分解は極めて困難」という非対称性を利用した現代暗号の金字塔

工学・実践連携工学応用

最短経路探索(ダイクストラ法とA*アルゴリズム)

グラフ上の無数のルートから「最もコストが小さい道」を一瞬で見つけ出す数学

工学・実践連携工学応用

セル・オートマトン(ライフゲーム)

たった4つの単純なルールから、生命のような自己組織化と複雑系が創発する

あなたの数学力をさらに伸ばす

数学の弱点診断や算数パズルに挑戦してみませんか?

簡単な質問に答えてあなたにぴったりの学習ロードマップを発見したり、直感を試すパズルで数の面白さを体験できます。