$\newcommand{\rv}[1]{\opcol{\left({\color{black}\begin{array}{@{\,}c@{\,}}#1\end{array}}\right)}}$ $\newcommand{\mtx}[2][cc]{\opcol{\left({\color{black}\begin{array}{@{\,}#1@{\,}}#2\end{array}}\right)}}$ $\def\coldr{\rcol{\mathrm dr}}\def\coldvecx{\xcol{\mathrm d\vec x}}\def\intdx{\opcol{\int \mathrm dx}}\def\E{\mathrm e}\def\I{\mathrm i}\definecolor{opcol}{RGB}{149,139,0}\definecolor{hai}{RGB}{137,137,137}\definecolor{tcol}{RGB}{166,54,109}\definecolor{kuro}{RGB}{0,0,0}\definecolor{xcol}{RGB}{169,103,49}\def\opcol#1{{\color{opcol}#1}}\def\ddx{\opcol{{\mathrm d\over \mathrm dx}}}\def\ddt{\opcol{{\mathrm d\over \mathrm dt}}}\def\xcol#1{{\color{xcol}#1}}\definecolor{ycol}{RGB}{217,61,137}\def\ycol#1{{\color{ycol}#1}}\def\haiiro#1{{\color{hai}#1}}\def\kuro#1{{\color{kuro}#1}}\def\kakko#1{\haiiro{\left(\kuro{#1}\right)}}\def\coldx{{\color{xcol}\mathrm dx}}\def\Odr{{\cal O}}\definecolor{ncol}{RGB}{217,51,43}\def\ncol#1{{\color{ncol}#1}}\definecolor{zcol}{RGB}{196,77,132}\def\zcol#1{{\color{zcol}#1}}\definecolor{thetacol}{RGB}{230,0,39}\def\thetacol#1{{\color{thetacol}#1}}\def\diff{\mathrm d}\def\kidb{\opcol{\mathrm db}}\def\kidx{\opcol{\mathrm dx}}\def\coldy{\ycol{\mathrm dy}}\def\coldtheta{\thetacol{\mathrm d\theta}}\def\ddtheta{\opcol{{\mathrm d\over\mathrm d\theta}}}\def\tcol#1{{\color{tcol}#1}}\def\coldt{\tcol{\mathrm dt}}\def\kidtheta{\opcol{\mathrm d\theta}}\def\dtwodx{\opcol{\diff^2\over\diff x^2}}\def\kokode#1{~~~~~~~{↓#1}}\def\goverbrace{\overbrace}\def\coldz{\zcol{\mathrm dz}}\def\kidt{\opcol{\mathrm dt}}\definecolor{rcol}{RGB}{206,114,108}\def\rcol#1{{\color{rcol}#1}}\def\coldtwox{\xcol{\mathrm d^2x}}\def\PDC#1#2#3{{\opcol{\left(\opcol{{\partial \kuro{#1}\over \partial #2}}\right)}}_{#3}}\def\PDIC#1#2#3{{\opcol{\left(\opcol{\partial \over \partial #2}\kuro{#1}\right)}}_{#3}}\def\PD#1#2{{\opcol{\partial \kuro{#1}\over \partial #2}}}\def\PPDC#1#2#3{{\opcol{\left(\opcol{\partial^2 \kuro{#1}\over \partial #2^2}\right)}}_{#3}}\def\PPDD#1#2#3{{\opcol{{\partial^2 \kuro{#1}\over \partial #2\partial #3}}}}\def\PPD#1#2{{\opcol{{\partial^2 \kuro{#1}\over \partial #2^2}}}}\def\kidy{\opcol{\diff y}}\def\ve{\vec{\mathbf e}}\def\colvecx{\xcol{\vec x}}\definecolor{usuopcolor}{RGB}{237,234,203}\def\usuopcol#1{\color{usuopcolor}#1}\def\vgrad#1{{\usuopcol{\overrightarrow{\opcol{\rm grad}~\kuro{#1}}}}}\def\dX{\rcol{\mathrm dX}}\def\dY{\thetacol{\mathrm dY}}\def\opdf{\opcol{\mathrm df}}\def\coldf{\tcol{\mathrm df}}\def\dtwof{\opcol{\mathrm d^2f}}\def\murasakidb{\zcol{\mathrm d b}}\def\ao{\ycol}\def\aodV{\ycol{\diff V}}\def\aka{\xcol}\def\akadm{\xcol{\diff m}}\def\gunderbrace{\underbrace}\def\ovalbox{\boxed}$ $

「物理数学Ⅰ」2021年度講義録第1回

この授業の目的

 この授業「物理数学Ⅰ」は、物理などで使われる線形代数という数学を習得することです。

以下はこれからの授業へのイントロのビデオです。
以下ここまでまではビデオで話したこととだいたい同じ文章です。

 線形代数の主役は「行列」ですが、「行列」は「線形性」という性質を持っているある種の数学的操作を表現する方法です(どうやって?―という部分はこれから説明します)。そしてその行列によって変換される相手が「ベクトル」またはもっと抽象的なことばを使うと「線形空間」です。

 「線形代数」と聞くとまず「難しそう」な印象を持つかもしれない。だが「線形」は平たくいえば「1次式」もしくは「グラフで描くと直線」ということだから、むしろ「難しい」というよりは「一番簡単」ほんとの意味で「一番簡単」なのは0次式すなわち定数だろうけど、それはあまりに簡単すぎて考えるにはつまらなすぎる(trivial)。なものにつける名前だと思っていい。

 そうすると逆に「線形な問題だけやっても、簡単過ぎるから現実の役には立たないのでは?」という印象を持つかもしれない。しかし実は「線形な問題だけ」やっても、かなり役に立つのである。

 それは、実は物理で使う多くの現象が「線形な問題」を基礎にしていることの顕れである。たとえば「微分方程式を立てて、解く」作業を行うとき、我々はまず「考えている地点の近傍」でどのような現象が起きているかという「ローカルな情報」を手に入れてそれをもとに微分方程式を作る。「近傍」の「ローカルな情報」を司る式は(線形近似できるような近所の情報だけを扱うので)線形な方程式になる。そして(微分方程式の解き方がわかっている人はもう御存知のように)ローカルな情報を知ればそれをもとにグローバルな情報を見出していくことができるのである。

 具体的には、力学、電磁気学、量子力学などの基本方程式はすべて線形な方程式になっている。特に量子力学において線形代数の威力は絶大である。また、コンピューターグラフィックス、統計など、応用の分野においても線形代数は威力を発揮する場面が多い。本講義では、いろいろな応用にも触れながら説明していくので、「線形代数の威力」を感じながら進めて欲しい。

ここまで

 以下、物理など、自然科学のための数学を勉強するときに注意すべきこと(実際のところ「科学のための数学」に限らない、一般的に学問をするときの注意事項でもある)をまとめておこう。少し説教臭いだろうけど我慢してください。

  1. 目的意識を持って勉強しよう数学を勉強している理学部の1年生ぐらいの人からよく「こんなややこしい計算、嫌」という声を聞く。だが忘れないで欲しいのは「このややこしい計算が必要だから勉強するのだ」ということである。計算したい相手がまず存在し、そいつが「ややこしい計算」をやらないと太刀打ちできないような量だったり関数だったりするから、それに対抗する武器として数学が使われている。「ややこしい計算が嫌だ」と言って逃げてしまったら、対処できる敵の数が減ってしまう。自然という敵は手強いからこそ、数学という味方が必要だ。「必要だから勉強する」という気持ちを持つこと。
  2. 「覚えよう」は禁句何か計算間違いをした時など「○○を覚えてなかった」「次間違えないよう、××を覚えよう」と思う人が結構いるのだが、そこで「覚えよう」と思って覚えた人間は、多分すぐに忘れる。 たとえば「○○のチェックを忘れた」のなら「忘れていた」と反省するのではなく、「なぜ○○のチェックが必要なのか?」という理屈を自分が理解しているかどうかを考えよう。そして理解してないなら、「なぜこうしなくてはいけないか」が納得できるまで、その論理を考えなおそう。人間、理解したことはなかなか忘れないものだ。
  3. 図を描け、グラフを描け、情景を思い浮かべろ 問題を解く時にまずやるべきことは、状況を把握すること。そのためには図やグラフを描くことは大いに助けになる。それに、状況をちゃんと把握していれば、間違った解答を出してしまう可能性も減る。
  4. とにかく手を動かせ 目をつぶって考え込んだ後、「わかった!」と叫んで問題を解くことができるのは大天才だけである時々、「ここでぐっと式をにらむと物理的直感により以下のような答がひらめく」などと書いてある教科書があるが、あんなものは嘘である。大天才でない人間は手を動かせ!頭が動かない時こそ、紙と鉛筆に考えてもらうことだ。何をしていいかわからなかったらとりあえずいろいろ試してみる。そういうことをいろいろやっているうちに、正解にたどりつく方法が身についてくる。
  5. 話しあおう、教えあおう友人と数学や物理などについて語り合い、教えあおう。人に語りかけるために言葉を作る段階で「あっ、そういうことだったのか」と理解が進むことはよくある。「教える」ことは他人の為ではなく、自分の頭を整理するにも大いに役立つのである友達がいるつもりでエア友達に語りかけたってよい。それでもちゃんと効果は上がる。

 今回は、「まず最初に今からやる線形代数においてよく出てくる``行列''なるものは何なのかを俯瞰しておいて、これを勉強しようという気持ちになろう」という意図で書いている。わざわざこの章を設けた理由は、このあたりを勉強している学生さんから「なんでこんなこと考えなきゃいけないんですか?」と質問を頻繁に受けるからである。

行列とは

「行列(matrix)」とは、数を \begin{equation} \mtx[cccc]{ 4&3 &1 &5 \\ 2&-3 &0.5 &1 \\ \sqrt{5}&\pi &{1\over 4} &\E} \end{equation} のように縦横に並べて括弧をつけた量である。

 最初に勉強した時、「これ何の役に立つの?」という気分になる人が非常に多いので、以下で二つの観点から「なぜ行列なるものを使うのか」を示していこう。

連立方程式を解くための「行列」

連立1次方程式を解くための「行列」

 人類が「行列」を使い始めた一つの理由が「連立方程式を解く」ためである。まずは連立1次方程式と行列の関係を見よう。

 さて、まず小学校の算数のような問題

1個100円のりんごと1個60円のバナナがある。たかしくんは600円持っている。これを全部使って、りんごとバナナを合わせて8個買いたい。それぞれ何個買えばよいか。

を考えよう。

以下は、この問題を方程式として解くところのビデオ。
以下の箱内は、ビデオで説明した解き方をまとめたもの。
これを1次方程式として解くならば、りんごを$\xcol{A}$個とバナナを$\ycol{B}$個買うと考えて、 \begin{align} \begin{cases}\begin{array}{r@{}l@{}c@{}r@{}l} 100&\xcol{A}&+&60\ycol{B}&=600\\ &\xcol{A}&+&\ycol{B}&=8 \end{array} \end{cases}\label{firstrenritsu} \end{align} という連立方程式を解いてみよう。よくやる方法は、まず下の式を100倍して \begin{align} \begin{cases}\begin{array}{r@{}l@{}c@{}r@{}l} 100&\xcol{A}&+&60\ycol{B}&=600\\ 100&\xcol{A}&+&100\ycol{B}&=800~~~(下の式の両辺を100倍した) \end{array} \end{cases}\label{firstrenritsutwo} \end{align} としてから下の式から上の式を引いて \begin{equation} 40\ycol{B}=200 \end{equation} という式を作り、$\ycol{B}=5$を得る。$\ycol{B}=5$を上の式に代入すれば$\xcol{A}+5=8$となるから、$\xcol{A}=3$とわかる。
以上のように、連立一次方程式を解くときには「両辺を定数倍する」「下の式から上の式を引く」のような操作を行う。この操作を行っているところをグラフの変形をしながら見るアプリがある。使い方の説明は以下のビデオの通り。
まずはアプリ(↓)をやってみて欲しい。問題が乱数で出るので、解きながら「一次方程式を解く」ということのグラフでの雰囲気をつかんで欲しい(終わったら一番下の「戻る」で戻る)。

 さて、ここから話は「行列」に移る。

この授業の目的 行列で考えよう

行列で考えよう

以下のビデオでこのページの中身とだいたい同じことを説明しています。ビデオを見て文章を読む、文章呼んでビデオを見る(あるいは同時に)のようにして、行列を使う計算の意味を理解していってください。

 上では個数と金額を固定して$\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. 任意の行を定数倍(0倍を除く)する。
  2. 任意の行の定数倍を別の行に足す(引く)。
  3. 任意の行を入れ替える。

となる。最後は上では使わなかったが、式の順番を変えただけのことであるから、式の示す内容は変わらない。

連立1次方程式を解くための「行列」 図形の変換を表す「行列」

図形の変換を表す「行列」

 次に、平面の図形を変換ここで行うのは線形変換もしくは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}$という行列で表現できる。

 行列で書いたことのメリットはやはり、「操作をまとめることができる」ということである。たとえば


$\alpha$の垂直ずらしをしてから角度$\theta$回す

という操作は行列では \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}

上の式のcosとsinが入れ替わっている箇所がありました(訂正済み)。

と表現できる。

 ここで大事なことを一つ。上とは操作の順番を変えた

角度$\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} となって、全く違う変換となる。

このあたりは、上でも説明したアプリ

で実際に試しながら確認して欲しい。今日のwebClassでこれに関する問題を出す。

行列を使うメリット

 ここまでだと、行列で書いたって大して変わらんじゃないか、という感想を抱くかもしれない。行列で書いたことの意義は何かというと、 \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}

↑の式の「第1の操作」「第2の操作」を書き間違ってました。訂正してます。

のように翻訳される(ここの説明も、後でじっくりやるから今は「ふむふむ、後でそんな計算をやるのね…」程度に思いながら眺めておけばよい)。

 ここで行列を使ったことの強みが現れる。というのは、この場合、 \begin{equation} \mtx{a&b\\c&d} \mtx{e&f\\g&h} =\mtx{ae+bg&af+bh\\ce+dg&cf+dh} \end{equation} という計算を先にやってしまうことができるのであるこれができるのは行列やベクトルの掛け算において「結合法則(後述 )」が成り立つから。

 「たいした違いはないじゃん」と思う人は、この計算を100回200回とやる場合を考えてみて欲しい(たとえば100種類の$\mtx[c]{\xcol{x}\\\ycol{y}}$のそれぞれに対応する100個の$\mtx[c]{\xcol{x''}\\\ycol{y''}}$を計算したい場合など)。CG(コンピュータグラフィックス)などではこういう計算を100回どころではなく繰り返す(まぁ、人間がじゃなくコンピュータが、だが)。

このように操作を行列という形でまとめることには、単純に見栄えの問題ではないメリットがある。たとえば我々は \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などの応用も含め、工学や経済学なども含めた広い範囲で線形代数は応用されているのである。来週からは、その基礎の部分を学んでいこう。

以上で第1回の授業は終わりです。webclassへ行って、「第1回授業感想・コメントシート」の設問(3つあります)に答えてください。出席の代わりです(この授業は出席点はありませんが、皆さんがどの程度受講しているかも確認したいのと、反応もみたいので)。
 最初に、今日やった「行列による図形の変換」に関する問題が一問あります。
反転は伸縮の一種ということで、ここで考えた変換を「伸縮」「回転」「ずらし」の3種類としよう。
  • (a)「伸縮」と「伸縮」
  • (b)「伸縮」と「回転」
  • (c)「伸縮」と「ずらし」
  • (d)「回転」と「回転」
  • (e)「回転」と「ずらし」
  • (f)「ずらし」と「ずらし」
のうち、順番を変えても同じ変換になるのはどれか?

この問題への解答が正解かどうかは、成績には影響しません。
 あと、授業への感想・コメントと、オンライン授業についての要望などを書く欄がありますので、そちらも記入してください。
物理数学I webclass

この感想・コメントシートに書かれたことについては、代表的なものに対しては次のページで返答します。

 なお、webClassに情報を載せていますが、授業があった日の午後7時より約1時間、オンラインオフィスアワーとしてzoomを開いてます。質問や相談などがある人は来て話してください。

なお、テキストのPDF版はこちらです。
行列で考えよう 受講者の感想・コメント

受講者の感想・コメント

 webclassでのアンケートによる、感想・コメントなどをここに記します。

 青字は受講者からの声、赤字は前野よりの返答です。

 主なもの、代表的なもののみについて記し、回答しています。

今回の講義の "図形の変換を表す「行列」" のページの、操作と行列の関係を整理した表に書かれた回転の行列とその下に続く式に用いられている回転の操作の行列とが違っている点、それから"行列を使うメリット"というところについて、途中で第一の操作と第二の操作が入れ替わっているように感じたのですが、これはこういったものなのでしょうか?
すいません、ここは私のタイプミスでした。今は直してあります。
ベクトルの内積も一種の行列なんだなと思った。
内積はまた次回からやりますが、あれは「行列計算の一種」ですね。
今まで行列を機械的にやっていたが今回の講義で本質とメリットについておおよそ理解できたと思うのでとてもいい講義だった。複数の操作を行うときの行列式の順番を間違えてしまいそうなので注意して行いたい。
行列の計算の手順についてはこれからもじっくりやりましょう。
大学に入ってから数学に苦手意識があるので真面目に聞いて内容を理解していこうと思います
はい、がんばっていきましょう。
行列の計算方法自体は少し触れたことがあるのですが、まだ不慣れでめんどくさいと感じがちです。これからの講義でうまく扱えるようになりたいです。
行列は計算方法はともかく、「まとめて書ける」ところのメリットがあります。
数式以外にも図が多く使われていてイメージがつかみやすかった。
数式と図の両方で理解していくことは大事なので、これからも図はどんどん使っていく予定です。
今まで行列には、めんどくさくてわかりづらい計算という印象しかありませんでした。今はまだ行列のうまみを実感できていない感じがしますが、これからどんどん行列の良さがわかってくるということで、これからの授業が非常に楽しみです。これからよろしくお願いします。
ここから先で、行列の良さをわかっていきましょう。
去年、線形代数学の講義を取りましたが、難しくて挫折しました。 ですが今日の講義のおかげで、線形代数学は本当は魅力的な計算方法なのだなと思えました。 今まではただ計算してみて「だから何なんだ!!?」と思っていましたが、アプリで視覚化することでこんなことしてたのかとすっきりしました。(それでも特に「ずらし」は理解できませんでした。「伸縮」と若干式が似ているのに、起こることが全然違うので。)
それぞれの意味については、今後また説明していきましょう。
行列はまだ慣れていないこともあって、計算や式変形の時に少し理解に時間がかかったが、反転や伸縮などの操作に関して、単純な計算式で表せられていることには驚いた。前に行列式を学んだときは、理解して使うのに苦労したので、この講義を通して、行列式を難なく使えるようにしたい。
行列のメリット、使い方について、学んでいきましょう。
これまでの講義で行列が何度か出てきましたが、ふわっとした理解しかできていない状態です。この講義でしっかり基本を理解したいです。
行列を「使う」立場に立つと、ちゃんとした理解が必要です。がんばっていきましょう。
今回登場したアプリではどういった技術を使って開発されたのかが気になりました。
使っている言語はjavascriptです。なお、プログラム内でも行列を使う計算を使ってます。
線形代数は、物理学で使う微分方程式の形式化で使われてることもすでに勉強していて、便利なツールであるとともに抽象的な学問というイメージがあります。でも学んでいきたいと思います
抽象的だからこそ、広い範囲に役立つ、と考えることもできます。しっかり勉強していきましょう。
今まで連立方程式を行列を用いて表現する式をみたことがあったが意味が分からなかったけれど、今回の講義で、それが何らかの計算を変数に及ぼすとある定数となる、ということを行列を用いて表現しているだけだということが分かりました。
その変換が「線形」なときは、行列を使うととっても簡単になります。
線形代数の授業より理解できた気がする りんごとバナナの計算がちゃんと対応しててわかりやすかった
がんばって、理解していきましょう。
水平ずらし 垂直ずらし 回転がなぜそのような式になるのか理解できなかったので残念でした。
特に回転については、またじっくりやります。
今まで線形代数は覚えていたので、今度は覚えずに理解して解けるようになりたいと思いました。
数学は基本を理解して使わないと、危ないですね。
一次式を表す線形代数が電磁気学や量子力学などの基本方程式で重要な役割をしているということについて、さすがに言い過ぎではと思ったが、物理ではよくローカルな情報から微分方程式を作ることを思えば、なるほど理にかなっているなと感じた。今のところはまだ行列による計算も行列を用いないで計算したほうが早く感じるが、今後普通に計算したのでは間に合わないようなコンピュータによる計算を行っていくようなことを考えると、早いとこ基本的なことを理解していきたいし、これらの計算方法がどういった分野で重宝されていくのか興味がわいてきた。
物理で「線形性」がいかにありがたいかは、いろんなところでわかってくると思います。
線形代数入門を受講していた際は、なんだかめんどくさい事をするなーと思っていたが、改めて説明を受けると確かに便利かもと思えた。
どれだけ便利になるか、この後をお楽しみに。
今回の授業では行列の書き方、行基本変形について理解することができ、また、変換の順番を変えると同じではなくなるのを確認することが出来ました。行列は別の授業でもやったのですが忘れている部分もあったのでこういう基礎な部分を復習してしっかり理解していきたいと思いました。
計算方法については、この後もじっくりとやります。
連立方程式を解く従来の方法に慣れているために、どうしても行列式を使っての計算方法が面倒だなと思ってしまいます。しかし行列式を学んだ知人に聞くと誰に聞いても、方程式を解くよりも行列式を解いた方が書く量も少なくて済むしノートの見栄えが良いという意見ばかりです。今は新しいことに触れて嫌気がさしてしまうかもしれないが、前期が終わるころには、私も行列を使いこなせるように頑張ります。
行列のメリットは難しい問題のときほど現れるので、練習問題だけしてても「面倒だな」という感想になるのは仕方ないと思います。これから先で「どう応用するのか」にも気をつけておいてください。
何が便利なのか今は感じることがむずかしいですが、 行列がなかったら面倒くさいという気持ちにはやく辿り着くために計算になれていきたい。
今はわからなくて普通です。この後でじっくり、わかってくると思います。
すっかり答えるのを忘れていたために1週間経ってしまった。授業内容の振り返りもあやふやになってしまっているため次からはその日のうちにやりたい。
こういうのは溜め始めるとどんどん溜まるので、気をつけましょう。
今回の授業を受けてプログラマ―が何故線形代数を勉強するのかが分かりました。行列の伸縮やずらし、回転といったものが画像編集の際に行われる操作に似ているためです。
はい、実際CGなどの世界では線形代数使いまくってます。
図形の変換を表す「行列」