筆者はド文系で高校数学も怪しいところがあるので、間違ったことを書いているかもしれない。
学校で最後に数学を習って以来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=流出量すなわち、流入量が一定であれば、秒あたりの流入量の10倍が漏斗の中に溜まったところで平衡に達する。
y=10x
しかしよく考えてみると、水量は「流入量−流出量」で変化しているのだから、その変化の割合(時間微分)y'について
y'=x-y/10という式が立てられる。ただしここではy'=dy/dtつまりx,yともにtの関数であって、y'=dy/dxではない(2変数の式も立てられるが、常微分でなく偏微分になってしまいとても大変である)。
ともあれ、y=10xでないとき、
dy/dt=x-y/10とかなんとかやって(計算があっているかどうか、筆者はまったくわかっていない:がようするに、置換積分をなぜ習うのかというとこれを解くためであり、合成関数の微分をなぜ習うのかというと置換積分に必要だからである)、最終的にy=f(t)の形(yをtの関数=時間関数として表現する)を得る。すんなり収束する式の場合はたいてい、aを収束値、bを収束速度の定数として
1/(x-y/10)(dy/dt)=1
∫dy/(x-y/10)=∫dt
y=a(1-e^-bt)といった形になる。これはようするに、タイムラグがある系だとかフィードバックがある系の時間応答を記述できるということである。実用上は、方程式の種類や条件により定型的な解法があり、それらの解法に問題を落とし込むような感じで解くことになる(変数分離形、同次形、同次線形、非同次線形、完全微分形といったあたりは初等的な解法があり、それを公式化して使う:ベルヌーイの微分方程式、リッカチの微分方程式、オイラーの微分方程式、ガウスの微分方程式、ルジャンドルの微分方程式など固有名詞つきの有名な常微分方程式もあるし、クネーザーの微分方程式、ローレンツの微分方程式、パンルヴェの微分方程式など単なる解法を超えた理論もある)。
ということで、1つの数式も解くことなく(式は立てたけど解いてない)微分方程式の紹介が終了してしまった。まあなんとなくわかったような気にはなれたからいいや。
厳密な話はさておき、ぶっちゃけた定義としては「便利な計算方法の1つ」と考えてよい(たとえば2次式の因数分解に「たすきがけ」という手法を用いることがあるが、計算が便利になるだけで「たすき」の比喩自体には意味がないのと同じ)。行列というのがどういう概念であるのか、真面目に考え出すと幾何学や代数学をモリモリ持ち出さなければならないので、少なくとも筆者の手には負えない。
HTMLで記述する都合上、以下では行列をテーブル(TABLEタグ)で表記する。たとえば、2次単位行列は
1 | 0 |
0 | 1 |
行列が2つあって、両方の行数と列数が一致する場合、和と差を定義できる。たとえば行列A(3行2列)が
a11 | a12 |
a21 | a22 |
a31 | a32 |
b11 | b12 |
b21 | b22 |
b31 | b32 |
a11+b11 | a12+b12 |
a21+b21 | a22+b22 |
a31+b31 | a32+b32 |
a11-b11 | a12-b12 |
a21-b21 | a22-b22 |
a31-b31 | a32-b32 |
行列が2つあって、片方の列数ともう片方の行数が一致する場合、積(アーサーケイリーの行列積)を定義できる。たとえば行列A(2列)が
a11 | a12 |
a21 | a22 |
a31 | a32 |
b11 | b12 | b13 |
b21 | b22 | b23 |
a11*b11+a12*b21 | a11*b12+a12*b22 | a11*b13+a12*b23 |
a21*b11+a22*b21 | a21*b12+a22*b22 | a21*b13+a22*b23 |
a31*b11+a32*b21 | a31*b12+a32*b22 | a31*b13+a32*b23 |
これは一見複雑なようだが、ようするに内積の計算と同じで、たとえばCの3行2列の成分はa31*b12+a32*b22だが、これはAの3行目(
除算は(普通)定義しないのだが、正方行列(行数と列数が同じ行列)においては単位行列を定義する。単位行列とは、1行1列、2行2列、3行3列・・・n行n列の成分(行列を正方形に見立てると対角線が通る場所なので、対角成分とも呼ばれる)が1で、それ以外の成分が0の正方行列である。たとえば4次の単位行列Eは、
1 | 0 | 0 | 0 |
0 | 1 | 0 | 0 |
0 | 0 | 1 | 0 |
0 | 0 | 0 | 1 |
また、行列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の頭文字。転置してさらに成分を共役複素数に置き換えたものはエルミート共役(随伴作用素:行列の場合は随伴行列とも)と呼ばれ、ダガー記号(短剣符)A†、アルファベットのH(ヒルベルト空間の「H」なのかな?)AH、たんにアスタリスクA*などで表すことが多い。
行行列と見ても列行列と見てもよいが、演算上は列行列(縦ベクトル)と見た方が便宜がよい。筆者が高校で習った数学はここが舌足らずだった。
たとえばベクトルX(a , b)とベクトルY(c , d)の和を行列演算で求めたい場合、
a |
b |
c |
d |
a+c |
b+d |
一方内積を求める場合は、
a | b |
c |
d |
a*c+b*d |
もしここで「ベクトル」と「列行列」を同一視すると、「大きさと向きを持った量」という幾何ベクトルの定義が意味を失い、「複数次の可算な成分を一定順序に並べたもの」という非常に広義な定義が取って代わることになる。
積が1行1列になった場合スカラとして扱うと述べたが、これは一方通行の変化であって逆は成り立たない。つまり、演算結果が1行1列の行列であればスカラとして扱うが、スカラを1行1列の行列として扱うことはない(というか、1行1列の行列は定義しない)。スカラと行列の演算は乗算のみ定義し、各成分にスカラの値をかけてやる。たとえば行列A
1 | 2 | 3 |
3 | 4 | 5 |
2 | 4 | 6 |
6 | 8 | 10 |
1/3 | 2/3 | 1 |
1 | 4/3 | 5/3 |
後でちらっと出てくる「テンソル」という用語を使うと、スカラは0階のテンソル(つまりテンソルでない、とも解釈できる)でベクトルは1階のテンソルになる。ここでは「テンソルの階数」と「添え字の個数」を同一視しても多分問題なく、行と列が決まってはじめて成分を特定できる行列(添え字2個:普通はiとjを使う)は2階のテンソルになる。
行列を立体的に積み上げて「段」のような概念を加えれば3階のテンソルも比較的容易に作れるし、演算上はさらに高階のテンソルも想定できる。もっと簡易に、ベクトルの中に行列を入れ子(ネスト)にしてX(A , B , C)(ただしABCはそれぞれ行列を示す)のような形にしたり、行列の中に行列を入れ子にしてもよいだろう(ネストを深くすればn階のテンソルを記述できる:双行列とか、行列式で外積を求める際の計算などに、本来3階あるはずのテンソルを行列の書き方にムリヤリ押し込んだものも出てくる)。こう考えると、行列自体がベクトルの中にベクトルを入れ子にした構造をしている。
互いに1次独立でゼロでない2次ベクトルXとYによってベクトル平面を、互いに1次独立でゼロでない3次ベクトルXとYとZによってベクトル空間(って呼び方も正しい使い方がよくわからんけど)を構成できることは高校までの数学で習うが、行列は複数のベクトルを収納できるため、2次ベクトルを2つ収納した2次正方行列で2次元を、3次ベクトルを3つ収納した3次正方行列で3次元を表現できることになる。実際にどうなっているのか筆者はまったく知らないが、正方行列の次数をどんどん上げていけば、とんでもなく高次の表現もきっとできるに違いない。
もし収納するベクトルすべてが基本ベクトル(標準基底をなすベクトル:ひとつの要素が1で残りが0)であったなら、収納後の行列は単位行列になる。たとえば、x(1 , 0 , 0)とy(0 , 1 , 0)とz(0 , 0 , 1)という3つの3次ベクトルを行列Eに収納すると、
1 | 0 | 0 |
0 | 1 | 0 |
0 | 0 | 1 |
収納するベクトルが1行行列か1列行列か(縦ベクトルか横ベクトルか)を気にする必要はなく、
1 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
1 |
1 | 0 | 0 |
0 | 1 | 0 |
0 | 0 | 1 |
1 | 0 | 0 |
0 | 1 | 0 |
0 | 0 | 1 |
注意が必要なのは積を考える場合で、以下詳しく見ていくが、左側の行列は(横ベクトルが)縦に積み重なったものとして、右側の行列は(縦ベクトルが)横に並んだものとして扱う。
内積(として高校で習ったものはユークリッド内積(標準内積)といい、他に標準エルミート内積(標準複素内積)やフロベニウス内積などもある:数学的には「内積の公理」を満たすものならなんでも内積だし、公理を弱めて半内積とか不定値内積といったものを考えることもあるそうな)があるのだから当然外積もある。3次ベクトルXと3次ベクトルYの外積は、XとYの両方に直交し(すなわちXとYを含む平面の法線と平行で)、大きさがXとYが張る平行四辺形の面積と等しく、XとYに対して正の向きであるベクトルになる(ベクトルを「標準基底の線形結合」と見ていったんバラしてから演算すると成分で表現できる:途中で行列式の演算と同様の操作が繰り返し出てくるので、小行列を作っては余因子を取り出す計算で求めることもでき、3次までなら速度的にもそんなに遅くない)。内積の計算結果はスカラ、外積の計算結果はベクトルになることから、前者をスカラ積、後者をベクトル積と呼ぶことがある。
さて、外積も行列に応用できる概念ではあるのだが、その前に直積という概念に寄り道してみる。内積がスカラ、外積がベクトルになるのに対して直積は行列になり、たとえばベクトルX(a , b , c)
a |
b |
c |
d |
e |
f |
ad | ae | af |
bd | be | bf |
cd | ce | cf |
ということで話が前後してしまったが、XとYの直積からYとXの直積を引くと外積が求まる。たとえば上記の場合YとXの直積は
da | db | dc |
ea | eb | ec |
fa | fb | fc |
ad-da | ae-db | af-dc |
bd-ea | be-eb | bf-ec |
cd-fa | ce-fb | cf-fc |
0 | ae-bd | -(cd-af) |
-(ae-bd) | 0 | bf-ce |
cd-af | -(bf-ce) | 0 |
上では内積を計算規則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は大変便利である(平面ベクトルをz軸成分0の3次元と見て外積を取っても同じ結果)。また値データに対して、データ1の偏差を並べた数列(=長いベクトル)Aとデータ2の偏差を並べた数列B(ただしどちらも要素数n)を用意すると、Aの標準偏差=n^(-1/2)|A|、Bの標準偏差=n^(-1/2)|B|になることから共分散=A・B/n、相関係数=A・B/(|A||B|)=cosθになる。
ここまでは実数の範囲だけで考えたが、とくに物理学方面でテンソル空間やテンソル場を意識するときのテンソルは暗黙に複素数を成分とし、ディラックのブラケット記法を用いて(たとえば<ψ|φ>のように)書くことが多い。「>」は「ケット記号」で縦ベクトル(基底ベクトルを意識する文脈では「(0, 1) 型テンソル」とも)、「<」は「ブラ記号」で縦ベクトルを転置して成分をそれぞれの共役複素数に置き換えたエルミート共役(上の場合結局横ベクトル=「(1, 0) 型テンソル」になる)を示すから、<ψ|φ>は「縦ベクトルψのエルミート共役と、縦ベクトルφの積」を示す(わざわざ共役複素数を取っているのは<ψ|ψ>=|ψ|^2(より厳密に書くなら(||ψ||2)^2)が実数になるように計算規則を定めたらそうなる、といういことのよう:そもそもが、複素数に絶対値の概念を導入する時点でz*z=|z|^2なわけだから、まあ多少の工夫は必要なのだろう)。テンソル積は|ψ>⊗|φ>とか<ψ|⊗<φ|のように丸付きの乗算記号で示す(正しくないのかもしれないが筆者は「タテヨコうまく調整して直積取ってね」という意味に解釈している:正確には直積自体ではなく「直積が生成するベクトル空間」のことを指すんだとか何とか)。
ディラックのブラケット記法については専門教育の場でも混乱があるらしく、詳しく知りたい人はちゃんと理解している人の説明を参照。数学方面では線形代数ないし多重線形代数を扱うとき便宜のよい記法が好まれるようだが、筆者はまったく理解できなかった(ベクトル空間(=線型空間)と線型変換(=線型写像)を中心にした代数が線形代数で、それを積で考えるのが多重線形代数、代表例としてテンソル代数などがある、ということのよう)。また数学でいうテンソル積は「左側のテンソルの成分ひとつひとつを右側のテンソルに乗算して並べたもの」(行数も列数も一致する必要がなく、テンソルとスカラの乗算もこの一種だと解釈するのが自然)を指し、縦ベクトルと横ベクトルであれば直積に一致するものの、行列同士だとクロネッカー積と呼ばれる大きな行列になる。行列積とか直積とか内積といったものは、テンソル積の成分を規則的に取り出して演算した結果と見ることができる。テンソルに対して規則的な操作をする場合、たとえば行列の中身を縦ベクトルに書き出すときはvec(A)のような書き方をすることがある(作用素とかオペレーターとか演算子とか、分野や用途や書き手の意図によりさまざまに呼ばれる:上で例に挙げたvec作用素のほか、grad、div、rotなどがよく使われる)。
ずっと正体不明で名前だけ先行しているこのテンソルというのが何者かというと、ようは多次元配列のことを言っているだけではあるのだが、線型な多変数関数の表現形式だとするのがスッキリするらしい(流束とか考えるときを想定したら、ああそういやそうですねという感じがしないでもない:この手の「数学的にはいろいろ深い事情があるけど、ウチの分野で使う分にはこういう意味」的な定義が乱立しているのも、わかりにくさに拍車をかけているように思える)。もっとはっちゃけた捉え方としては「テンソル積の元」(いや、そりゃそうだけど、あんまりじゃない?)というのもアリなようで、そうすると、線型な写像をなすなり変換を行うなりする元(体には四則演算可能な代数系を想定し、無限次の空間に基底を与えることで有限次の場を取り出すのだとか何とか)、ということになるんだろうか(詳しく知りたい人はちゃんと理解している人の説明を参照)。・・・ボロが出てきたのでこの辺で話題を変えたい。
ずっと表題が疑問形なのは、ようするに筆者が理解していないからである。
平均という言葉自体は小学校で習い、それが相加平均(算術平均)という種類の平均であって、ほかに相乗平均(幾何平均)というのがあることをたしか中学校くらいで習う。実は、電気回路の抵抗なんかを計算するときに調和平均というのも(そういう名前で習いはしなかったと思うが)使っている。ここで挙げた3つをまとめてピタゴラス平均という。
平均の定義を一般化すると、
μm = (1/nΣ(i=1,n,xi^m)^(1/m)だかになるらしく、ここでm=1だと算術平均、-1だと調和平均、m→0への極限が相乗平均、m=2だと二乗平均平方根(RMS)、m→∞への極限が最大値、m→-∞への極限が最小値、にそれぞれなる(そうな)。上の式の両辺をm乗した形
ないし
nμm^m = (Σ(i=1,n,xi^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)という漸化式に従うとき、m→0へのaiの極限とbiの極限が一致し、これを算術幾何平均という。
bi+1=(ai*bi)^(1/2)
積分する、総和(ないし平均)を取る、ローパスフィルタをかけるという各作業はかなり似通っており、場合によってはまったく同値である。
代数的構造を持つ集合を代数系といい、代数的構造の特徴によりいろいろな名称で呼ばれる。
圏論や位相構造はとても複雑で筆者の手には負えない。たとえば複素平面の考え方は、複素数全体がなす体と、2次平方行列の部分環と、2次実ベクトルと(1,i)の内積が、それぞれ同型だか準同型だかで云々、とやる(らしい)のだが、言葉の定義からして筆者には手強すぎる。~に対応するとか、~を表すとか、~を表現できるとかいった、感覚的な表現でお茶を濁したいところ。直和は文脈でいろいろ意味が変わる用語で、U⊕Wと書く。線型代数ではV⊃U,WかつU∩W=φのときU+Wを直和というのが普通。このときdim(U+W)=dimU+dimWとなる。
テイラー展開は多変数関数にも適用できるらしい。シグマがいっぱいついた恐ろしい形になるので見なかったことにしておきたい。一実変数関数のテイラー展開はf∈C∞(I)の点aまわりのテイラー級数Σ[n=0,∞](f(n)(a)/(n!))(x-a)^nを与え、a=0とみなせる範囲(中心0の収束半径の内側)におけるΣ[n=0,∞](f(n)(0)/(n!))(x)^nをとくにマクローリン級数、マクローリン級数を得る演算をマクローリン展開という(さらに、正則な点周りでしかできない(無限回微分できるのが条件だから:複素関数は「1回微分可能ならば何回でも微分可能」らしい)テイラー展開を、特異点周りでもできるようにしたローラン展開という操作もある:マクローリン展開がテイラー展開の特殊形で、テイラー展開はローラン展開の特殊形)。ラプラス変換は∫[0,∞]e-stf(t)dt(ただしiを虚数単位σ,ωを実数としてs = σ + iω)、ラプラス逆変換は1/(2πi)∫[σ-i∞,σ+i∞]F(s)e^(st)ds(見ての通り複素積分で、留数定理を使って計算する)だが、実用上は(「ラプラス逆変換表」とか何とかそんな名前がついた)代表的な関数の変換表を使う。