読者です 読者をやめる 読者になる 読者になる

ibaibabaibaiのサイエンスブログ

サイエンス中心の予定ですが,何を書くかわかりません.統計とかの話はこっちに書くつもり. https://sites.google.com/site/iwanamidatascience/memberspages/ibayukito  ツイッターは@ibaibabaibai

2×2行列でレンズ系を解く

今回はレンズ4部作(?)のうちで,いちばん数式の多い回かも.今後こういうのがずっと続く訳ではなくて,数式レスのネタも各種予定しているのでよろしく.

ガウスとレンズのつながり

数学者のガウスとレンズの繋がりというと,カメラが好きな人は「ガウス型のレンズ」を思い浮かべるのではないか.しかし,実はガウスガウス型のレンズの繋がりは存外薄いようだ.ガウス型の特徴である「前後対称にレンズを並べる」というのもガウスの考案ではないらしい.

それでは,ガウスとレンズはあんまり関係ないか,というと,それは全然違う.レンズの集まりについて,いちばん簡単な近似で議論することを「近軸理論」という.「レンズの中心軸に近い光線(近軸光線)を議論する理論」という意味だが,他の分野の用語でいえば,線形近似(1次近似)である.三角関数が好きな人なら「中心軸との角度をラジアンで測ったものを \thetaとしたときに, \theta \simeq \tan \theta \simeq \sin \thetaとなる範囲」を扱う理論というのがわかりやすいかもしれない.

この理論をまとめたのがガウスで,それは今日にいたるまで,あらゆる光学機器の基礎理論になっている.ガウス型のレンズどころではない,もっと根底の部分でレンズの世界にかかわっているのだ.

ガウスの近軸理論

ガウスの作った理論の重要な結果は,いろんな厚さでいろんな種類のガラスでできたレンズを並べたときに,それが近軸理論の範囲では仮想的な1枚の薄いレンズで置き換えられるということである.たとえばこんな感じ(これはまったくでたらめな配列だが)のものがインプットとして想定されている.

f:id:ibaibabaibai_h:20151227211019p:plain:w300

興味深いのは,アウトプットのほうである.単にある位置に置かれた1枚の薄いレンズで置き換えられるというわけではなくて,もうひと捻りある.下の図のように,左から入る光線はある位置にある仮想レンズに当たって,レンズの法則に従って屈折する.ところが,その光は仮想レンズをいま置いた位置から出てくるように見えるのではなく,別の位置に「ワープ」して,あたかもそこに仮想レンズがあるかのように右から出てゆくのである.

もちろん本当に物理的に瞬間移動するわけでなくて,あくまで中身を知らない人が外からみたときにそう見えるということだ.右から入れたときはちょうどその逆になる.2つの位置を第1主点・第2主点,もしくは,前方主点・後方主点という.

f:id:ibaibabaibai_h:20151228031017p:plain:w300

なぜこんな結果になるのか.答を先に言ってしまうと,これはレンズを組み合わせた系の有効なパラメータの数が3個だからだ.近軸理論の範囲でのパラメータの数が2個であれば「仮想レンズの焦点距離」と「置く位置」ふたつで合わせられるので,ワープはいらない.逆に4個だったら合わせるのが難しいだろう.ちょうど3個なので「仮想レンズの焦点距離」と「置く位置」と「ワープの量」の3つが必要になるわけだ.

そして「パラメータの数がなぜ3個になるか」というところに,ちょっとエレガントな説明がある,というのが今回の話のポイントである.

数理に明るい人は「パラメータの数だけ合ってもダメな場合もあるでしょ」と思うかもしれない.その通りである.いまの場合も例外的なケースがあるが,それはあとで説明する.

今回の元ネタ

この話に興味を持ったきっかけは,友人に「レンズがいっぱいあるのに1枚で説明していいのか」みたいなことをいわれたことだったような気がする.レンズの仕組みを説明したものを読むと,最初のところに上のようなことが書いてある.しかし,その導き方はよくわからなかった.

少し一般向きの解説だと,導出は省略になっていたりする.またガチの専門書の冒頭部分をみると,細字の数式や複雑そうな図が出ていて,技術系マインドでない私はギブアップ.そんなとき,ふと思いついて,数年前に買って開いていない数理物理の本の冒頭部分をみると,おおこれは! すっきりしてわかりやすい説明が!

books.google.co.jp

すっかり,見たまえ!こういうこともあろうと思って準備しておいた! 博士みたいな気分になってしまった.もっとも,索引まで入れて468ページの本のうち,ここで紹介する部分に対応するのは7ページから16ページの10ページ分である.役に立った部分2.1%.

このネタで書こうと決めたあとで,別の友人から最近出た以下の本を教えられた.まだ中身は見てないが,題名からいうと,かぶりそうに見える.

・・と思ったら,山本先生がこのネタで書こうとした動機は,実は上の本であった.

http://www.sugakushobo.co.jp/903342_77_mae.html

Amazon.co.jp: 幾何光学の正準理論: 山本義隆: 本

うーむ,目次をみると面白そうだ.近軸光学についてはウェブにもいろいろあるし,背景や展開は元ネタ本や山本本が詳しそうだが,ここは「最短かつ最も易しい」というのを目指してみたい.一般に,面白い科学理論の最大の問題点は皆がその存在を知らないことなのだから,何らかの意味はあるだと思う.

簡単化

ここでは,簡単化したバージョンを証明することにする.要素はすべて薄いレンズだとするのである.たとえばこんな具合だ*1

f:id:ibaibabaibai_h:20151227211324p:plain:w300

一般の厚さのレンズの場合も「レンズ全体」の代わりに「レンズの片面」(屈折率の変わる面)を単位とすれば,ほとんど同様に進められるが,1か所だけ重要な変更が必要である.それはあとで説明する.

光線と行列

さて,本論である.まず,光線の屈折の具合をあらわすのに,光線の軸からのずれの大きさ hと軸との角度 \thetaを使う(ともに正負を考える).これらを縦ベクトルにまとめて  \begin{pmatrix} h \\ \theta \end{pmatrix} と書くことにしよう.横軸であらわされる位置を時間に置き換えれば, hが位置座標, \thetaが速度に相当する感じだ.

f:id:ibaibabaibai_h:20151227235917p:plain:w300

次に,(1)光線が横軸の距離 d だけ進む, (2)焦点距離 fの薄いレンズにぶつかって方向を変える.という2種類のイベントを考えると,以下の節で見るように,近軸理論の範囲ではそれぞれが上のベクトルの1次変換になっていることがわかる.以下,(1)と(2)の1次変換に対応する行列を,それぞれ R(r) L(f)と書こう,

われわれの系は任意の間隔で並べた薄いレンズだけでできていると仮定したので, R(r) L(f)の2種類の行列ですべてが表現できる.「1次変換の合成は対応する行列の積」ということを使うと,レンズの系全体の定義する1次変換 A

 A=  R(r_1)L(f_1) R(r_2)L(f_2) R(r_3) \cdots

のような有限個の行列の積になる.

なお,以前の解説では f_1,f_2のようなfに下付きの文字が付いた記号は焦点距離でなくレンズからの距離をあらわしていたが,この解説では複数のレンズの焦点距離を区別するのにも使う.実は不注意で両者が混在してしまい,紛らわしくて申し訳ない.

以下,行列 R(r)と行列 L(f)を具体的に書いてみよう.

行列R(r)を具体的に書く

まず,R(r)のほうは,単に光線が角度\thetaで直線的に進むだけなので,簡単である.

f:id:ibaibabaibai_h:20151227235942p:plain:w300


角度は変わらず,近軸光線の条件から角度をラジアンではかれば \tan \theta \simeq \thetaなので h= \theta rとなる.まとめて行列で書くと

R(r)=\begin{pmatrix} 1 & r \\ 0 & 1 \end{pmatrix}

行列 L(f)を具体的に書く

一方, L(f)はもう少し難しくて,この記事の中で唯一ちょっと考えないといけない部分である.といっても,大したことはない.以下の図で,光線の方向 \theta_1がレンズによって方向 \theta_2に変化したわけだが,よく見ると \theta_2はマイナスなので,方向の変化の大きさは符号を含めて -\theta_2-\theta_1である.

f:id:ibaibabaibai_h:20151227210924p:plain

ところが,やはり図から,近軸光線の条件のもとで \theta_1=\frac{h}{f_1} \theta_2=\frac{h}{f_2}となる.そこで,レンズの公式 \frac{1}{f_1}+\frac{1}{f_2} = \frac{1}{f}から, -\theta_2-\theta_1= -\frac{h}{f_1}-\frac{h}{f_2} = -\frac{h}{f} となり,方向の変化は hに比例し,比例定数は-\frac{1}{f}だということがわかる*2.位置hは薄いレンズでは変わらないので,行列にまとめると,以下のようになる.

 L(f)=\begin{pmatrix} 1 & 0 \\ -1/f & 1 \end{pmatrix}

行列式が1になる

さて, R(r) L(f)が分かったので,あとはもう何でもできる.好きなようにレンズを並べて,対応する行列をかけ合わせればよいのである.

まあ,これだけだと,いちいち行列で書かずに1次式のまま代入すればよいのではないか,という人もいるだろうが,実はいまの場合,行列で考える利点がひとつある.いわゆる行列式の概念が有用なのである.

行列  \begin{pmatrix} a & b \\ c & d \end{pmatrix}行列式 \det \begin{pmatrix} a & b \\ c & d \end{pmatrix} = ab-cd で定義される実数である.

 R(r) L(f)行列式を計算すると,上の定義から

 \det R(r)=\det \begin{pmatrix} 1 & r \\ 0 & 1 \end{pmatrix}=1

 \det L(f)= \det \begin{pmatrix} 1 & 0 \\ -1/f & 1 \end{pmatrix}=1

となり,どちらも1になることがわかる.

さて,ここで,任意の行列B, Cについて「績の行列式行列式の積になる」 \det BC = \det B \times \det C という素敵な性質がある(ここでBCは行列としての積. \timesは普通の実数の積をあらわす). これは決して偶然ではなくて意味のあることである.習ってない人や忘れた人はおまけを見てほしい.

いまの場合にこれを適用すると, A=  R(r_1) L(f_1) R(r_2) L(f_2) \cdotsの形の任意の Aについて  \det A=1 となることがわかる.

すなわち,われわれは理論の鍵になる次の補題を証明したことになる.

薄いレンズを組み合わせた系を表現する行列の行列式は常に1である

証明したいことを行列で表現する

さて,いよいよ本題である.いま,「光が発射される点(光の追跡を開始する点)」と「結果を観測する点(光の追跡を終了する点)」の横座標は決めてあるとして,薄いレンズを組み合わせてできる任意の系を表現する行列を

 A = \begin{pmatrix} a & b \\ c & d \end{pmatrix}

と書こう.このとき,うまくfr_1, r_2をとると

 \begin{pmatrix} a & b \\ c & d \end{pmatrix} 
=
\begin{pmatrix} 1 & r_1 \\ 0 & 1 \end{pmatrix}  
\begin{pmatrix} 1 & 0 \\ -1/f & 1 \end{pmatrix} 
\begin{pmatrix} 1 & r_2 \\ 0 & 1 \end{pmatrix}

のように3つの行列の積で表わせることを示したい.

右辺の行列の積は何を表わしているか.変換されるベクトルを縦ベクトルで表わしたとき,一次変換の行列は右から左の順に作用するということに注意すると,以下のようになる.

まず,光が発射される点の横座標を基準として,r_2だけ移動した位置に焦点距離fのレンズがあるかのように,光の経路が曲がる.これが右の2つの行列の効果を乗じたものに相当する.次に「横座標がさらにr_1だけずれた点でその光線を観測したのと同じ高さと方向」が最初に決めた観測点で観察される.これが一番左の行列が表わしていることである.

ここで,光線を発射する点と観測する点の現実の距離 dr_1+r_2とは限らない.その差d-(r_1+r_2)が先に述べた「ワープ」に相当するわけである.

逆側から光を入れた場合は,行列の積の順番が逆になったのと同じなので*3.距離 r_1のところにある仮想レンズで屈折して,それをさらに距離 r_2ずれたところで観測したように見える.少し考えるとやはり同じ距離d-(r_1+r_2)だけの「ワープ」が発生していることがわかる.

証明のキモの部分

証明すべき式をよく見ると不安になる.左辺にはa, b, c, dの4つのパラメータがある.これに対して右辺で変えられるのはf, r_1, r_2の3つである.明らかに足りないではないか.

ここで,先に示しておいた「薄いレンズを組み合わせた系を表現する行列の行列式は常に1である」という補題の出番である.行列 Aが薄いレンズの系に対応するなら,a, b, c, dは任意ではなく,行列式  ab-cd=1という条件を満たさなければならないのである.したがって,左辺の有効なパラメータの数は4でなく3なのだ.

あとは,紙と鉛筆で計算して確かめるだけである.それは皆さんの練習問題ということにしよう.キンコン・カンコーン!授業おしまい!

具体的な計算

え? いま電車の中で吊り革につかまってスマホで読んでて紙も鉛筆も無理だって? 家に帰ってからやればいいじゃん! いや,家に帰ると子供がいて,あとビール飲んじゃうし.

わかった.全部ここで計算してみせればいいんだよね.やりますよ!

まず,左側の2つを掛け合わせると

 \begin{pmatrix}1-\frac{r_1}{f} & r_1 \\ -\frac{1}{f} & 1 \end{pmatrix}
\begin{pmatrix} 1 & r_2 \\ 0 & 1 \end{pmatrix}

そして全部掛けた結果は

  \begin{pmatrix} 
 1-\frac{r_1}{f} &
 r_2 \left ( 1- \frac{r_1}{f} \right ) +r_1  \\
\ - \frac{1}{f} &
1-\frac{r_2}{f}  \end{pmatrix}

となるので,これを \begin{pmatrix} a & b \\ c & d \end{pmatrix}と等しいとおく.


まず,(2,1)成分を比較して f=-\frac{1}{c}となる.

次に,(1,1)成分,(2,2)成分を比較して, a=1+r_1c及び  d=1+r_2c が出て,これから  r_1=\frac{a-1}{c}  r_2=\frac{d-1}{c} となる.

最後に残った(1,2)成分がbになればよいわけである.以下,その願いを込めてbになれ!」という変数名にしよう.

 bになれ! = r_2 \left ( 1- \frac{r_1}{f} \right ) +r_1

これに, f=-\frac{1}{c} r_1=\frac{a-1}{c}  r_2=\frac{d-1}{c}を代入すればよいのだが,カッコの中の 1-\frac{r_1}{f}a=1-\frac{r_1}{f} (解く前の式)で直接置き換えると,少しだけ労力が節約できる.

bになれ!=  \frac{d-1}{c} a +\frac{a-1}{c}=\frac{ad-a+a-1}{c}= \frac{ad-1}{c}

さて,ここで,ad-bc=1 から  bc=ad-1 となることを使うと,「 bになれ!」が本当に bになることがわかる.めでたしめでたし,大団円.

例外的な場合

おっとちょっと待ってくれ.ゼロで割ったらいけないだろう.c=0だとマズイんじゃないか?

c=0だとfは無限大になるが,このとき 1-\frac{r_1}{f} 1-\frac{r_2}{f}が1にならないようにするとb=\inftyでなくてはならない.逆にr_1r_2をともに有限に留めると対角成分adは強制的に1になってしまう.

いやまて,c=0 となるような薄いレンズの組み合わせはもともと上のような特別の場合しかないという可能性もあるのではないか.

しかし,下の図のようにふたつのレンズが焦点を共有するように並んでいる場合にも c=0 となるが,これは一般には上のどちらでもない.このケースでは1枚の薄いレンズでは不足で,どうしても2枚必要になる.

f:id:ibaibabaibai_h:20151227211357p:plain:w300

対応する行列は L(f_1) R(f_1+f_2)L(f_2) に相当するが,これを実際に計算すると以下のようになる.

 \begin{pmatrix} -f_1/f_2 & f_1+f_2 \\ 0 & -f_2/f_1 \end{pmatrix}

この場合,入射した平行な光線は平行な光線として出ていくが,これは素通しという意味ではない.入射光線を傾けたときの出ていく光線の角度は一般には入射光線の角度と同じではない(倍率が1とは限らない).

(おまけ1)行列式について

行列式の絶対値は,2×2行列の場合には列(行でもよい)のベクトルのつくる平行四辺形の面積であり.一般の場合はn次元の体積であるというのは比較的よく知られていると思う.符号はある規則で決まる(もとの世界と鏡の中の世界.右手系と左手系の一般化).たとえば,下のリンクのサイトに説明がある.

行列式と面積・体積

しかし,この直観的理解では,もとの行列のあらわす一次変換の性質と行列式が直接結びついていない点が決定的に弱い.数理的にはあと1歩であるが,もう1段踏み込んで「一次変換の面積(体積)拡大率に符号を付けたもの」として理解する必要がある.この見方からは.一次変換の合成,すなわち行列の積に関して,対応する行列式が積になるという性質は自然なものに思えるだろう.

歴史的には行列式は連立一次方程式を解くために(行列よりずっと早く)導入されたが,実際に学部専門課程から大学院にかけて出てくるのは,ほとんどが積分の変数変換に関連してである(いわゆるヤコビ行列式).苦手な人の多い多変量の確率密度関数の変数変換も本質的には同じことである.

そこでは「一次変換の面積(体積)拡大率」という解釈が本質的になる.行列式について正しい直観を持たずに,単に「方程式を解くための略記法」などと考えていると,先に行ってわからなくなる原因になる.

(おまけ2)一般化

任意の厚みのレンズの場合に同様のことをやるにはどうするか.この場合には,レンズの各面を独立に考える必要がある.そのためには,左右で屈折率の違う曲面を通る場合の方向の変化をあらわすものとして行列 Lを再定義してやる必要がある.近軸光線だけを考えるので曲面は球面(もしくは放物面)と考えてよい.

ここで困ったことが起きる.そのままでは再定義した L行列式が1にならないのである.しかし,うまい工夫がある.光線をあらわすベクトルを  \begin{pmatrix} h \\ \theta \end{pmatrix}とする代わりに,その場所の屈折率nを使って  \begin{pmatrix} h \\ n\theta \end{pmatrix}とすると,対応する行列の行列式はすべて1になり,ここでやったのと並行な議論が可能になる.

(おまけ3)背景

いまの話はレンズの話として重要な応用があるわけだが,物理や数学のエライ先生が取り上げるのは,19世紀から20世紀の物理学の広範な背景を意識してのことだろう.

そのへんを説明抜きで一気に喋るとあらまし次のようになる.光の理論のおおもとはマクスウェル方程式から導かれる波の議論であるが,その近似がハミルトンが建設したアイコナール理論であり,そのまた近似がフェルマーの原理に基づく幾何光学であり,そのまた近似がいま述べた近軸理論である.一方で,ハミルトンの名を冠したもうひとつの理論であるハミルトン形式の力学はフェルマーの原理に似た最小作用の原理と結びついていて,数理的にアイコナール理論に似た形式のハミルトン・ヤコビの理論というのもある.そうなると,ニュートン力学の奥底にも何か波動のようなものが隠れているのでは・・という気がしてくるが,その正体が明らかになったのは量子力学の時代になってからであった・・等々.

この文脈では,なにげに現れた「2×2行列の行列式が1」という条件は,ハミルトン力学に現れるシンプレクティック変換の原型ということになる.19世紀から20世紀の物理学という巨大な龍の1枚の鱗を見ているようなものなのかもしれない.

*1:以下ではすべて凸レンズの場合を論じるが,適切にマイナスの符号を考えれば薄い凹レンズを含む場合もたぶんこのままの証明でOKだと思う.

*2:虚像の場合は別に図を描いて,f_1f_2がマイナスの場合にも同じ形のレンズの公式が成り立つことを使って議論しないといけない.ちなみに,前回は誤魔化したが,虚像の場合のレンズの公式をフェルマーの原理を直接使って導出することができるのだろうか.考えたがよくわからなかった.

*3:「光線の矢印の向きを逆転させても同じ経路をたどる」ということと「逆方向から見たときには行列の積が逆順になる」は矛盾しない.たとえば左から平行な光線を入れたら右から収束する光線が出てきたとする.前者は「収束光線の矢印を逆にした発散光線を右から入れたら左から平行光線が出てくる」ことに相当する.これに対して後者は「右から平行光線を入れたらどうなるか?」ということである.