この授業「物理数学Ⅰ」は、物理などで使われる線形代数という数学を習得することです。
線形代数の主役は「行列」ですが、「行列」は「線形性」という性質を持っているある種の数学的操作を表現する方法です(どうやって?―という部分はこれから説明します)。そしてその行列によって変換される相手が「ベクトル」またはもっと抽象的なことばを使うと「線形空間」です。
「線形代数」と聞くとまず「難しそう」な印象を持つかもしれない。だが「線形」は平たくいえば「1次式」もしくは「グラフで描くと直線」ということだから、むしろ「難しい」というよりは「一番簡単」ほんとの意味で「一番簡単」なのは0次式すなわち定数だろうけど、それはあまりに簡単すぎて考えるにはつまらなすぎる(trivial)。なものにつける名前だと思っていい。
そうすると逆に「線形な問題だけやっても、簡単過ぎるから現実の役には立たないのでは?」という印象を持つかもしれない。しかし実は「線形な問題だけ」やっても、かなり役に立つのである。
それは、実は物理で使う多くの現象が「線形な問題」を基礎にしていることの顕れである。たとえば「微分方程式を立てて、解く」作業を行うとき、我々はまず「考えている地点の近傍」でどのような現象が起きているかという「ローカルな情報」を手に入れてそれをもとに微分方程式を作る。「近傍」の「ローカルな情報」を司る式は(線形近似できるような近所の情報だけを扱うので)線形な方程式になる。そして(微分方程式の解き方がわかっている人はもう御存知のように)ローカルな情報を知ればそれをもとにグローバルな情報を見出していくことができるのである。
具体的には、力学、電磁気学、量子力学などの基本方程式はすべて線形な方程式になっている。特に量子力学において線形代数の威力は絶大である。また、コンピューターグラフィックス、統計など、応用の分野においても線形代数は威力を発揮する場面が多い。本講義では、いろいろな応用にも触れながら説明していくので、「線形代数の威力」を感じながら進めて欲しい。
以下、物理など、自然科学のための数学を勉強するときに注意すべきこと(実際のところ「科学のための数学」に限らない、一般的に学問をするときの注意事項でもある)をまとめておこう。少し説教臭いだろうけど我慢してください。
今回は、「まず最初に今からやる線形代数においてよく出てくる``行列''なるものは何なのかを俯瞰しておいて、これを勉強しようという気持ちになろう」という意図で書いている。わざわざこの章を設けた理由は、このあたりを勉強している学生さんから「なんでこんなこと考えなきゃいけないんですか?」と質問を頻繁に受けるからである。
「行列(matrix)」とは、数を \begin{equation} \mtx[cccc]{ 4&3 &1 &5 \\ 2&-3 &0.5 &1 \\ \sqrt{5}&\pi &{1\over 4} &\E} \end{equation} のように縦横に並べて括弧をつけた量である。
最初に勉強した時、「これ何の役に立つの?」という気分になる人が非常に多いので、以下で二つの観点から「なぜ行列なるものを使うのか」を示していこう。
さて、まず小学校の算数のような問題
を考えよう。
さて、ここから話は「行列」に移る。
上では個数と金額を固定して$\ovalbox{りんごの数}$と$\ovalbox{バナナの数}$を知る計算を行った。ここで注目したいのは、$\mtx[c]{\ovalbox{りんごの数}\\\ovalbox{バナナの数}}$という「数の組」と$\mtx[c]{金額\\個数}$という「数の組」の間には対応関係がある。その対応関係は \begin{align} \mtx[c]{金額\\\\個数}=\mtx[c]{ 100\times \ovalbox{りんごの数}+60\times \ovalbox{バナナの数}\\[3mm] \ovalbox{りんごの数}+\ovalbox{バナナの数} } \end{align} だが、この、「$\ovalbox{りんごの数}$と$\ovalbox{バナナの数}$から、個数と金額を計算する」という操作「$\mtx[c]{\ovalbox{りんごの数}\\\ovalbox{バナナの数}}\to \mtx[c]{金額\\個数}$」を、 \begin{align} \mtx[c]{金額\\個数}=\aka{\boxed{\begin{array}{c}計算を表現\\するもの\end{array}}} \mtx[c]{\ovalbox{りんごの数}\\\ovalbox{バナナの数}} \end{align} のように「$\mtx[c]{\ovalbox{りんごの数}\\\ovalbox{バナナの数}}$にある操作$\aka{\boxed{\begin{array}{c}計算を表現\\するもの\end{array}}}$を行うと$\mtx[c]{金額\\個数}$になる」という書き方「操作」は一箇所でまとめ、操作前と操作後と分離した形で書きたい。で表現したい。
具体的には以下のような「行列」を考える(以下では、個数を$\thetacol{N}$、金額を$\zcol{M}$、$\ovalbox{りんごの数}$を$\xcol{A}$、$\ovalbox{バナナの数}$を$\ycol{B}$で表現する)。 \begin{align} \mtx[c]{\zcol{M}\\\thetacol{N}}=\goverbrace{\mtx[cc]{100&60\\1&1}}^{行列}\mtx[c]{\xcol{A}\\\ycol{B}}\label{firstmatrix} \end{align} この式は \begin{align} \zcol{M}=&100\xcol{A}+60\ycol{B}\\ \thetacol{N}=&\xcol{A}+\ycol{B} \end{align} の代わりである。ゆえに、行列の演算規則は \begin{align} \mtx[cc]{a&b\\c&d}\mtx[c]{\xcol{A}\\\ycol{B}}=\mtx[c]{a\xcol{A}+b\ycol{B}\\c\xcol{A}+d\ycol{B}} \end{align} である。これが「行列計算」の第一歩となる(今は第一歩なので、とりあえず「こんな計算やるんだなぁ」程度に思っておけばよい)。
ここで「何に$\xcol{A},\ycol{B}$を掛けたのがわかりやすい書き方として、たとえば \begin{equation} \mtx[c]{\zcol{M}\\\thetacol{N}} = \mtx[cc]{ \xcol{A}&\ycol{B}\\ \hline a&b \\ c&d\\ } \end{equation} とかの方がいいんじゃないの?」と思う人もいるかもしれない。実は、計算結果である$\mtx[c]{\zcol{M}\\\thetacol{N}}$と言わば「計算前」である$\mtx[c]{\xcol{A}\\\ycol{B}}$が同じ形式である方が嬉しい---という事情と、二つの操作を後で出てくる式のように「計算という操作を続けて行う」という書き方にしたい、という事情などがあるので上の書き方を使うのである。
上の書き方で「$\mtx[c]{\ovalbox{りんごの数}\\\ovalbox{バナナの数}}$に行列$\mtx[cc]{100&60\\1&1}$で表される操作を行うと$\mtx[c]{金額\\個数}$になる」という関係が表現されている。
元の式に戻って、答を求める計算過程を行列の表示で書こう。 \begin{equation} \begin{array}{l|rl|l} 数式で書く&行列で書く操作&\\\hline \left\{\begin{array}{r@{}l@{}c@{}r@{}l} 100&\xcol{A}&+&60&\ycol{B}=600\\ &\xcol{A}&+&&\ycol{B}=8 \end{array}\right. ~&~~\mtx{100&60\\1&1}\rv{\xcol{A}\\\ycol{B}}=&\rv{600\\8}&\kokode{下の式を100倍(下の「注意」を見よ)}\\ \left\{\begin{array}{r@{}l@{}c@{}r@{}l} 100&\xcol{A}&+&60&\ycol{B}=600\\ 100&\xcol{A}&+&100&\ycol{B}=800 \end{array}\right. ~&~~\mtx{100&60\\100&100}\rv{\xcol{A}\\\ycol{B}}=&\rv{600\\800}&\kokode{下の行から上の行を引く}\\ \left\{\begin{array}{r@{}l@{}c@{}r@{}l} 100&\xcol{A}&+&60&\ycol{B}=600\\ &&&40&\ycol{B}=200 \end{array}\right. ~&~~\mtx{100&60\\0&40}\rv{\xcol{A}\\\ycol{B}}=&\rv{600\\200}&\kokode{下の行を40で割る}\\ \left\{\begin{array}{r@{}l@{}c@{}r@{}l} 100&\xcol{A}&+&60&\ycol{B}=600\\ &&&&\ycol{B}=5 \end{array}\right. ~&~~\mtx{100&60\\0&1}\rv{\xcol{A}\\\ycol{B}}=&\rv{600\\5}&\kokode{下の行の60倍を上の行から引く}\\ \left\{\begin{array}{r@{}l} 100\xcol{A}&=300\\ \ycol{B}&=5 \end{array}\right. ~&~~\mtx{100&0\\0&1}\rv{\xcol{A}\\\ycol{B}}=&\rv{300\\5}&\kokode{上の行を100で割る}\\ \left\{\begin{array}{r@{}l} \xcol{A}&=3\\ \ycol{B}&=5 \end{array}\right. ~&~~\mtx{1&0\\0&1}\rv{\xcol{A}\\\ycol{B}}=&\rv{3\\5}& \end{array} \end{equation} 「注意」:ここで「下の行を100倍」だからと$\ycol{B}\to100\ycol{B}$と置き換える必要はない。そんなことをしたら等式が成立しなくなる。左側にある数式と見比べて100倍しなくていいことを確認しよう。
最後に出てくる$\mtx{1&0\\0&1}$という行列(この後も何度も出てくる行列で「単位行列」という名前がついている)は何もしない操作これが何もしない操作であることは、実際計算してみるとわかる。に対応する。よって最後の式は$\rv{\xcol{A}\\\ycol{B}}=\rv{3\\5}$つまり、$\xcol{A}=3,\ycol{B}=5$である。
ここで行列を使って書いた式に対して「できる計算」をまとめておくと、
行基本変形
となる。最後は上では使わなかったが、式の順番を変えただけのことであるから、式の示す内容は変わらない。
次に、平面の図形を変換ここで行うのは線形変換もしくは1次変換と呼ばれる変換のみ。する手段としての「行列」を見よう。というより、「行列で表現できるような変換の組」をここでは扱う。
元の図を、以下のような「シュレーディンガーの猫」の絵としよう。
元の図:
この図の変形として、以下のようなものを考える。まずはシンプルな「反転」である。2種類ある。
左右反転:$\mtx[c]{\xcol{x}\\\ycol{y}}\to\mtx[c]{-\xcol{x}\\\ycol{y}}$
上下反転:$\mtx[c]{\xcol{x}\\\ycol{y}}\to\mtx[c]{\xcol{x}\\-\ycol{y}}$
この「反転」は平面上の$\xcol{x}$座標または$\ycol{y}$座標の符号をひっくり返すという操作だが、それは画像を鏡像反転させる操作になっている。
次に「伸縮」の2種類を考えよう。
左右伸縮:$\mtx[c]{\xcol{x}\\\ycol{y}}\to\mtx[c]{\alpha\xcol{x}\\\ycol{y}}$
上下伸縮:$\mtx[c]{\xcol{x}\\\ycol{y}}\to\mtx[c]{\xcol{x}\\\alpha\ycol{y}}$
さらに、「回す」ということが考えられるだろう。この式は少しだけ難しい(この章はイントロなので、この式については後でゆっくりやることにする)。
回転:$\mtx[c]{\xcol{x}\\\ycol{y}}\to\mtx[c]{\xcol{x}\cos \theta-\ycol{y}\sin\theta\\\xcol{x}\sin\theta+\ycol{y}\cos\theta}$ここまでは形を(反転はしても)変えない変換だったが、以下の操作では形が歪みを生じる。
垂直ずらし:$\mtx[c]{\xcol{x}\\\ycol{y}}\to\mtx[c]{\xcol{x}\\\ycol{y}+\alpha\xcol{x}}$
水平ずらし:$\mtx[c]{\xcol{x}\\\ycol{y}}\to\mtx[c]{\xcol{x}+\alpha\ycol{y}\\\ycol{y}}$
$a=-1,b=0,c=0,d=1$と選べば左右反転が表現できる。
ここで、 \begin{align} \mtx[cc]{a&b\\c&d}\mtx[c]{\xcol{x}\\\ycol{y}}=\mtx[c]{a\xcol{x}+b\ycol{y}\\c\xcol{x}+d\ycol{y}} \end{align} のように「行列の計算ルール」を定めておくと、行列$ \mtx[cc]{a&b\\c&d}$を一つ決めることで以上の変換がすべて表現できることになる。たとえば、左右反転の行列は$\mtx{-1&0\\0&1}$で、これによって \begin{align} \mtx[cc]{-1&0\\0&1}\mtx[c]{\xcol{x}\\\ycol{y}}=\mtx[c]{-\xcol{x}\\\ycol{y}} \end{align} のような計算がされる。
操作と、行列の関係を整理すると以下のような感じだ。
左右反転 | 上下反転 | 左右伸縮 | 上下伸縮 | 回転 | 垂直ずらし | 水平ずらし |
$\mtx{-1&0\\0&1}$ | $\mtx{1&0\\0&-1}$ | $\mtx{\alpha&0\\0&1}$ | $\mtx{1&0\\0&\alpha}$ | $\mtx{\cos \theta&-\sin \theta\\\sin \theta&\cos \theta}$ | $\mtx{1&0\\\alpha&1}$ | $\mtx{1&\alpha\\0&1}$ |
こうやってできあがった行列の表現を見ると、$\alpha=-1$の左右伸縮は左右反転であることがわかる(同様に$\alpha=-1$の上下伸縮は上下反転である)。さらに言えば反転と収縮は全部まとめて$\mtx{\alpha&0\\0&\beta}$という行列で表現できる。
行列で書いたことのメリットはやはり、「操作をまとめることができる」ということである。たとえば
という操作は行列では \begin{align} \mtx{\cos \theta&-\sin \theta\\\cos \theta&\sin \theta} \mtx{1&0\\\alpha&1}\mtx[c]{\xcol{x}\\ \ycol{y}} =& \mtx{\cos \theta&-\sin \theta\\\sin \theta&\cos \theta} \mtx[c]{\xcol{x}\\ \ycol{y}+\alpha\xcol{x}} \nonumber\\ =& \mtx[c]{ \xcol{x}(\cos \theta-\alpha\sin \theta) -\ycol{y}\sin \theta \\ \xcol{x}(\sin \theta+\alpha\cos \theta) +\ycol{y}\cos \theta} \end{align}
と表現できる。
ここで大事なことを一つ。上とは操作の順番を変えた
角度$\theta$回してから$\alpha$の垂直ずらしをする
という操作の結果は、見てわかるとおり、全く違う(操作の「部品」は同じでも、順番が変われば結果が変わる)。
このことは行列の計算にも当然反映されていて、行列の順番を変えたときの結果 \begin{align} \mtx{1&0\\\alpha&1} \mtx{\cos \theta&-\sin \theta\\\sin \theta&\cos \theta}\mtx[c]{\xcol{x}\\\ycol{y}} =& \mtx{1&0\\\alpha&1} \mtx[c]{\xcol{x}\cos \theta-\ycol{y}\sin \theta\\\xcol{x}\sin \theta+\ycol{y}\cos \theta} \nonumber\\ =&\mtx[c]{\xcol{x}\cos \theta-\ycol{y}\sin \theta\\\xcol{x}(\sin \theta+\alpha\cos \theta)+\ycol{y}(\cos\theta-\alpha\sin \theta)} \end{align} となって、全く違う変換となる。
ここまでだと、行列で書いたって大して変わらんじゃないか、という感想を抱くかもしれない。行列で書いたことの意義は何かというと、 \begin{equation} \gunderbrace{ \mtx{a&b\\c&d}}_{操作} \gunderbrace{\rv{\xcol{x}\\ \ycol{y}}}_{入力} =\gunderbrace{\rv{\zcol{X}\\\thetacol{Y}}}_{出力} \end{equation} のように、式の上で「入力」「操作」「出力」が分離されてくるということにある。
「操作」が分離されているおかげで、上の計算を \begin{equation} \gunderbrace{ \mtx{a&b\\c&d}}_{操作} \rv{\xcol{x}\\ \ycol{y}} =\rv{X\\Y} ~~\to~~ \rv{\xcol{x}\\ \ycol{y}} =\gunderbrace{{1\over D}\mtx{d&-b\\-c&a}}_{逆操作}\rv{X\\Y}\label{gyakusousa} \end{equation} (ただし、$D=ad-bc$のように「逆操作」を作るという演算だとか考えることができるのである。具体的にどのようにこの逆操作を考えていくかについては後でじっくり説明する。
また、二つの操作を続けて行なうとき---たとえば、まず$\mtx{e&f\\g&h}$で表される操作を行ったのち、$\mtx{a&b\\c&d}$で表される操作を行う(上でやった「ずらした後で回転する」など)のであれば、 \begin{equation} \gunderbrace{ \mtx{a&b\\c&d}}_{第2の操作} \gunderbrace{ \mtx{e&f\\g&h}}_{第1の操作} \rv{\xcol{x}\\ \ycol{y}}\label{twosousa} \end{equation} となる(第1の操作を行った結果に第2の操作を行っている)。
ここで、第1の操作と第2の操作をまとめて行なうという操作を、一つの行列で表現してしまうことができる、というのが行列を使うことの強みの一つである。同じことを行列を使わない計算で書くと、 \begin{equation} \goverbrace{\begin{cases} \xcol{x'}=e\xcol{x}+f\ycol{y}\\ \ycol{y'}=g\xcol{x}+h\ycol{y} \end{cases}}^{第1の操作}~~~~ \goverbrace{ \begin{cases} \xcol{x''}=a\xcol{x'}+b\ycol{y'}\\ \ycol{y''}=c\xcol{x'}+d\ycol{y'} \end{cases}}^{第2の操作}\label{daiichidaini} \end{equation} をまとめて、 \begin{equation} \begin{cases} \xcol{x''}=a\goverbrace{(e\xcol{x}+f\ycol{y})}^{\xcol{x'}}+b\goverbrace{(g\xcol{x}+h\ycol{y})}^{\ycol{y'}}=(ae+bg)\xcol{x}+(af+bh)\ycol{y}\\ \ycol{y''}=c\goverbrace{(e\xcol{x}+f\ycol{y})}^{\xcol{x'}}+d\goverbrace{(g\xcol{x}+h\ycol{y})}^{\ycol{y'}}=(ce+dg)\xcol{x}+(cf+dh)\ycol{y} \end{cases}\label{matomete} \end{equation} となる。ごちゃごちゃしてわかりにくい。
これを再び行列の言葉に翻訳しよう。 \begin{equation} \goverbrace{\mtx[c]{\xcol{x''}\\\ycol{y''}} =\mtx{a&b\\c&d}\mtx[c]{\xcol{x'}\\\ycol{y'}}}^{第1の操作}~~~~~~~~ \goverbrace{ \mtx[c]{\xcol{x'}\\\ycol{y'}}=\mtx{e&f\\g&h}\mtx[c]{\xcol{x}\\\ycol{y}}}^{第2の操作} \end{equation} と翻訳され、もうひとつの式は \begin{equation} \mtx[c]{\xcol{x''}\\\ycol{y''}} = \goverbrace{\mtx{a&b\\c&d}}^{第2の操作} \goverbrace{\mtx{e&f\\g&h}}^{第1の操作}\mtx[c]{\xcol{x}\\\ycol{y}} =\goverbrace{\mtx{ae+bg&af+bh\\ce+dg&cf+dh}}^{二つの操作をまとめた表現}\mtx[c]{\xcol{x}\\\ycol{y}} \end{equation}
のように翻訳される(ここの説明も、後でじっくりやるから今は「ふむふむ、後でそんな計算をやるのね…」程度に思いながら眺めておけばよい)。
ここで行列を使ったことの強みが現れる。というのは、この場合、 \begin{equation} \mtx{a&b\\c&d} \mtx{e&f\\g&h} =\mtx{ae+bg&af+bh\\ce+dg&cf+dh} \end{equation} という計算を先にやってしまうことができるのであるこれができるのは行列やベクトルの掛け算において「結合法則(後述 )」が成り立つから。。
このように操作を行列という形でまとめることには、単純に見栄えの問題ではないメリットがある。たとえば我々は \begin{align} \opcol{\diff \over \kidt}x\kakko{t}=&A_{xx}\,x\kakko{t}+A_{xy}\,y\kakko{t} \\ \opcol{\diff \over \kidt}y\kakko{t}=&A_{yx}\,x\kakko{t}+A_{yy}\,y\kakko{t} \end{align} のような「連立微分方程式」を解かなくてはいけないこともあるが、これを \begin{align} \opcol{\diff \over \kidt}\mtx[c]{x\kakko{t}\\ y\kakko{t}}=\mtx{A_{xx}&A_{xy}\\A_{yx}&A_{yy}}\mtx[c]{x\kakko{t}\\ y\kakko{t}} \end{align} と書いておくと、微分方程式を解く手間が大幅に減る(1変数の方程式を2回解く程度の手間で済む)。これについても、後でじっくり述べよう。
この章は本当に「イントロ」なので複雑な話を全くしてない。なので「こんな簡単なことなら別に行列とか新しいもの使わなくてもいいのでは?」と思ってしまう人もいるかもしれない。だが、行列を使って線形代数を考えることで、間違いなく世界は広がる。物理はもちろんAIなどの応用も含め、工学や経済学なども含めた広い範囲で線形代数は応用されているのである。来週からは、その基礎の部分を学んでいこう。
なお、webClassに情報を載せていますが、授業があった日の午後7時より約1時間、オンラインオフィスアワーとしてzoomを開いてます。質問や相談などがある人は来て話してください。
webclassでのアンケートによる、感想・コメントなどをここに記します。
青字は受講者からの声、赤字は前野よりの返答です。
主なもの、代表的なもののみについて記し、回答しています。