Google ClassroomGoogleクラスルーム
GeoGebraGeoGebra Classroom

関数にも内積と直交がある

このワークシートはMath by Codeの一部です。 量子力学の数学準備をしよう。 今回はヒルベルト空間 ざっくりいうと、関数をベクトルとみなして、ベクトルの内積のように、 関数どうしの内積ができるようにした関数の集合体がヒルベルト空間です。

1.関数は線形空間になる。

関数は線形空間になる> 量子力学で扱う状態は関数です。 関数をベクトルのように扱うという話しです。 ベクトルと言っても、成分から考えと要素の数が気になってしまいますね。 そうではなく、線形空間という意味です。 ひらたくいうと、和とスカラー倍しても比例が保存される集合とういうことです。 関数fとgの和f+gも関数だし、関数fの定数倍kfも関数だということです。 だから、1次結合af+bgももちろん関数。

2.ヒルベルト空間を定めよう

<内積を定めよう> とりあえず、関数f、gについて内積<f、g>があるとします。 中身は未定です。 ただ、複素数の世界で複素数が返ることは前提です。 ・<f、f>は非負、=0になるのはf=0に限る。 ・ノルム|x|=sqrt(xとxの内積) ・ 内積の右側の線形性がある。 ・共役対称性 <x、y>=<y、x>* *は共役複素数の印です。 <無限次元で内積を定めよう> 線形代数では、dimとrankなど次元が重要でしたね。もちろん有限です。 観測や集計した値が離散データなら、x1、x2、x3、…、xnのように切り取れます。 しかし、切れ目なくデータを取る場合xがaからbの範囲すべてなら、実数の濃度になってしまいます。 しかし、加算無限個にしておけば、個数は多いですが数え数と同じです。 理論上は対応がつけられますね。こうして、y=f(x)というのを数値から数値ではなく、 加算無限のxデータに対して加算無限のyデータを対応づけるので、 ベクトルからベクトルへ対応しているのと同じ構造になります。 つまり、内積は2次元なら<f、g>=f1・g1+f2・g2=Σfigi(i=1,2) 内積がn次元なら<f、g>=Σfigi(i=1,2,....,n) このnを無限大にすると、合計が無限個になりますね。Σが∫になりますが、線形なままです。 そこで、区間[a,b]に対して、定義できるxの関数たちf、g、h、i, j、.......の集合があるとしよう。 そのときに2つの関数f、gの内積はf*はfの複素共役として、 <f,g>=integral(f * ・g ,x, a, b) と決めることで、距離が決まる。これがヒルベルト空間です。 区間[a,b]にわたって、xに対する関数値f*と関数gの積を連続的に合計します。 確かに、成分の積和という、ふつう内積を拡張したものだというイメージにあいますよね。 でも、なんでfだけ共役にするのか違和感がある人もいるでしょう。 これは、複素数aのノルムを計算するとき、sqrt(a*・a)にしました。 極端な場合に通じるように、一般の場合もそれに合わせているくらいに考えればよいね。 <ヒルベルト空間の内積は内積と呼べるか> ヒルベルト空間が内積のルールに合格しているかを確かめてみよう。 ・まず、ノルムが非負であること。 |f|=<f、f>=integral(f*・f,x,a,b)xがaからbにわたるときx=cのとき、 f(c)*・f(c)=|f(c)|という複素数f(c)のノルムですから非負ですね。その合計が無限個でも非負です。 ・次は、共役対称性は? さっきと同じくx=cのときを考えよう。p=f(c),q=g(c)とおくと、 <f、g>のcの瞬間の値は<p*、q>、<g、f>では<q*、p>です。 p=s+it, q=u+ivとして、<p*、q>=(s-it)(u+iv)=su+tv+(sv-tu) <q*,p>=(u-iv)(s+it)=(su+tv)-(sv-tu)=<p*、q>*ですね。 各瞬間が成り立つので、合計でも成り立つはずだね。 最後は、線形性だ。 これは、やらなくても、Σの線形性を継承する∫の線形性から明らかだね。

3.複素線形空間の構造をさぐろう

ヒルベルト空間が定まったので、 次は空間の構造をさぐろう。 ヒルベルト空間の関数は数学的にはベクトルの拡大版で、物理的には状態を表す目的のものだった。 ということは、 ベクトルに基底ベクトルがあるように、状態にも基底がある。 ベクトルに定数倍があるように、状態にも定数倍がある。 ベクトルに直交があるように、状態にも直交がある。 ベクトルに角度、類似性があるように、状態にも角度、類似性がある。 ベクトルに線形結合があるように、状態にも線形結合がある。 はずだね。 無限次元であるヒルベルト空間を扱う前に、有限次元の複素線形空間でウォーミングアップしよう。 <複素線形空間の演算子> 演算子と言えば、テンソルが便利だ。テンソルと添え字の関係をつかもう に詳しくかいてあるけれど、 アインシュタインの記法では、積の同じ位置の同じ添え字については総和をとりΣを省略し、 同じ添え字がない自由な変数はその次元の自由度だけ動かすというルールでかくとカンタンになる。 vectorVは、n個の基底ベクトルei と対応する反変成分Vnとの積和だから、 V=Vnen 基底変換行列A(演算子といい、本当はハット^つける)を作用させて基底を変換すると、 e'i=Aei 一般の演算子Tに対して基底変化をすると、演算子Tも変換される。 詳しい計算は省略しますが、 変換後の演算子がT'=tATA であることは、計量の変換のときにもやったね。 <ユニタリー行列> 実行列でtAA=Eつまり、tA=A-1になる行列を直交行列と言った。 複素行列で共役で転置した行列、tA*を#Aとかくことにし、 これをエルミート共役、転置複素共役などと呼んだりする。 #AA=Eとなる行列を、複素直交行列、ユニタリー行列と呼ぶ。#A=A-1 このユニタリー行列は実直交行列のように基底変換に使える。 ユニタリー行列Tを使った基底変換のことを特にユニタリー変換と呼ぶ。 実転置行列のようにエルミート共役を使うことで、 T'=♯ATAという演算子の基底変換ができるというすぐれものだ。 これをエルミート形式という。 <エルミート行列> エルミート共役が自己同一な行列、#H=Hこれを、エルミート行列と呼ぶ。 量子力学に登場する演算子はエルミート行列になる。 エルミート行列はユニタリー変換しても不変だ。 それは、Tがエルミート行列のとき、 エルミート形式は、T'=#ATA=#A#TA=#(TA)A=#(#A(TA))=#(#ATA)=#(T')と変形できるからです。

4.ヒルベルト空間のしくみ

<ヒルベルト空間のしくみ> ヒルベルト空間が無限次元の状態の集合について関係性を表すことはわかった。 では、どうやって? 状態の次元が非加算無限でも、基底は加算無限でも構わない。 その正規直交基底をΨ1,Ψ2,....,Ψnとすれば<Ψm,Ψn>=δmnとかけるね。 エルミート演算子#T=Tは基底の前後対称になる。<Ψm,TΨn>=<Ψm,TΨn> さらに、 エルミート演算子は実数の固有値をもち、それぞれに対する固有ベクトルどうしは直交する。 Tφi=λiφi となる正規固有ベクトルφiを並べた行列P={φi}を用意しよう。 すると、#PTP=diag(λi)という、実数が対角成分にならぶ行列ができる。 このあたりは、ディラックの発明といわれるブラとケットを使って、次回くわしくしらべてみよう。 最後に関数fと関数gの内積といってもピンとこなかった人のために、 関数fと関数gの積をグラフにしてみよう。 たとえば、f=sin(x)とg=sin(2x)をかき、 h=fgをかこう。 すると、0からπまでhを積分すると、0になることがわかる。 これが直交のイメージになる。 課題:直交イメージをgeogebraを使って、積分で実感しよう。 n=slider(1,10,1), n=1を初期値 m=slider(1,10,1),m=2を初期値とします。 として、a=0, b=pi f=sin(n x), g=sin(m x) , h=f g c=integral(f, a, b) 2つのものの違いは引き算で出せる
  • diff(x) = f(x) - g(x)
  • d = Integral(diff^2, a, b)
  • これを表示すると、n,mを変えたときの関数f、gの距離DistanceSq がどうなるかを 実感できるでしょう。 n=1,m=2のときは、 c=0だから、fとgは直交だから、独立状態ということですが。 d=πになってます。 n=mのときは、 c=自分との内積<f、f>だからノルムになり最高の類似度になります。 d=自分との差の内積だから、ゼロですね。

    2つの関数の類似度と違いを内積と差の大きさで実感しよう