18 奥義
ソラは、カウンター席に座って、先週のジンの講義で線形代数という単語が初めて出てきたときのことを振り返る。
――あのときは、対角でない一般の行列を対角行列みたいに簡単に扱えるようにする技術や知識ってなんだろう、って思ったなあ。まさか、あの後すぐに線形代数の奥義が登場するとは思わなかった。
そのときのジンの講義では、最初に線形代数の知識として、一般の行列が対角行列と同じようにふるまう例が一つ挙げられた。
「正則な対角行列では、その逆行列と掛けるとき、順番を逆にしても単位行列になることは分かるじゃろう。実は、一般の行列でも同じことが言える」
「どんな行列でも成り立つのですか! 対角でない行列で、掛ける順番によって掛け算の結果が変わる例を見たばかりですので、とても不思議に思えます」
ジンが挙げた行列の性質に対して、ソラは驚いたような顔をして感想を述べた。
「この性質を応用して、状態異常を無効化する魔導具を作ったことがある。状態異常は、魔物が固有の魔導波を発生することで引き起こされる。魔導波を魔導具で分析して、状態異常を行列でモデル化する。その逆行列に対応する回復の魔導波を魔導具で生成して、周囲に照射するという仕掛けじゃ」
「すみません。さっきの性質はどう応用されているのですか?」
ソラが尋ねると、ジンは答える。
「魔物、魔導具、周囲の人の位置関係や照射のタイミングによって、各人のステータスに対して、回復と状態異常のどちらが先に有効になるかが変わる。しかし、逆行列に関するさっきの性質のおかげで、どちらが先に掛けられても、結局、単位行列を掛けたのと同じになる。つまり、状態異常はなかったことになるわけじゃ」
――魔導具を作る数学ってこんな感じなんだ。
まだまだ初歩的ではあるが、魔導具開発の一端に触れることができ、ソラは高揚感を覚えた。
「さっきのMPの4割をHPに割り当てる回復に対して、逆行列を計算してこの性質が成り立つことを確認してみようか」
ジンの要求に対して、ソラは困ったような表情を浮かべた。
「そもそも一般の行列の掛け算をどう計算したらよいか分かりません」
「スタータスに掛かる行列はその要素である四つの数で決まるから、四つの数が分かればよい。HP→HPの倍率を計算する場合で考えようかの。これは、入力のHPが出力のHPをどれだけ上下させるかを表す倍率じゃ」
ジンは、一息おいて続ける。
「二つの行列を掛ける場合、入力のHPはHP→HP→HPとHP→MP→HPという二つの経路で出力のHPを上下させる。つまり、これら二つの経路の倍率の合計が行列の掛け算の結果となる。残りの三つの要素も同様に計算できる」
ジンの説明に対して、ソラはなるほど、とうなずいた。
「行列同士の掛け算は分かりました。逆行列を求める場合、逆行列の要素である四つの数を未知数にして、元の行列との掛け算の結果が単位行列になる条件を式で表して、この条件を満たす未知数を求めればよいのですね」
そう言って、ソラは逆行列の計算を始めた。
「この行列の逆行列は簡単に求まりますが、どんな行列でも逆行列はガウスの消去法で計算できますね」
ソラの感想に、ジンはそうじゃな、と応じる。
ソラは、計算した逆行列を表の形で書いた。
入力のHP 入力のMP
出力のHP:1 −2/3
出力のMP:0 5/3
「たしかに元の行列とその逆行列を逆順に掛けても単位行列になりますね」
ソラは、掛け算の結果を眺め、納得した表情を浮かべる。
ここで、ソラは行列の掛け算と連立一次方程式の関係に気づく。
「連立一次方程式って、未知数を並べたベクトルに、倍率を要素とする行列を掛けたものが、所与の定数ベクトルになるという等式と同じですよね」
ソラの発見を、ジンは肯定する。
「その通りじゃ。ちなみに未知数に掛ける倍率のことは係数、倍率を要素とする行列のことは係数行列と呼ぶ。行列とベクトルを使うと、連立一次方程式の見た目は、2掛けるxが6のときにxはいくらでしょうか、という問題と同じ形になるんじゃ」
ジンの説明を聞いて、ソラは自分の考えが合っているかどうかを確認する。
「係数行列、掛ける、未知ベクトル、イコール、定数ベクトルという等式の両辺に係数行列の逆行列を掛ければ、未知ベクトルが求まりますよね。ちょうど2掛けるxイコール6、の両辺に2の逆数0.5を掛けると、xが3と求まるように」
ソラの問いかけに、ジンは少し悩んだ顔をした。
「逆行列を使うと、連立一次方程式が解けるのは、理論的にはそのとおりじゃ。しかし、未知数の個数が多い連立一次方程式を魔導計算機などで実際に計算して解くときは、逆行列は使わんぞ」
ジンの回答はソラを混乱させた。
「え、なんで使わないんですか?」
「余分な計算で時間が掛かるからじゃ。さっき、ガウスの消去法で逆行列を計算する方法を考えたときに気づいたと思うが、普通に連立一次方程式をガウスの消去法で解く方が手間が少なくなる」
ジンの解説に対して、ソラは疑問に思った点を尋ねる。
「ガウスの消去法に所与の定数が絡むと面倒じゃないですか? 例えば、定数を替えて何度も同じ連立一次方程式を解きたいときに困りませんか?」
ソラが指摘すると、ジンは嬉しそうな顔をして応える。
「それはいい質問じゃな。せっかくだから、線形代数の奥義の話をしようかのお。ただし、今の坊やにはまだ少し早いから、詳細が理解できなくても思いつめないようにな」
奥義と聞いて、ソラは興奮した。
「どんな奥義なんですか? 戦闘系の剣術スキルで言う必殺技のようなものですか?」
ジンは苦笑して答える。
「残念ながら違う。基本だが奥が深いという意味の奥義じゃ。剣術スキルで言うと、足運びかのお。なんせガウスの消去法で一歩一歩、行列を変形していくことじゃからなあ」
ジンの解説がよく分からなかったソラは疑問点を口にする。
「え、ガウスの消去法って、連立一次方程式のそれぞれの等式の両辺に同じ数を掛けたり、等式同士を足したり引いたりする操作のことですよね。どうして行列が変形するんですか?」
ここが奥義に向かう第一歩目なので、ソラが疑問に思うのももっともである。ジンは、丁寧に説明する。
「連立一次方程式のそれぞれの等式の両辺に同じ数を掛けたり、等式同士を足したり引いたりすると、係数行列が変わるのは分かるじゃろう。この変化は、ある正則行列を係数行列に掛けることで表せる」
「なるほど! ガウスの消去法における等式の操作そのものは行列の掛け算では実現できないけど、係数行列がどう変わるかは行列の掛け算で書けるということですね」
ソラは納得してうなずいた。
ジンは、行列がどう変形されるかを述べる。
「この変形を式で表すと、ガウスの消去法を表す正則行列、掛ける、元の係数行列、イコール、変形後の係数行列、となる。ここまでくれば、奥義まではもう一歩じゃ」
ソラは、わくわくしながら尋ねる。
「もう一歩って何ですか?」
「変形途中で、係数行列の要素が0になる場合の例外処理を追加することじゃ。これは二種類に分けられる。まだ0でない要素が残っている場合は、係数行列の要素を入れ替えるような正則行列を掛けることで対処する。もう一つの場合、つまり要素がすべて0となる場合は、0を含む対角行列を挟んで辻褄を合わせる」
――辻褄を合わせるって何だろう?
ソラの疑問を見透かしたように、ジンは続ける。
「辻褄を合わせる最も簡単な例を挙げようかの。四つの係数がすべて0、未知数二つの連立一次方程式じゃ。係数行列の4要素はすべて0だから、ガウスの消去法は使えない。この係数行列は、単位行列、掛ける、全部0の対角行列、掛ける、単位行列に等しい。この掛け算を係数行列の変形結果として用いる」
ジンは、例外処理を追加したガウスの消去法から導かれる性質を要約する。
「まとめると、どんな行列でも、行列はある三つの行列L、D、Uをこの順で掛けたものと等しくなる。そうなるようにL、D、Uを選べる。LとUは正則行列、Dは対角行列になる。行列のLDU分解。これが線形代数の奥義じゃ」
奥義と言われても、ソラにはピンとこなかった。
「すみません、どのあたりが奥義なんでしょうか?」
ジンは、LDU分解が持つ以下の三つの性質が奥義に値すると述べた。
性質A:逆行列の代わりにでき、計算の手間が少ない
・行列のLDU分解は、多くの場合、逆行列の代わりになる
・にも関わらず、逆行列よりも計算の手間が少なくて済む
性質Aの補足:逆行列の代替法
・元の行列の逆行列は、Uの逆行列、掛ける、Dの逆行列、掛ける、Lの逆行列に等しい
・LとUは特殊な形の正則行列のため、逆行列を求めなくても、逆行列、掛ける、ベクトルの計算が行列、掛ける、ベクトルの計算とほぼ同じ手間で行える
・これより、連立一次方程式を解くときにLDU分解は逆行列の代わりとして使える
性質B:一般の行列を対角行列に帰着させる最も基本的な方法
・元の行列が正則であれば、対角行列Dは正則、逆も成り立つ
・LとUの逆行列は、それぞれL、Uと掛け算するとき、掛ける順によらずに単位行列になる
・一般の行列に対して、そのランクを決める手段を提供する。具体的には、LDU分解の対角行列Dのランク、すなわち0でない対角要素の個数、に等しいと定める。
性質C:長方形の行列にも適用可能
・縦と横の要素数が異なる長方形の行列もLDU分解することができる
・LDU分解を用いると、ある種の連立一次方程式に解があることが実際に解かなくても分かる。例えば、横長の行列、掛ける、未知ベクトル、イコール、0を並べたベクトル、という連立一次方程式は、0を並べたベクトル以外の解を必ず持つ。
「LDU分解が有用な具体例を挙げようかの。さっきの逆行列は掛ける順番によらずに単位行列になる、という性質は、LDU分解の二番目の性質、元の行列が正則なら対角行列Dも正則、から簡単に導ける」
ジンは、LDU分解の説明をそう締めくくった。
ソラは、膨大な情報を整理しきれずに混乱していた。さすが奥義。簡単には理解できないそうにない。ソラは、時間を掛けて消化しようと楽観的に考えた。
ソラが、先週のジンの講義内容の線形代数の奥義を一通り振り返ったとき、ちょうど受付のカウンター席に座ったソラの前に来訪者がやってきた。
ソラは現実に引き戻される。
――講義内容の復習はまた今度だな。
ソラは営業スマイルを浮かべ、来訪者への応対を始める。




