基底の変換行列|列の並べ方から相似変換まで
同じベクトルでも、どの基底で測るかによって座標の数値は変わる。基底を取り替えたときに座標がどう動くかを表すのが、基底の変換行列である。
の列には、新しい基底を古い基底で表した座標が並ぶ。基底が新しいほうへ動くと、座標は逆行列のほうへ動く。この向きの食い違いが、この話のいちばんの山になる。
変換行列の定義
を 次元のベクトル空間とし、 と を 2 つの基底とする。
新しい基底のベクトルは、古い基底の一次結合で書ける。
この係数を第 列に並べた行列 を、 から への基底の変換行列という。列が新しい基底の座標である、という点だけ押さえておけばよい。
記号や向きの取り方は本によって違う。 を掛ける向きがどちらか、毎回確かめてから使う。
例:標準基底から新しい基底へ
平面で標準基底から次の組へ取り替える。
標準基底で測った座標は、成分そのものである。したがって、この 2 本をそのまま列に並べれば変換行列になる。
標準基底が絡む場合は、書き下すだけで行列ができあがる。連立方程式を解く必要はない。
座標は逆行列で移る
新しい基底での座標に を掛けると、古い基底での座標になる。逆向きの変換は逆行列で書ける。
つまり、新しい座標を求めたいときは逆行列のほうを使う。基底の並べ方と座標の動き方が、ちょうど逆になっている。
例:座標を求める
先ほどの を使い、 の新しい座標を求める。行列式が なので逆行列は次のようになる。
これを に掛けると が得られる。実際に を計算すると になり、もとのベクトルに戻る。
同じ点が、標準基底では 、新しい基底では と呼ばれることになる。
例:3 次元で取り替える
新しい基底を 、、 とする。列に並べた行列の行列式は 2 なので、正則である。
逆行列を求めると、成分がすべて の行列になる。
に掛けると、新しい座標は である。実際に を計算すると に戻る。
なぜ逆行列が出るのか
理由は、基底と座標がベクトルを挟んで釣り合っているところにある。 を 2 通りに書き下してみる。
右の式で を古い基底に展開すると、 の係数は になる。座標の一意性から、これが に等しい。
これを行列で書いたものが である。 は新しい基底を古い基底へ展開するために使われるので、座標に対しては逆向きに働く。
変換行列は恒等写像の表現行列
見方を変えると、 は何も動かさない写像の表現行列である。入口の基底を 、出口の基底を に取ったときの恒等写像がそれにあたる。
写像としては何もしていないのに、行列が単位行列にならない。入口と出口で目盛りが違うからである。
この見方に立つと、後で出てくる規則がすべて表現行列の話に吸収される。取り替えを続けたときに積になることも、恒等写像の合成として説明できる。
基底と座標は逆向きに動く
基底のベクトルを 2 倍に伸ばすと、同じ点を指すのに必要な係数は半分になる。目盛りを粗くすれば、読み取る数値は小さくなる。
<svg viewBox="0 0 460 210" width="100%" style="max-width:460px;display:block;margin:0 auto">
<text x="115" y="24" font-size="11" fill="#1f1f1f" text-anchor="middle">もとの基底</text>
<line x1="30" y1="160" x2="210" y2="160" stroke="#c8c8c8" stroke-width="1"></line>
<line x1="55" y1="185" x2="55" y2="50" stroke="#c8c8c8" stroke-width="1"></line>
<line x1="55" y1="160" x2="95" y2="160" stroke="#1b81e0" stroke-width="2"></line>
<polygon points="100,160 91,156 91,164" fill="#1b81e0"></polygon>
<circle cx="175" cy="160" r="3.5" fill="#d0562a"></circle>
<text x="70" y="178" font-size="11" fill="#1b81e0">e</text>
<text x="160" y="146" font-size="11" fill="#d0562a">座標 3</text>
<line x1="95" y1="168" x2="135" y2="168" stroke="#c8c8c8" stroke-width="1"></line>
<line x1="135" y1="168" x2="175" y2="168" stroke="#c8c8c8" stroke-width="1"></line>
<text x="340" y="24" font-size="11" fill="#1f1f1f" text-anchor="middle">基底を 2 倍にする</text>
<line x1="255" y1="160" x2="435" y2="160" stroke="#c8c8c8" stroke-width="1"></line>
<line x1="280" y1="185" x2="280" y2="50" stroke="#c8c8c8" stroke-width="1"></line>
<line x1="280" y1="160" x2="360" y2="160" stroke="#1b81e0" stroke-width="2"></line>
<polygon points="365,160 356,156 356,164" fill="#1b81e0"></polygon>
<circle cx="400" cy="160" r="3.5" fill="#d0562a"></circle>
<text x="315" y="178" font-size="11" fill="#1b81e0">2e</text>
<text x="378" y="146" font-size="11" fill="#d0562a">座標 1.5</text>
<text x="230" y="200" font-size="11" fill="#9a9a9a" text-anchor="middle">同じ点でも、目盛りを粗くすると読み取る数値は小さくなる</text>
</svg>平面全体で見ると、格子の目が変わることに対応する。点は動かず、点に付ける名前だけが変わる。
<svg viewBox="0 0 460 200" width="100%" style="max-width:460px;display:block;margin:0 auto">
<text x="230" y="22" font-size="11" fill="#9a9a9a" text-anchor="middle">同じ点に、2 通りの座標がつく</text>
<line x1="60" y1="150" x2="400" y2="150" stroke="#c8c8c8" stroke-width="1"></line>
<line x1="150" y1="180" x2="150" y2="45" stroke="#c8c8c8" stroke-width="1"></line>
<line x1="150" y1="150" x2="330" y2="60" stroke="#9a9a9a" stroke-width="1" stroke-dasharray="4 3"></line>
<line x1="150" y1="150" x2="290" y2="180" stroke="#9a9a9a" stroke-width="1" stroke-dasharray="4 3"></line>
<line x1="150" y1="150" x2="196" y2="127" stroke="#1b81e0" stroke-width="2"></line>
<polygon points="201,124 191,124 194,131" fill="#1b81e0"></polygon>
<line x1="150" y1="150" x2="185" y2="158" stroke="#d0562a" stroke-width="2"></line>
<polygon points="190,159 181,161 182,154" fill="#d0562a"></polygon>
<circle cx="288" cy="128" r="4" fill="#1f1f1f"></circle>
<text x="200" y="118" font-size="11" fill="#1b81e0">v1</text>
<text x="192" y="172" font-size="11" fill="#d0562a">v2</text>
<text x="296" y="122" font-size="11" fill="#1f1f1f">同じ点</text>
<text x="230" y="190" font-size="11" fill="#9a9a9a" text-anchor="middle">格子の目が変わるだけで、点そのものは動かない</text>
</svg>点を動かす操作とは別物である
基底の取り替えでは、空間の点は 1 つも動かない。動くのは、点に付けた座標という名前だけである。
線形写像を施す操作とは向きが逆になる。 を座標に掛ける計算だけを見ると同じ形だが、意味していることが違う。
同じ行列が、写像の表現行列としても変換行列としても現れる。どちらの意味で使っているのかを、そのつど区別しておく。
変換行列は必ず正則である
には逆行列が必ず存在する。新しい組が基底であることと、 が正則であることが同値だからである。
行列式が 0 なら、新しい組のどれかが他の一次結合になっている。それでは全体を張れないので、基底になれない。
逆に が正則なら、逆向きの取り替えも同じ形で書ける。 が から への変換行列になる。
例:正則でない組は基底にならない
と を新しい基底にしようとする。並べた行列の行列式は である。
第 2 のベクトルが第 1 の 2 倍なので、この 2 本では平面を張れない。座標が決まらない点が出てしまう。
変換行列を作る前に行列式を確かめれば、この種の取り違えは防げる。
2 つの基底がどちらも標準でない場合
新しい基底を古い基底で表す作業が必要になる。列ごとに連立方程式を解くか、標準基底を経由すればよい。
標準基底から への行列を 、標準基底から への行列を とする。すると から への変換行列は になる。
いったん標準基底へ戻してから進む、と読める。手計算では、この経由のほうが速いことが多い。
例:2 つの基底の間の変換行列を作る
と を取る。 の各ベクトルを で表す。
は である。 は になる。
での座標が の点は、 では である。実際にどちらの式で計算しても、点は になる。
取り替えを続けると積になる
基底を から へ、さらに へ取り替える。それぞれの変換行列を 、 とする。
このとき から への変換行列は である。座標のほうは と を順に掛けることになる。
順序を取り違えると別の行列になる。行列の積は交換できないので、どちらの取り替えが先かをはっきりさせておく。
逆向きの取り替えは逆行列
から への変換行列が なら、 から へは である。往復すれば単位行列に戻る。
これは前節の規則の特別な場合でもある。 から へ行って戻れば、基底は変わっていない。
例:往復すると単位行列に戻る
先ほどの を 2 乗すると になる。したがって である。
と を掛ければ単位行列である。座標の側で見ると、変換して戻せば元の数値に戻るということになる。
正規直交基底どうしなら直交行列になる
どちらの基底も正規直交なら、変換行列は直交行列になる。列が正規直交ベクトルそのものだからである。
このとき逆行列を求める必要がない。転置を取るだけで、逆向きの変換行列が手に入る。
長さと角度が保たれるので、座標を取り替えても内積の値は変わらない。直交座標系を回すだけの操作にあたる。
例:直交行列になる取り替え
先ほどの 2 本を長さ 1 にそろえる。
各列の長さは 1 で、2 列は直交している。 を計算すると単位行列になる。
正規化する前の は直交行列ではない。列の長さが なので、逆行列は転置と一致しない。
多項式の空間でも同じ手順が使える
数ベクトル空間でなくても、基底さえあれば同じ話になる。2 次以下の多項式の空間で、 から へ取り替えてみる。
新しい基底を古い基底で表すと、 などとなる。係数を列に並べる。
上三角で対角成分が 1 なので、行列式は 1 である。正則なので、新しい組もきちんと基底になっている。
例:x の多項式を x-1 の多項式に書き直す
の新しい座標を求める。古い座標は である。
を計算すると、対角の上の符号が変わって になる。これを掛けると新しい座標は である。
右辺を展開すれば に戻る。テイラー展開で中心をずらす操作が、基底の取り替えとして書けている。
表現行列の変わり方
線形写像の表現行列も、基底を取り替えると変わる。 での表現行列を 、 での表現行列を とすると次の関係になる。
右から で座標を古いほうへ直し、 で写し、 で新しいほうへ戻す、という 3 段階である。
この形の関係を相似という。同じ写像を別の基底で見ているだけなので、固有値や行列式のように基底によらない量は変わらない。
他の話題とのつながり
表現行列の作り方そのものは、線形写像の表現行列の記事で扱う。基底を選ぶと写像が行列になる、という対応がそちらの主題である。
相似な行列の性質や、どの不変量が保たれるかは相似の記事にある。対角化は、表現行列がいちばん簡単になる基底を探す操作だと読める。
正規直交基底へ取り替える手続きは、グラム・シュミットの正規直交化である。そこで作った基底なら、変換行列は直交行列になる。












