線形写像
入力→変換→出力の表現
『線形写像(Linear map)』というのは、ある種の関数の一般化とも言える。
例えばy = axのような一般的な関数、(x) = yの一般化。
「写像とはどういうものか」ベクトル、スカラー、線形、非線形の定義
数学における「一般化(generalization)」 とは、その考え方が利用できる具体的な範囲を広げる行為、つまりより普遍的なものへの組み換えである。
写像(mapping)というのは、コンピューター的な(あるいはあらゆることがそうであるような)「入力→変換→出力」というフローチャートの数学的な表現ともいえる。
「コンピューターの構成の基礎知識」1と0の極限を目指す機械 「ブラウザ」WEB表示の仕組み。レンダリングはいかにして行われるか?
フローチャートとは、デジタル(不連続)的に表現された一連の流れの図のこと。
段階を具体的に記した図といってもいい(注釈)。
基本的に「y = ax + C」のような式の(x) = yはCが0でないなら線形写像と呼ばれない。
なぜなら入力→変換→出力において、何も入力していなくとも何かが出力されてしまうことになるからだ。
入力が0ならば出力も必ず0でなければ、普通、写像とは呼ばないのである。
「ゼロとは何か」位取りの記号、インド人の発見
それと、一般的な形の写像、x→yがあれば、その入力xと出力yは実数とするのも、ほぼ暗黙の了解である。
「複素数とは何か」虚数はどれほど実在してないか。実数は本当にリアルか
(注釈1)ランダム関数は本当にランダムか
例えば50%の確率でAかBいずれかの文字を出力するマシンがあるとする。
そのプログラムのフローチャートはおそらく以下のようなものである。
「(1)ある変数xを定義」→「(2)xに1~100までの乱数(ランダムな数)を挿入」→「(3)xが50以下か51以上かで分岐」→「(4)AかBの出力」
当然このフローチャートはプログラミング言語によって異なるだろう。
「(1)AかBをそれぞれ50%の確率で出力」
特に簡単なものはこれだけで終わったりもする。
しかし今現在あるような一般的なプログラム言語では、どれだけ慣れ親しもうと、ある疑問が残ってしまうかもしれない。
それはひとつめのチャートの(2)の場合の乱数は、本当にランダムかということ。
まず電子コンピューターの入出力は一般的な形では線形写像である。
つまり入力→変換→出力において、入力した数字がわかっていて、どのような変換を行ったのかがわかっているなら、出力がランダムな数字になるということは絶対にありえない。
ようするにプログラムの中でよく使われるランダム関数というのが真にランダムであるということはありえない(注釈2)。
通常、プログラムにおけるランダム関数とは、さらに深層のプログラムで作り出されている擬似乱数(pseudorandom numbers)である。
つまり特定の、ランダムぽい数字を出すアルゴリズム(一般数式手順)で生成された数列の適当な~番目かの数とか。
あるいはそういうのを組み合わせて発生させられた(無雑作に選ばれたように見える)数字である。
(注釈2)そんなアルゴリズムが存在するのだとして
普通に考えたらそうなのだが実は諸説ある(これは個人的に非常にロマンのある考え方と思う)。
そもそも実質的に完全なランダムと変わらないような擬似乱数を生み出すことは可能かもしれないし、そうなると実質的に同じなのだから、それは完全なランダムとみなしてよいかもしれない。
しかし当たり前の話だが、複雑な計算をたくさん使えば使うほど、容量や時間は食うので、 おそらく完全にランダムな数字を出せるようなアルゴリズムが存在するのだとしても、それだけでやばい容量になるし、素早く起動させるにはすごいスペックがいる。
重ね合わせの原理と比例が成り立つ
簡単には線形写像とは、入出力される要素の、「重ね合わせの原理(superposition principle[)」と「比例(proportionality)」が成り立つような写像とされる。
重ね合わせの原理は、例えばaを入力するとAが出力され、bを入力するとBが出力されるような写像があるとして、a + b→A + Bが必ず成り立つこと。
比例は、あるいくつかの数において、 そのうちの一つが何らかの定数倍になった時、他の数も全て同じように(定数倍)増減するというもの。
つまり、a入力A出力、b入力B出力な写像において、ax→Ax、bx→Bx が成り立つような場合が、比例が成り立っている写像である。
仮にa→A、b→Bな写像Mがあり、a + bの入力に対し、何が出力されるかを求めるにはどうするか。
普遍的な方法としては、単純にa + bを求め、それを入力すればよい。
写像Mが線形だろうが非線形だろうが、後は勝手に答えが出力される。
しかし写像Mが線形の場合、別の方法もある。
a + b→A + B(重ね合わせの原理)が成り立つのだから、a、bから個別にA、Bを出力し、それらを足しても答は出せる(コラム1)。
(コラム1)しかしリアルにおける写像とは何か
冷静に考えたら世界は全て線形かもしれない。
究極的には。
つまりどんな複雑な動きをしようが(変換がなされようが)、エネルギー保存の法則が効いている限り、どこからか入力されたものは必ず同じだけの量出力される。
増大していくというエントロピーというのはランダム性だろうか。
仮にそれがランダム性なのだとして、逆にそれは複雑な疑似乱数と何が違うのだろう。
エントロピーとは何か。永久機関が不可能な理由。「熱力学三法則」
世界が線形だったとして、だからどうだというのだろうか。
重要なことは、線形の場合、例えばa→Aがわかると、入力がaxの場合のすべての数の出力結果もわかるということ。
つまり古臭い決定論的な世界観である。
宇宙のすべての要素がわかれば、それがどのような結果を引き起こしていくのかが完全に予測できることになってしまう。
有向線分をさらに一般化したベクトル
一般的に方向を定義できる量を『ベクトル』。
方向を定義できない量を『スカラー』と言う。
スカラーとベクトル
例えば人の力というものが気合いによって決まるとする。
力はどの方向にかかるかというものが定義できるからベクトルである。
しかし気合は、高めるか高めないかだけの量だからスカラーである(コラム2)。
現実でそれは何のベクトルであるかはともかくとして、あるベクトルの量は簡単に記述できる。
空間内に二つの点a、bを設定し、それらをつなぐ線分を「有向線分(Directed segment)」とする。
ちなみに出発点となる点aを「始点(source)しっぽ)、線分の末となるbを「終点(target)」 と言う。
基本的に始点aに何らかのベクトル量Pがかかった時、それによる作用の向きと長さを有向線分abとして定義できるとされる。
ただし有向線分というのは、空間内における位置を完全に特定している定義である。
ベクトルは、位置はどうでもいいと考える。
わかりやすく空間ベクトル(あるいは幾何学的ベクトル)と呼ばれることも多いが、例えばベクトルの線分abがあるとする。
そしてabと長さや向きはまったく一緒だが、空間の位置が異なっている別のベクトルABもあるとする。
空間ベクトルとしてはab = ABでよいとしている。
しかし有向線分としてみた場合、abとABは異なるわけである。
ようするに、向きを持つ力を空間的に明確に定義したものが有向線分。
そしてその有向線分をより一般化したものがベクトルと考えることもおそらくできる。
またベクトルabを簡潔にVとして、それをx倍する場合、すなわちxVの場合を考える。
xが0なら、xVは点aとなる。
xが1なら、xVはベクトルabと同じ。
xが3なら、xVはベクトルabの長さの3倍。
そしてxがマイナスの数なら、xVにおける終点は、aから見てbと反対の領域に置かれることになる。
(コラム2)時間は方向か
時間を考慮するとどうだろうか。
一見向きというものを持たない量であったとしても、時間という方向を進んでいるのではないだろうか。
方向とは何だろうか。
時間はある方向に進んでいるのだろうか。
「タイムトラベルの物理学」理論的には可能か。哲学的未来と過去 「特殊相対性理論と一般相対性理論」違いあう感覚で成り立つ宇宙
線型結合、従属、独立
ベクトル表現とデカルト座標
一直線上でない点a、b、cがあるとする。
aからbの有向線分をB、aからcの有向線分をCとする。
整数の変数xとyを(実用的にはxだけでもいいような気がするが、わかりやすくyも)用意する。
そしてBx、Cyを平面上の点として打っていき、 それら線分でつなげる。
さらに各点ごとに、それぞれの線分に対する平行線を書いていくと、格子状の平面図が現れてくる(結構無茶な点の取り方をしても、面白いくらいにそういう図面が現れる)。
一般的な(デカルト的な)座標空間においては、二次元空間なら例えばx軸とy軸をとれば、(x, y)というように、その空間上のある点を表すことができる。
同じようにベクトル表現では、格子状平面図の(例えば)B4とC5の点を、B4 + C5というように表せれる。
ようするに座標的な(x, y)とベクトル表現的なBx + Cyは基本的に同じものとみなせる。
そして二つのベクトルを使った二次元の上の平面図は、数というものが無限であることから明らかなように、どれほど大きな平面に当てはめることもできる。
何時まで平面上の点は全てBx + Cyというようなベクトル表現でも表せれる。
このような点の指定というのは、次元の数が増えたとしても、本質的にはあまり問題ないとされている。
例えば3次元空間の位置を(x, y, z)という座標で表せれるように、新たなベクトルDと変数zを用意し、Bx + Cy + Dzというベクトル表現で示せる。
それとBx + Cyに関しては、xやyが違っているのに、点が被るということはありえないことも、よく重要とされる。
平面上のある点は、必ずその点一つしかないと言い換えてもいいだろう。
基底の要素
Bx + Cyのような、複数のベクトルを定数倍して足し合わせた形を「線型結合(linear combination)」と言う。
足し合わせる要素の数はいくらでもいい。
そして、線型結合される各ベクトルを、その結合の「基底(basis)」などと言う。
基底のややかっこつけた言い方として「生成系(generated system)」というようなのがあるらしいが、こちらの方が真理に近いかもしれない。
実のところ生成系は、その結合の次元数分だけ必ずあること以外には、かなり自由に選べる。
ただし、生成系のさらなる基点となる始点と終点がかぶるゼロベクトルだけは使えない。
そんなベクトルは、実用的には存在しないのと同じというわけだろう。
また、明らかに各ベクトルの始点と終点同士がすべて一直線に並ぶような形の結合も不可能と考えられる(コラム3)
(コラム3)クリエイターはどう考えてたか
次元というものがまだ存在していな領域で、誰かが新しく次元を用意し、さらに、始点、生成系、ベクトル空間というように、世界を作っていったのかもしれない。
しかし最初のクリエイターは、それらが定義できない世界に生きている誰かだろうか?
それとも自分と同じ世界を作るために、そういうふうに定義したのだろうか?
「宇宙プログラム説」量子コンピュータのシミュレーションの可能性
二次元の定義
ところで、平面を作るのには普通二つだけでよいが、三つのベクトルをあえて使うこともできる。
例えば2a + 3bという点は2a + 3b + 0cというふうにも表せれる。
あるいはa + 2b + cというふうにも書けるかもしれない。
これはどんなパターンでやっても、cは単体で見た場合、それ自体がa、bの結合の点ということになってしまう。
計算上、cはまったく無意味であり、そして上記から明らかなように、「平面上のある点は、必ずその点一つしかない」というのが嘘になってしまう。
例えば2a + 3bという点が2a + 3b + 0cでもあるし、a + 2b + cでもあるということになる。
そういう感じの、ベクトルの「集合(set)」があって、そのうちの一つのベクトルが他のベクトルの結合である場合を「線形従属(Linear dependence)」と言う。
座標空間で表した時に、被ってしまう点があるような(基底)ベクトル集合が線形従属とも言えよう。
というか線形従属は、ある空間の基底とするには普通に不適当である。
そしてまた、線形従属でないベクトル集合は「線形独立(Linear independence)」とか呼ばれる。
平面が二次元であると言われるのは、基底ベクトルが二つの線形独立以外ではありえないからとも言える。
ベクトル空間はどう使われるか
普通あるようなどのような領域もベクトル空間で表現することは実際的には可能とされる。
ただそれを表現するための基底の数は必ず同じと考えられている。
だから6次元が実は7次元でもあるということはありえないし、134次元が実は5次元でもあるということもありえない。
また現在は、ベクトル空間というのはかなり幅広く応用されているため、n次元の空間という時、それが本当に文字通りの次元空間なのかどうかは注意する必要がある。
なんなら、ベクトルが本当に方向を明確に持ってる量を定義してるものかすら、なかなか怪しいこともある。
座標の変換
座標空間における座標軸の変更とは、ベクトル空間における基底の変更と実質同じである。
そして基本的にはベクトル表現を使った変換は結構簡単で、座標軸を変換したい場合の助けにもなるとされる。
例えばベクトルA、Bを基底とした空間と、C、Dを基底とした空間があるとする。
一般的に座標軸(基底ベクトル)の変換とは、AB系で座標x, yの点が、CD系ではどんな座標X, Yなのか、を調べることにも等しい。
一般的にこれは、変換先のベクトルの基底となる点が、 変換前のベクトル空間では、どの点かを知ればよい。
例えばAB系において、点Cが(v, w)、点Dが(V, W)とする。
ベクトルで現せば点CはAv + Bw、点DはAV + BWということになる。
そして、AB系に変換したい点座標ZがCD系において(t, u)とする。
つまりベクトル的にはCt + Du。
ここのC、DにAB系での座標を代入する。
つまりZ = t(Av + Bw) + u(AV + BW)。
仮にZが(2、1)。
さらにCが(A4 + B)、Dが(A2 + B3)とする。
そしたらZ = 2(A4 + B) + (A2 + B3)。
つまりZ = A10 + B5。
これはZがAB系では(10, 5)であることを意味している。
ベクトル空間の基底の変換はこのようにできる。
n次元の線形写像
あるn次元のベクトル空間の基底を「1A、2A、3A、……nA」とする(Aにつけてる数字やnが、ただ別のものだと表すための記号というだけで係数でもなんでもないことに注意)。
もし今それらの基底の一般的な写像変換後の値がわかったとする。
つまり「1A→1a、2A→2a、3A→3a、……nA→na」だとわかったとする。
線形写像の場合は、入出力前後の比例関係と重ね合わせの原理が成り立つから、ある基底ベクトルの変化を知れたら、空間の他の全写像の結果も予測可能になる。