「ComplexRI」の版間の差分

提供: ComplexRI: Manual
ナビゲーションに移動 検索に移動
66行目: 66行目:


----
----
<span id="説明01" style="font-size: 150%; color:Aqua;">説明01:フィッティング方法</span>
: 屈折率の分散をパラメータを使って表したい。ローレンツ関数<math>\frac{A}{\nu_l-\nu-i\gamma}</math>の重ね合わせによって<math>n_j=n_j^0+\sum_{l=1}^{lmax} \frac{A}{\nu_l-\nu-i\gamma}</math>のように表せると考えている。理由は<u>[[#詳細01|詳細01]]</u>参照。
: 光の強度反射率について最小二乗法を行ってパラメータを決める。つまり、<math>[\left | r \right \vert_{calc}^2 - \left | r \right \vert_{exp}^2]^2</math>という式について最小二乗法を行っている。
: ここで<math>r</math>は両方とも電場の反射率である。光の強度反射率が電場の反射率の2乗になる理由は<ref name = "ref2">参照
: <math>\left | r \right \vert_{exp}</math>については入力ファイルの値(単位が%)を100で割って用いる。
: <math>\left | r \right \vert_{calc}^2</math>は<math>\frac{\left | r^s \right \vert_{calc}^2 + \left | r^p \right \vert_{calc}^2}{2}</math>
: のようにp波とs波の平均値で与えられる。詳細は<u>[[#詳細02|詳細02]]</u>
: また、各<math>r</math>はフレネルの公式
: <math>r_s=\frac{n_1\cos{\theta}_i -n_2\cos{\theta}_t}{n_1\cos{\theta}_i +n_2\cos{\theta}_t}</math>, <math>r_p=\frac{n_2\cos{\theta}_i -n_1\cos{\theta}_t}{n_2\cos{\theta}_i +n_1\cos{\theta}_t}</math>
によって求まる。公式の詳細は<ref name = "ref2">を参照。
: ここで、<math>\sin{\theta}_t</math>はスネルの法則<math>n_1\sin{\theta}_i = n_2\sin{\theta}_t</math>によって計算される。公式の詳細は<ref name = "ref2">を参照。
: また、<math>{\theta}_i, n_1</math>は入力として与えられる定数である。
: したがって、<math>\left | r \right \vert_{calc}^2</math>は<math>n_2</math>の関数になっている。
: それでは、<math>n_2</math>は最初どのように与えられるのかについて詳しく述べる。
: 入力の⑪がNOの場合、つまりパラメータを自動で与えるとした場合をまず説明する。
: 最初、<math>n_j=n_j^0+\sum_{l=1}^{lmax} \frac{A}{\nu_l-\nu-i\gamma}</math>の<math>lmax = 1</math>つまりローレンツ関数1つで表せるとしてフィッティングを行う。
: <math>n_j^0, A, \nu_l, \gamma</math>について初期をそれぞれ与える。
: <math>n_j^0</math>は吸収がない場合の屈折率の値である。コーシーの方程式<math>n = A + \frac{B}{{\lambda}^2} + \frac{C}{{\lambda}^4}</math>によって近似的に求めることができるので、物質及び解析範囲に合わせてパラメータと<math>\lambda</math>を用いて適切な値を各自計算して、入力⑨として与えてほしい。
: <math>\gamma</math>は15とする。これは参考文献[1]<ref name = "ref1">から、<math>\gamma</math>は15付近であるという傾向がわかっているからだ。
: <math>A</math>は7.5とする。これは参考文献[1]<ref name = "ref1">から、<math>A</math>と<math>\gamma</math>の間に<math>\frac{A}{\gamma} = {\kappa}_{max}</math>という関係があり、さらに<math>{\kappa}_{max}</math>が0.5付近の値を多くとるということがわかっているからだ。
: 最後に<math>\nu_l</math>についてこれは入力④で与えられた解析範囲において入力⑤で読み込みを指定した列の反射率が最小になるところとしている。これはローレンツ関数<math>\frac{A}{\nu_l-\nu-i\gamma}</math>を実部と虚部に分けたとき、<math>\frac{A\gamma}{{\nu_l-\nu}^2 + {\gamma}^2} + i\frac{{\nu_l-\nu}^2}{{\nu_l-\nu}^2 + {\gamma}^2}</math>となり、虚部が吸収を表すことが関係している。虚部において最大になるところこそが<math>\nu_l</math>であり、この時吸収は最大である。これは反射が最小に対応する。ゆえにこのように与えている。
1つずつ与える。
: 最小二乗法を行う際、パラメータの範囲はそれぞれ<math>A</math>は-200から200。<math>\nu_l</math>入力④で与えられた範囲。<math>\gamma</math>は0から500で行っている。
: 最小二乗法が終了すると、残差が求まる。これは、求まったパラメータを<math>[\left | r \right \vert_{calc}^2 - \left | r \right \vert_{exp}^2]^2</math>に代入する。
: その後、この残差を入力④で与えられた解析範囲の波数の個数で割り、それに対する正の平方根を計算する。これは今後、解析を続けるか結果を返すかの指標になっている。
: これが入力の⑩で与えられた値より小さければ結果を返す。
: 大きければ、ローレンツ関数を1つ増やす。この時、1つ目の初期値は今回の最小二乗法で求まった値を用いる。
: 2つ目の初期値の作り方を説明する。これは、1つ目のローレンツ関数を用いて計算される <math>\left | r \right \vert_{calc}^2</math>を<math>\left | r \right \vert_{exp}^2</math>から引いた値計算する。その様子を模式的に図にすると以下のようになる。
[[File:差の関数.png|500px]]
: このうち絶対値が最も大きい値に対応する波数を2つ目の<math>\nu_l</math>の初期値として与える。
: つまり
[[File:nuの与え方.png|500px]]
: <math>A</math>の大きさは1つ目で求まったAの半分としている。これは屈折率の分散の概形が一つ目で与えられていると考え、足りない部分を補うという考えから、一つ目のAより小さいと考えたためである。今回はAの符号も検討する必要がある。これは、差の値が入力ファイルのように反射率が下に凸とは限らないからだ。よってνに対応する値が最小値なら正、最大値なら負というように与えている。最小値の場合、正として与えるのは1つ目の時と同じで反射率が最小の時吸収が最大になると考えるからである。逆の場合は、物理的な意味は考えづらいが数学的に符号を反対にすることが妥当だと考えたからである。
: 2回目以降も同じように残差が入力値より小さいかを判定して、小さければ結果を返し、大きければ1つ増やして、初期値を与えて、最小二乗法行う。これを結果が出るまで繰り返す。2回目以降の残差が大きかった場合の初期値の与え方は1回目と同じである。求まったパ:ラメータから計算される <math>\left | r \right \vert_{calc}^2</math>を<math>\left | r \right \vert_{exp}^2</math>から引いた値計算する。このうち絶対値が最も大きい値に対応する波数を2つ目の<math>\nu_l</math>の初期値として与える。<math>A</math>の大きさは1つ目で求まった<math>A</math>の半分としている。これは屈折率の分散の概形が一つ目で与えられていると考え、足りない部分を補うという考えから、一つ目のAより小さいと考えたためである。<math>A</math>の符号は<math>\nu_l</math>に対応する値が最小値なら正、最大値なら負というように与えている。
: ここまで、入力の⑪がNOの場合の説明をしてきた。次に、入力の⑪がYESの場合の説明をしよう。
: これは、NOの場合とほとんど変わらない。変わるのは、最初の初期値が入力値を採用するということだけである。そのほかの、残差を求めて、それが十分小さくなるまでローレンツ関数を増やしながら、最小二乗法を繰り返すのは同じである。
[[#内部処理|内部処理topへ]]


==詳細==
==詳細==

2021年11月29日 (月) 08:12時点における版


概要

本ComplexRIは全反射実験から得られた反射率あるいは吸光度のデータをもとにして媒質の複素屈折率の分散を出力するWebアプリケーションである。 1⃣実験の結果、 2⃣ファイル形式に関する入力、 3⃣実験の条件、 4⃣解析に関する条件 という四つの情報を入力として与えると、解析が行える。


チュートリアル

チュートリアルでは4種類全10個の入力について、実際に解析を行い、その結果をもとに説明する。
目次(チュートリアル)
チュートリアル01:ファイルを入れて解析する(入力1⃣を与える練習)
チュートリアル02:解析に関する条件を指定する(入力4⃣を与える練習)
チュートリアル03:ファイルの形式を変える(入力2⃣を与える練習)
チュートリアル04:実験条件を正しく与える(入力3⃣を与える練習)

マニュアル

目次(マニュアル)
入力01:タイトル
入力02:ファイル
入力03:反射率か吸光度か?
入力04:波数範囲
入力05:データの列の指定
入力06:昇順か降順か?
入力07:実験で用いた基質の種類
入力08:入射角
入力09:吸収がないときの屈折率
入力10:残差の指定
入力11:フィッティング関数のパラメータの設定の有無

内部処理

目次(内部処理)
説明01:フィッティング方法

詳細

目次
詳細01:ローレンツ関数を使う理由
詳細02:p波とs波の平均値で与えられる理由

詳細01:ローレンツ関数を使う理由
これには2つ理由がある。
1つはローレンツ関数がクラマースクロニッヒの関係を満たすことだ。
屈折率の実部と虚部がクラマースクロニッヒの関係を満たすことからフィッティング関数にもこのような性質が要求される。
この関係式は以下のようなものである。導出は複素積分を使う数学的なものなので導出等は省略する。詳細は参考文献[3]を参照してほしい。引用エラー: <ref> タグに対応する </ref> タグが不足しています

[1] [2]

  1. 遠藤雅守:電磁場の物理学ーその発生・伝搬・吸収・増幅・共振を電磁気学で理解するー
  2. 小林浩一:光物性入門
ComplexRIページtopへ]