数学の話

筆者はド文系で高校数学も怪しいところがあるので、間違ったことを書いているかもしれない。


微分方程式って何?

学校で最後に数学を習って以来20年くらいになるが、ようやく、微分方程式を立てて解く意義みたいなものがわかった気がする(やっぱり「ちゃんと理解している人に教えてもらう」ってのは大切なんだなぁ:筆者が急に賢くなったのでなければ、きっとそういうことなんだと思う)。

微分方程式というのはようするに、

f'(x)=g(x)
これのことである(もちろん、時間関数であればf'(t)=g(t)などとしてもよい)。微分(導関数)の方程式だから微分方程式。未知の関数f(x)について、その導関数がxの関数であれば、両辺を積分して
f(x)=∫g(x)dx
としてもいいよねというのが話の大筋(もちろん、素朴に積分するだけで解けるものばかりではない:変数分離形であれば積分するだけでOKなので、定数変化法などのテクニックを使いこの形に落とし込むことを考えることが多い)。

たとえば今、水道の蛇口から毎秒xリットルの水を出し漏斗で漉すという作業を考える。漏斗から排出される水の量は漏斗の中の水の量に比例し、水量1リットルに対して0.1リットル毎秒の排水がある(水量をyリットルとするとy/10リットル排水される)としよう。流入出が平衡に達したとき(流入量と流出量が等しくなったとき)の漏斗の中の水量は、初等的にもすぐ求められる。

流入量=x=y/10=流出量
y=10x
すなわち、流入量が一定であれば、秒あたりの流入量の10倍が漏斗の中に溜まったところで平衡に達する。

しかしよく考えてみると、水量は「流入量-流出量」で変化しているのだから、その変化の割合(時間微分)y'について

y'=x-y/10
という式が立てられる。ただしここではy'=dy/dtであってy'=dy/dxでない、つまりxが定数扱いされている(2変数の式も立てられるが、常微分でなく偏微分になってしまいとても大変である:解ける形に誘導して解くというコンセプトが共通に使えるものもあり、両辺に同じ掛け算(積分因子)をしてやって完全微分形という「解ける形」に落とし込むことがある)。

ともあれ、y=10xでないとき、

dy/dt=x-y/10
1/(x-y/10)(dy/dt)=1
∫dy/(x-y/10)=∫dt
とかなんとかやって(計算があっているかどうか、筆者はまったくわかっていない:がようするに、置換積分をなぜ習うのかというとこれを解くためであり、合成関数の微分をなぜ習うのかというと置換積分に必要だからである)、最終的にy=f(t)の形(yをtの関数=時間関数として表現する)を得る。すんなり収束する式の場合はたいてい、aを収束値、bを収束速度の定数として
y=a(1-e^-bt)
といった形になる。これはようするに、タイムラグがある系だとかフィードバックがある系の時間応答を記述できるということである。

ということで、1つの数式も解くことなく(式は立てたけど解いてない)微分方程式の紹介が終了してしまった。まあなんとなくわかったような気にはなれたからいいや。


行列って何?

厳密な話はさておき、ぶっちゃけた定義としては「便利な計算方法の1つ」と考えてよい(たとえば2次式の因数分解に「たすきがけ」という手法を用いることがあるが、計算が便利になるだけで「たすき」の比喩自体には意味がないのと同じ)。行列というのがどういう概念であるのか、真面目に考え出すと幾何学や代数学をモリモリ持ち出さなければならないので、少なくとも筆者の手には負えない。

HTMLで記述する都合上、以下では行列をテーブル(TABLEタグ)で表記する。たとえば、2次単位行列は

10
01
とする。

和と差

行列が2つあって、両方の行数と列数が一致する場合、和と差を定義できる。たとえば行列A(3行2列)が

a11a12
a21a22
a31a32
行列B(3行2列)が
b11b12
b21b22
b31b32
であるとき、和Cと差Dも行列となり、Cは
a11+b11a12+b12
a21+b21a22+b22
a31+b31a32+b32
Dは
a11-b11a12-b12
a21-b21a22-b22
a31-b31a32-b32
となる。ようするに、同じ位置にある要素同士で加減算をしているわけである。

行列が2つあって、片方の列数ともう片方の行数が一致する場合、積(アーサーケイリーの行列積)を定義できる。たとえば行列A(2列)が

a11a12
a21a22
a31a32
行列B(2行)が
b11b12b13
b21b22b23
であるとき、行列積Cも行列となり、i行j列の要素が「Aのi行とBのj列の要素を順に掛け算して足したもの」になる。すなわちCは
a11*b11+a12*b21a11*b12+a12*b22a11*b13+a12*b23
a21*b11+a22*b21a21*b12+a22*b22a21*b13+a22*b23
a31*b11+a32*b21a31*b12+a32*b22a31*b13+a32*b23
となる。Cの行数はAと一致し、列数はBと一致する。

これは一見複雑なようだが、ようするに内積の計算と同じで、たとえばCの3行2列の要素はa31*b12+a32*b22だが、これはAの3行目(a31 , a32)とBの2列目(b12 , b22)の内積でしかない。つまり、行列積を求める演算は内積を繰り返し求める演算と同じである(という理解がすこし鈍臭いんじゃないのという話は後でする)。

単位行列と逆行列と転置行列

除算は(普通)定義しないのだが、正方行列(行数と列数が同じ行列)においては単位行列を定義する。単位行列とは、1行1列、2行2列、3行3列・・・n行n列の要素(行列を正方形に見立てると対角線が通る場所なので、対角要素とも呼ばれる)が1で、それ以外の要素が0の正方行列である。たとえば4次の単位行列Eは、

1000
0100
0010
0001
になる。どのような4行または4列の行列と積を取っても、元の数列と行列積の数列が一致する。つまり、任意の4列行列Xに対して常にXE=Xであり、任意の4行行列Yに対して常にEY=Yである(任意の4次正方行列Zに対しては、常にZE=EZ=Z)。

また、行列Xに対してXY=Eとなるような行列Yについて、行列Xの逆行列であると表現し、Y=X-1と書く。このときXもYの逆行列であり、YX=Eである。

さらに、行列A(i,j)に対して、行列AT(j,i)を転置行列と呼ぶ。ようするに、行と列を入れ替えた行列(Aのi行j列の要素と、行列ATのj行i列の要素が一致する)のことで、Tはtransposed matrixの頭文字。



ベクトルは1行または1列の行列と見る

行行列と見ても列行列と見てもよいが、演算上は列行列(縦ベクトル)と見た方が便宜がよい。筆者が高校で習った数学はここが舌足らずだった。

たとえばベクトルX(a , b)とベクトルY(c , d)の和を行列演算で求めたい場合、

a
b
c
d
の和と見て計算し、
a+c
b+d
という解を得る。すなわちX+Y=(a+c , b+d)である。ここまでは直感的に納得できよう。

一方内積を求める場合は、

ab
c
d
の積と見て、
a*c+b*d
演算結果は1行1列の行列(スカラとして扱われる)で、X・Y=a*c+b*dという解を得る。列行列として定義したはずのベクトルが行行列に変わっているが、これはたまたまではなく「行列Xと行列Yの内積はXTY」という演算法則が先にあってこのような処理をしているのである。ベクトルを行行列(横ベクトル)で扱うと、ここの処理が面倒なことになる。

もしここで「ベクトル」と「列行列」を同一視すると、「大きさと向きを持った量」という幾何ベクトルの定義が意味を失い、「複数次の可算な要素を一定順序に並べたもの」という非常に広義な定義が取って代わることになる。



スカラは乗算のみ

行列積が1行1列になった場合スカラとして扱うと述べたが、これは一方通行の変化であって逆は成り立たない。つまり、演算結果が1行1列の行列であればスカラとして扱うが、スカラを1行1列の行列として扱うことはない(というか、1行1列の行列は定義しない)。スカラと行列の演算は乗算のみ定義し、各要素にスカラの値をかけてやる。たとえば行列A

123
345
に2をかけると
246
6810
になるし、1/3をかけると
1/32/31
14/35/3
になる。

後でちらっと出てくる「テンソル」という用語を(場違いだがムリヤリ)使うと、スカラは0階のテンソルでベクトルは1階のテンソルになる。ここでは「テンソルの階数」と「添え字の個数」を同一視しても多分問題なく、行と列が決まってはじめて要素を特定できる行列(添え字2個:普通はiとjを使う)は2階のテンソルになる。

行列を立体的に積み上げて「段」のような概念を加えれば3階のテンソルも比較的容易に作れるし、演算上はさらに高階のテンソルも想定できる。もっと簡易に、ベクトルの中に行列を入れ子(ネスト)にしてX(A , B , C)(ただしABCはそれぞれ行列を示す)のような形にしたり、行列の中に行列を入れ子にしてもよいだろう(ネストを深くすればn階のテンソルを記述できる)。こう考えると、行列自体がベクトルの中にベクトルを入れ子にした構造をしている。



ベクトルを複数集める

互いに1次独立でゼロでない2次ベクトルXとYによってベクトル平面を、互いに1次独立でゼロでない3次ベクトルXとYとZによってベクトル空間(って呼び方も正しい使い方がよくわからんけど)を構成できることは高校までの数学で習うが、行列は複数のベクトルを収納できるため、2次ベクトルを2つ収納した2次正方行列で2次元を、3次ベクトルを3つ収納した3次正方行列で3次元を表現できることになる。実際にどうなっているのか筆者はまったく知らないが、正方行列の次数をどんどん上げていけば、とんでもなく高次の表現もきっとできるに違いない。

もし収納するベクトルすべてが互いに直交する単位ベクトルであったなら、収納後の行列は単位行列になる。たとえば、x(1 , 0 , 0)とy(0 , 1 , 0)とz(0 , 0 , 1)という3つの3次ベクトルを行列Eに収納すると、

100
010
001
という3次の単位行列になる(収納する順番は任意に決めてよいのだと思う、多分)。これはE(x , y , z)という入れ子を見立てたのと同義である。

収納するベクトルが1行行列か1列行列か(縦ベクトルか横ベクトルか)を気にする必要はなく、

1
0
0
0
1
0
0
0
1
を横に並べても、
100
010
001
を縦に重ねても、結局
100
010
001
になることは変わらない(ただし、入れ子が縦であれば器は横、入れ子が横であれば器は縦と、交差する形でなくてはならない)。



積は内積だけではない

内積(と普通呼んでいるものは厳密には標準内積といい、他にフロベニウス内積などもある)があるのだから当然外積もある。3次ベクトルXと3次ベクトルYの外積は、XとYの両方に直交し(すなわちXとYを含む平面の法線と平行で)、大きさがXとYが張る平行四辺形の面積と等しく、XとYに対して正の向きである(行列式の値で求めるのが本来らしい:2次正方行列に逆行列が存在するかどうか確認するときの、ad-bcのアレ)ベクトルになる。

これは何なのかというと、たとえば電界と磁界が交差しているときに生じるローレンツ力を計算する場合に、電界と磁界をそれぞれベクトルXとYに見立てて外積を計算すると、結局ローレンツ力が求まる、というものである(これの特殊形をさらに簡略化したのが、フレミングの左手の法則)。ベクトルX(a , b , c)とベクトルY(d , e , f)の外積について要素で計算すると、ベクトル(bf-ce , cd-af , ae-bd)が求まる。歴史的な経緯は知らないが、もしかすると、ローレンツ力などを求める計算が先にあって、あとから「ベクトルの外積」という名前を付けただけなのかもしれない。ちなみに、内積の計算結果はスカラ、外積の計算結果はベクトルになることから、前者をスカラ積、後者をベクトル積と呼ぶことがある。

さて、外積も行列に応用できる概念ではあるのだが、その前に直積という概念に寄り道してみる。内積がスカラ、外積がベクトルになるのに対して直積は行列になり、たとえばベクトルX(a , b , c)

a
b
c
とベクトルY(d , e , f)
d
e
f
の直積は、行列
adaeaf
bdbebf
cdcecf
になる(XとYの内積がXTYなのに対して直積はXYT)。歴史的な経緯は知らないが、この直積が元の形であって、その要素を利用して各種の積を求めるのだと考えた方がずっとスッキリするように思えてならない。すなわち、直積の要素を対角線で足していくとたまたま|X||Y|cosθに一致するからこれを標準内積と呼びましょう、要素を全部足したものはフロベニウス内積でいいですね、XYTとYXTを引き算して要素を抜き出したものは外積にしましょうかXとYが張る平行四辺形の面積と大きさが等しいですね、といった具合である。

ということで話が前後してしまったが、XとYの直積からYとXの直積を引くと外積が求まる。たとえば上記の場合YとXの直積は

dadbdc
eaebec
fafbfc
になり、実際に引き算すると
ad-daae-dbaf-dc
bd-eabe-ebbf-ec
cd-face-fbcf-fc
すなわち
0ae-bd-(cd-af)
-(ae-bd)0bf-ce
cd-af-(bf-ce)0
になるが、ここに反対称テンソルやら擬テンソルやらホッジ作用素などといった概念を突っ込むと(bf-ce , cd-af , ae-bd)というベクトルを引っ張り出せるらしい(卵と鶏どちらが先なのか筆者は知らない)。また、外積とは別にクロス積という概念もあるが、3次のクロス積は外積に一致するらしいので似たようなものなのだろう。

内積についてもう少し

上では内積を計算規則XTYとして把握し、直積行列の対角線にある値の和と同値であることを確認したが、それ以外の意味にもいくつか触れておきたい。

2つのベクトルAとBが角θ(ただし0<θ<π)をなすとき、つまり共通の始点Oを用いて三角形OABが定義できる場合、Aを延長した直線にBから垂線を下ろすことができ、その垂線の足をHとすると、Aと平行なベクトルHが得られる。この作業(ないし得たベクトルH)を正射影といい、Hは、BがAの向きにどれだけの大きさを持っているかを示すことになる。このとき、三角比の定義からH=(|B|cosθ/|A|)Aであり、分子の|B|cosθを有向距離(または符号付き長さ)と呼ぶ。そしてこの有向距離に|A|を掛け算したものが内積、演算としてはATBで求められる。鶏と卵みたいな関係で、ATBを演算すると|A||B|cosθの値になっている、と言い換えても同値である(多分)。なお、空間ベクトルであれば有向面積(または符号付き面積)も考えることができ、絶対値が面積に等しい法線ベクトル(面積ベクトル)で表す。

ベクトルの内積は三角比を含むので、A・B=|A||B|cosθ(ただし0<θ<π、A≠0、B≠0)という関係から直ちにcosθ=A・B/(|A||B|)が得られる。これを用いるとさまざまな図形演算ができ、なかでも三角形の面積|A||B|sinθ/2=((|A|^2|B|^2-(A・B)^2)^(1/2))/2というのを平面ベクトルで成分計算した形S=|XaYb-YaXb|/2は大変便利である。また値データに対して、データ1の偏差を並べた数列(=長いベクトル)Aとデータ2の偏差を並べた数列B(ただしどちらも要素数n)を用意すると、Aの標準偏差=n^(-1/2)|A|、の標準偏差=n^(-1/2)|B|になることから共分散=A・B/n、相関係数=A・B/(|A||B|)=cosθになる。

ここまでは実数の範囲だけで考えたが、とくに物理学方面でテンソル空間やテンソル場を意識するときのテンソルは暗黙に複素数を要素とし、ディラックのブラケット記法を用いて(たとえば<ψ|φ>のように)書くことが多い。「>」は「ケット記号」で縦ベクトル(基底ベクトルを意識する文脈では「(0, 1) 型テンソル」とも)、「<」は「ブラ記号」で縦ベクトルを転置して要素をそれぞれの共役複素数に置き換えたもの(エルミート共役とかエルミート転置とか、行列の場合は随伴行列とも呼ばれ、名前が多い:上の場合結局横ベクトル=「(1, 0) 型テンソル」になる)を示すから、<ψ|φ>は「縦ベクトルψのエルミート共役と、縦ベクトルφの積」を示し、内積を示す「・」で書き換えれば(|ψ>)・(|φ>)と同値ということになる(わざわざ共役複素数を取っているのは<ψ|ψ>^(1/2)=|ψ|(より厳密に書くなら||ψ||2)が実数になるように計算規則を定めたらそうなる、といういことのよう)。テンソル積は|ψ>⊗|φ>とか<ψ|⊗<φ|のように丸付きの乗算記号で示す(正しくないのかもしれないが筆者は「タテヨコうまく調整して直積取ってね」という意味に解釈している:正確には直積自体ではなく「直積が生成するベクトル空間」のことを指すんだとか何とか)。ディラックのブラケット記法については専門教育の場でも混乱があるらしく、詳しく知りたい人はちゃんと理解している人の説明を参照。数学方面では線形代数ないし多重線形代数を扱うとき便宜のよい記法が好まれるようだが、筆者はまったく理解できなかった(ベクトル空間(=線型空間)と線型変換(=線型写像)を中心にした代数が線形代数で、それを積で考えるのが多重線形代数、代表例としてテンソル代数などがある、ということのよう)。

ずっと正体不明で名前だけ先行しているこのテンソルというのが何者かというと、ようは多次元配列のことを言っているだけではあるのだが、線型な多変数関数の表現形式だとするのがスッキリするらしい(流束とか考えるときを想定したら、ああそういやそうですねという感じがしないでもない:この手の「数学的にはいろいろ深い事情があるけど、ウチの分野で使う分にはこういう意味」的な定義が乱立しているのも、わかりにくさに拍車をかけているように思える)。もっとはっちゃけた捉え方としては「テンソル積の元」(いや、そりゃそうだけど、あんまりじゃない?)というのもアリなようで、そうすると、線型な写像をなすなり変換を行うなりする元(体には四則演算可能な代数系を想定し、無限次の空間に基底を与えることで有限次の場を取り出すのだとか何とか)、ということになるんだろうか(場とか環とか群とか元とか体とか空間とか、どれがどれやら筆者は理解していないし、「ベクトル空間」と「テンソル空間」の区別もサッパリついていないことを白状しておきたい:詳しく知りたい人はちゃんと理解している人の説明を参照)。・・・ボロが出てきたのでこの辺で話題を変えたい。


平均って何?

ずっと表題が疑問形なのは、ようするに筆者が理解していないからである。

平均という言葉自体は小学校で習い、それが相加平均(算術平均)という種類の平均であって、ほかに相乗平均(幾何平均)というのがあることをたしか中学校くらいで習う。実は、電気回路の抵抗なんかを計算するときに調和平均というのも(そういう名前で習いはしなかったと思うが)使っている。ここで挙げた3つをまとめてピタゴラス平均という。

平均の定義を一般化すると、

μm = (1/nΣ(i=1,n,xi^m)^(1/m)
ないし
m^m = (Σ(i=1,n,xi^m)
(同値)
だかになるらしく、ここでm=1だと算術平均、-1だと調和平均、m→0への極限が相乗平均、m=2だと二乗平均平方根(RMS)、m→∞への極限が最大値、m→-∞への極限が最小値、にそれぞれなる(そうな)。上の式の両辺をm乗した形
μm^m = (1/nΣ(i=1,n,xi^m)
がm乗平均と呼ばれ、データをノーマライズしてm=2のm乗平均を取ると分散になる(多分)。

ピタゴラス平均は相互に大小関係があって、相加平均≧相乗平均≧調和平均となる。高校の数学では2数の相加相乗平均くらいまでしか公式になっていなかったような気がするが、2数の相加相乗平均ならa^2-2ab+b^2=(a-b)、3数の相加相乗平均なら(いったん3乗根で書き直して)a^3+b^3+c^3-3abc=(a+b+c)(a^2+b^2+c^2-ab-bc-ca)の変形から相加平均≧相乗平均と等号成立条件を証明できるし、4数のときは2数の証明を2回繰り返せばよい。一般化するときは対数関数が上に凸であることを利用するのが一般的で、ようするに、y=log(x)のグラフ上に任意個の点を取ったとき、それらの重心は必ずグラフよりも下にある(ことを帰納法で説明できる)。

算術平均と幾何平均を繰り返し取ることで算術幾何平均というのも求められ、a0>b0なる非負実数について、

ai+1=(ai+bi)*(2/1)
bi+1=(ai*bi)^(1/2)
という漸化式に従うとき、m→0へのaiの極限とbiの極限が一致し、これを算術幾何平均という。

積分する、総和(ないし平均)を取る、ローパスフィルタをかけるという各作業はかなり似通っており、場合によってはまったく同値である。



もどる

自滅への道トップページ