数学C / 本質理解型教材
向きと大きさを持つ不思議な「矢印の数」。図形を計算で解き明かすための基礎を学びます。
「東へ3歩進んでから、北へ4歩進む」。このときの最終的な移動は、スタート地点から見れば「北東へ5歩」の移動になります。
しかし、普通の数字(3や4)の足し算だけでは、この「北東へ5歩」という結果をうまく計算できません。私たちの暮らす世界では、移動・力・風・速度のように、大きさだけでなく**向き**も一緒に考えなければならない量がたくさん存在します。こうした向きつきの量をまるごと計算するための道具が必要です。
ベクトルは、紙の上に描かれた**矢印**として視覚化されます。ここで最も重要なルールは、ベクトルは「どこから始まっているか(始点)」を気にしないということです。
どんなに離れた場所に描かれていても、**向きと長さ(大きさ)が同じであれば、それらはすべて「同じベクトル」**とみなします。この「スタート地点に縛られない」という自由さこそが、複雑な図形をシンプルに計算できる最大の強みになります。
向きのある量であるの計算は、矢印の操作として直感的に理解できます。
ベクトルの足し算 \(\vec a + \vec b\) は、**「矢印 \(\vec a\) の先に、もうひとつの矢印 \(\vec b\) を継ぎ足す」**ことで表されます。そのスタートとゴールを直接結んだ新しい矢印が、足し算の結果です。また、ベクトルを何倍かする(実数倍)ことは、向きを変えずに長さを伸ばしたり縮めたり(伸縮)することに対応します。たとえば、\(2\) 倍すれば長さは \(2\) 倍になり、\(-1\) 倍すれば**逆向き**のベクトルになります。
▶ 使いどころ:川を斜めに泳ぐときの「進む方向」(自分の泳ぐ速度ベクトル + 川の流れる速度ベクトル)や、風の中を飛ぶ飛行機の実際の進路(機体の推力ベクトル + 風のベクトル)。
矢印という「絵」を数式で精密に計算するために、**成分表示**を使います。これは、矢印を「横にどれだけ進み、縦にどれだけ進むか」という数値のペア \((a_1, a_2)\) に翻訳する仕組みです。
成分を使うと、ベクトルの足し算は単に「横どうし、縦どうしを足すだけ」になります。また、三平方の定理を使うことで、ベクトルの「大きさ(長さ) \(|\vec a|\)」も次のように計算できます。
たとえば、成分が \((3, 4)\) であるベクトルの大きさは \(\sqrt{3^2 + 4^2} = 5\) になります。このように、**直感的な「絵(矢印)」と、正確な「数(成分)」の二重表現**を自由に行き来できるのが、ベクトルの本質的な便利さです。
▶ 使いどころ:ゲームプログラミング。キャラクターの画面上の位置座標に、毎フレーム「速度ベクトル \((v_x, v_y)\)」を足し算することで、滑らかな移動をプログラムできます。
ベクトルどうしを「掛け算」するにはどうすればよいでしょうか? 成分どうしをそのまま掛け算してしまうと、ベクトルの向きの性質が完全に消えてしまいます。
そこで、2つの矢印が**「どれだけ同じ向きを向いているか」**を掛け合わせる特別な掛け算としてを定義します。記号は「 \(\cdot\) 」を使い、次のように計算します。
ここで重要なのは、ベクトルどうしの掛け算であるにもかかわらず、**内積の計算結果は「ベクトル(矢印)」ではなく「ただの数(スカラー)」になる**という点です。
内積の幾何学的な意味は、一方の矢印がもう一方の矢印に落とす**「影」**にあります。角度 \(\theta\) が鋭角(\(90^\circ\) 未満)なら影は正の方向へ伸び、直角(\(90^\circ\))なら影の長さはゼロになり、鈍角(\(90^\circ\) より大きい)なら影は逆方向(負)へ伸びます。
特に、次の**「垂直条件」**は図形の直角を証明するための最も強力なツールです。
▶ 使いどころ:物理の「仕事」の計算。物体に加えた力ベクトル \(\vec F\) と移動ベクトル \(\vec s\) の内積 \(W = \vec F \cdot \vec s\) によって、どれだけ効率よく仕事が行われたかが決まります。
内積の真価は、成分表示を使ったときに現れます。角度 \(\theta\) が直接わからなくても、成分を使うと内積は次のシンプルな式で計算できます。
「それぞれの成分を掛けて足す」だけで、図形的な情報(長さや角度)が勝手に計算されてしまいます。
たとえば、ベクトル \((1, 0)\) と \((1, 1)\) の内積は、\(1\times1 + 0\times1 = 1\) です。それぞれの大きさは \(1\) と \(\sqrt{2}\) ですから、内積の定義式に当てはめると \(\cos\theta = \frac{1}{\sqrt{2}}\) となり、なす角 \(\theta\) が確かに \(45^\circ\) であることが計算だけで導けます。
▶ 使いどころ:AIのセマンティック検索や推薦システム。単語や商品を数千次元のベクトルで表現し、それらの「成分の内積」を高速計算することで、ユーザーの好みに近いものを瞬時に見つけ出します。
内積の式を変形すると、2つのベクトルのなす角 \(\cos\theta\) を求める式が得られます。
この \(\cos\theta\) は、2つのベクトルの「向きがどれくらい揃っているか」を \(-1\) から \(1\) の間の値で表したものです。ベクトルを「ある物事の特徴を並べたデータ」とみなせば、この値はデータどうしの**「類似度(似ている度合い)」**そのものを表す指標になります。
▶ 使いどころ:音楽アプリのおすすめ機能。ユーザーのジャンルの好みをベクトル化し、他ユーザーとのベクトルのなす角を計算して、好みが極めて近い(角度が小さい)人を判定します。
これまでベクトルを「自由に動かせる矢印」として扱ってきましたが、あえて基準となる原点 \(O\) を1つ固定してみましょう。
すると、すべての点 \(A, B, \dots\) は、原点 \(O\) から引いた矢印 \(\vec a, \vec b, \dots\) と1対1に対応します。この原点を始点としたベクトルのことをと呼びます。これによって、「点の位置」そのものを数式で足したり引いたりできるようになります。たとえば、2点 \(A, B\) のちょうど真ん中にある中点 \(M\) の位置ベクトル \(\vec m\) は、単に2つのベクトルの平均になります。
▶ 使いどころ:3Dグラフィックス。無数にあるポリゴン(多角形)の頂点の位置ベクトルの平均を計算することで、その立体の正確な「重心」を瞬時に算出できます。
2点 \(A, B\) を \(m : n\) に分けるのベクトルは、次の公式で表されます。
この式は、値が近い(比が強い)点の方へより強く引っ張られる「シーソーのバランス」と同じ構造をしています。たとえば、\(A(0,0)\) と \(B(6,3)\) を \(2:1\) に分ける点は、\(B\) に近い側に引き寄せられ、計算すると \((4, 2)\) になります。
▶ 使いどころ:CGアニメーションの「キーフレーム補間」。前後のコマ(ポーズベクトルAとB)の間を、時間比率 \(t : (1-t)\) で重み付き平均(内分)することで、滑らかなアニメーションを自動生成します。
直線を「点 \(\vec a\) を通り、方向 \(\vec d\) へ進む軌跡」として表現した数式を、直線のと呼びます。
ここで \(t\) は(パラメータ)と呼ばれ、この数値を連続的に変えることで、直線上のすべての点を一本のペンでなぞるようにスキャンできます。この「変数をつまみのように動かして図形を描く」という発想は、この先の高度な曲線を描くための最も基礎的な土台となります。
▶ 使いどころ:ゲームの物理衝突シミュレーション(レイトレーシングなど)。銃弾や光の軌道を \(\vec a + t\vec d\) として表し、\(t\) を進めながら他の物体の範囲と重なるかを計算して命中判定を行います。
「向きのある量」を矢印で表す
↓
成分表示で数と結びつく(計算可能に)
↓
内積で「向きの揃い具合」を掛け算する
↓
位置ベクトルで「点」を矢印にして動かす
↓
ベクトル方程式で直線や軌跡をスキャンする
※この教材では、空間ベクトルの計算や、直線の法線ベクトル・距離公式、外積に相当する面積公式などは扱いませんでしたが、これらはすべて今回の平面ベクトルの考え方から自然に組み立てることができます。