「ComplexRI」の版間の差分

提供: ComplexRI: Manual
ナビゲーションに移動 検索に移動
 
(同じ利用者による、間の35版が非表示)
2行目: 2行目:


== 概要 ==
== 概要 ==
本ComplexRIは全反射実験から得られた反射率あるいは吸光度のデータをもとにして媒質の複素屈折率の分散を出力するWebアプリケーションである。
 本ComplexRIは、全反射実験から得たデータを用いて、複素屈折率の分散を調べるためのWebアプリケーションである。複素屈折率の分散を調べることは和周波分光の解析に役立つ。界面SFG分光とは可視光と赤外光の2つの光を照射したときに、界面で選択的に発生する和周波光を検出するもので、2次の非線形効果を応用した分光法であり、近年液体界面や高分子界面などを含めた幅広い界面分析に応用されるようになった。この和周波発生はフレネル係数に大きく影響されており、また、フレネル係数は屈折率に依存した量である。そこで和周波分光を解析するには複素屈折率の分散を調べることが必要であり、本Complexそれを手軽に行えることを目的に開発された。
<span style="font-size: 100%; color:red;">1⃣実験の結果、</span>
 
<span style="font-size: 100%; color:red;">2⃣ファイル形式に関する入力、</span>
==主な特徴==
<span style="font-size: 100%; color:red;">3⃣実験の条件、</span>
*全反射実験の実験データさえあれば、複素屈折率の分散を出すことが可能。
<span style="font-size: 100%; color:red;">4⃣解析に関する条件</span>
*適用範囲は赤外領域。これは、和周波分光では官能基を調べることを目的としており、これに一致する光の周波数帯が赤外領域だからである。
という四つの情報を入力として与えると、解析が行える。
 
==作成の経緯==
 和周波分光の結果をより正確に解析するための情報として様々な官能基に関する複素屈折率の分散を調べた論文<ref name = "ref1" /><ref name = "ref2" /><ref name = "ref3" />がある。これは全反射実験のデータに基づいて屈折率の分散をまとめたものになっている。本ComplexRIはこれに基づいて、全反射実験のデータさえ与えれば、同じようなフィッティングが簡単に行えるように開発された。<br />
 フィッティング計算には論文<ref name = "ref2" /><ref name = "ref3" />で用いられたものを主として用いている。これは、本研究室の王助教と以前森田グループに所属していた村田によって作成されたものである。本ComplexRIでは初期値を設定しなくてもフィッティングが行えるように、少しアルゴリズムを改良している。これは本研究室の森田教授、王助教の指導の下で上村が実装した。<br />
 また、WebアプリケーションとしてのUIも上村が実装した。


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


----
----
<div><span id="チュートリアル01"  style="font-size: 150%; color:Aqua;">チュートリアル01:ファイルを入れて解析してみよう</span>➡[[#チュートリアル01の解説|チュートリアル01の解説へ]]</div>
: ここでは<span style="font-size: 100%; color:red;">1⃣実験の結果</span>を入力として与えて解析結果を出力させてみよう。
: 実験結果のファイルはComplexRIの<span style="font-size: 100%; color:red;">MANUALページ</span>の<span style="font-size: 100%; color:red;">File List</span>からダウンロードできる。
[[File:MANUAL.png|1000px]]
: 今回は<span style="font-size: 100%; color:red;">Download the File01</span>のボタンを押してダウンロードしてこれを使用してほしい。
[[File:FILE_DL1.png|500px]]
: ダウンロードが出来たら<span style="font-size: 100%; color:red;">LSRページ</span>に行きファイルを入れてみよう。
[[File:LSR.png|1000px]]
: 入力は①から⑩の10個だ。今回は<span style="font-size: 100%; color:red;">②File</span>にダウンロードしたファイルを与えるだけでFよい。
: それでは<span style="font-size: 100%; color:red;">execute LSR</span>ボタンをクリックして解析してみよう。
<div id="チュートリアル01の解説" style="font-size: 150%; color:aqua;">チュートリアル01の解説</div>
: 解析結果は以下の画像のようなったはずである。
<div id = "image1-1" style="font-size: 120%;">[図1-1]</div>
[[File:01結果.png|caption]]
: ここまでComplexRIの基本的な流れを体験してもらった。
: ここで入れたファイルについて簡単に説明する。
: この様になっているはずである。
[[File:FILE01.png|caption]]
: 一列目には波数、二列目に一列目の波数の光が入射した時の反射率が(%)単位が並んだ構成になっている。
: この様に解析に必要な実験結果は波数とそれに対応する反射率の二種類だけであり、これだけの実験結果から解析が行えるということである。
: 結果については次のチュートリアルで説明する。
----
<div><span id="チュートリアル02"  style="font-size: 150%; color:Aqua;">チュートリアル02:解析に関する条件を指定しよう</span>➡[[#チュートリアル02の解説|チュートリアル02の解説へ]]</div>
: ここでは<span style="font-size: 100%; color:red;">4⃣解析に関する条件</span>を入力として与えてみよう。
: まず、先程と同様にLSRページ</span>に行き<span style="font-size: 100%; color:red;">②File</span>にファイルを与える。これは前回と同じものを使用してほしい。
: 先程はこれで実行していたが、以下のように④と⑩に追加の設定をしてみよう。
[[File:02入力ー4.png|frameless|500px]][[File:02入力ー10.png|frameless|500px]]
: それでは<span style="font-size: 100%; color:red;">execute LSR</span>ボタンをクリックして解析してみよう。
<div id="チュートリアル02の解説" style="font-size: 150%; color:aqua;">チュートリアル02の解説</div>
: 解析結果は以下のようなったはずである。
<div id = "image2-1" style="font-size: 120%;">[図2-1]</div>
[[File:02結果.png|caption]]
: ④と⑩の入力の意味を説明する前に、結果の見方について簡単に説明する。
: <u>(1)数字、(2)表、(3)グラフ</u>が並んでいる。
: <u>(2)表</u>の数値はフィッティング関数のパラメータである。このフィッティング関数を足し合わせることで、左側の<u>(3)グラフ</u>を描いている。また、このグラフの各点の値から反射率を計算してプロットしたのが右側の<u>(3)グラフ</u>の<span style="color:green;">calculate</span>である。実際の回帰ではこの表の数値をいろいろ試して、右側の<u>(3)グラフ</u>の<span style="color:green;">calculate</span>と<span style="color:red;">experiment</span>と比較するということを行っている。ここで、<span style="color:red;">experiment</span>は入力ファイルとして与えられた反射率の値である。<u>(1)数字</u>は解析が終了した時点で、この比較の差がどれくらい小さくなったかを示している。具体的なフィッティング関数の形や方法については<u>[[#内部処理|内部処理]]</u>の<u>[[#説明01|説明01:フィッティング方法]]</u>を参考にしてほしい。
: これを踏まえて、④と⑩の入力の意味を説明していこう。
: 説明は今回の結果をチュートリアル01の時と比較しながら行っていく。
: 図の比較は以下のようになる。
: 左がチュートリアル01の結果。右がチュートリアル02➡<u>[[#image1-1|チュートリアル01の結果を直接見る。]]</u>の結果。
[[File:01結果.png|frameless|500px]][[File:02結果.png|frameless|500px]]
: ④の入力をしたことは、グラフの横軸の幅を設定することなっている。確かに、[入力4の図]と同じ範囲になっている。デフォルトの値で行われたチュートリアル01の時と比べると変化がわかりやすいと思う。
:このグラフの幅の設定は、言い換えると、解析する波数の範囲設定したことになっている。これは直前に説明した解析の原理から考えればわかる。<u>(3)グラフ</u>の<span style="color:green;">calculate</span>と<span style="color:red;">experiment</span>を比較するのであった。このときグラフの横幅を変えれば、比べる範囲つまり解析の範囲を変えることに相当するということだ。
: 次に⑩について説明する。今回は[入力10の図]のように0.01した。解析は<u>(1)数字</u>がこの値より小さくなったら終了するようになっている。つまり解析の正確さもしくは厳しさを設定することになっている。これは小さくしすぎないように注意してほしい。なぜなら、比較の差分がこれよりも小さくならず、解析がとても長くなることがあるからだ。目安としてはデフォルトの0.02から0.01がよい。これは適宜試してみてほしい。
----
<div><span id="チュートリアル03"  style="font-size: 150%; color:Aqua;">チュートリアル03:ファイルの形式を変えてみよう</span>➡[[#チュートリアル03の解説|チュートリアル03の解説へ]]</div>
: ここでは<span style="font-size: 100%; color:red;">2⃣ファイル形式に関する条件</span>を入力として与えてみよう。
: チュートリアル01の時と同様に<span style="font-size: 100%; color:red;">MANUALページ</span>の<span style="font-size: 100%; color:red;">File List</span>からファイルをダウンロードしてほしい。
: 今回は<span style="font-size: 100%; color:red;">File02</span>を使う。
[[File:FILE_DL2.png|500px]]
: ダウンロード出来たら、LSRページ</span>に行き<span style="font-size: 100%; color:red;">②File</span>にファイルを与える。
: 今回は③,⑤,⑥の入力を以下のように変更してみよう。
[[File:03入力ー3.png|frameless|500px]][[File:03入力ー5.png|frameless|500px]][[File:03入力ー6.png|frameless|500px]]
: それでは<span style="font-size: 100%; color:red;">execute LSR</span>ボタンをクリックして解析してみよう。
<div id="チュートリアル03の解説" style="font-size: 150%; color:aqua;">チュートリアル03の解説</div>
: 解析結果は以下のようなったはずである。
[[File:03結果.png|caption]]
: じつはこれはチュートリアル01と同じ結果になっている。
: 左がチュートリアル01の結果。右がチュートリアル03の結果。➡<u>[[#image1-1|チュートリアル01の結果を直接見る。]]</u>
[[File:01結果.png|frameless|500px]][[File:03結果.png|frameless|500px]]
: これは全く同じになっている。
: これは同じ実験結果を入力したことを意味している。しかし、チュートリアル01と02で使用した入力ファイルと今回使用した入力ファイルを比較すると、以下のように一見同じには見えない。これが同じであることを説明する。(一部分のみ示す。)
: 左がチュートリアル01の入力ファイル。右がチュートリアル02の入力ファイル。
[[File:FILE01.png|caption]][[File:FILE02.png|caption]]
: 異なる点は2つある。
: 1つは行が3行になっていることである。これは波数、反射率、吸光度の順に並んでいる。ここで新しく出てきた吸光度というのは反射率と等価な情報を表している。なぜなら、<math>A=-\log_{10}R</math>[[#証明01|(証明)]]という関係式が成り立っており、これによって吸光度を反射率に変換することができるからだ。
: もう1つは波数と反射率の並びが昇順から降順になっていることだ。ここで、吸光度はこの様に並び替えた後で反射率から計算したので波数に対応している。
: このように形は異なるが等価な実験結果を与えた。だから結果が同じだったのだ。
: ③,⑤,⑥の入力はこのファイルの形の違いをアプリ側に考慮させるために入力した。
: ⑤では読み込む列の番号を与えたことになっている。今回は入力として1行目の波数と3行目の吸光度を使うのでこのように設定した。
: 吸光度を使うときは、忘れずに③をabsorptanceに設定してほしい。すると、解析時に反射率に変換して解析する。
: この設定はデフォルトではreflectanceになっているのでこれまでは変更する必要がなかった。
: 最後に⑥はデータの波数のの並び方昇順か降順かを入力している。今回は降順なのでこのように設定した。デフォルトは昇順なので今までは設定する必要がなかった。
----
<div><span id="チュートリアル04"  style="font-size: 150%; color:Aqua;">チュートリアル04:実験条件を変えてみよう</span>➡[[#チュートリアル04の解説|チュートリアル04の解説へ]]</div>
: ここでは<span style="font-size: 100%; color:red;">3⃣実験の条件</span>を入力として与えてみよう。
: <span>LSRページ</span>に行き<span style="font-size: 100%; color:red;">②File</span>にファイルを与える。これはチュートリアル01と02で使ったものと同じものを使ってほしい。
: 今回は⑦,⑧,⑨の入力を以下のように変更してみよう。
[[File:04入力ー789.png|frameless|caption]]
: それでは<span style="font-size: 100%; color:red;">execute LSR</span>ボタンをクリックして解析してみよう。
<div><span id="チュートリアル04の解説"  style="font-size: 150%; color:Aqua;">チュートリアル04の解説</div>
: 解析結果は以下のようなったはずである。
[[File:04結果.png|caption]]
: チュートリアル01とグラフを比較してみると以下のようになる。
: 左がチュートリアル04の結果。右がチュートリアル01の結果。➡<u>[[#image1-1|チュートリアル01の結果を直接見る。]]</u>
[[File:04結果.png|frameless|500px]][[File:01結果.png|frameless|500px]]
: 同じファイル、つまり同じ実験結果を与えているが、実験条件が違えば、出力も異なることがわかる。正しい分散を求めるには自身の行った実験の条件を正しく与える必要があるということだ。
: 各入力を説明しよう。
: ⑦では全反射実験のときに使った基質の種類を指定している。
: ⑧では全反射実験のときの入射光の角度を指定している。
: ⑨では分散のバックグラウンドを与えている。これは測定する基質の赤外領域での屈折率を与える必要がある。
: これは可視光領域の光に対する屈折率からコーシの方程式のパラメータを求め、これを外挿することによって求めることができる。
: 詳しい求め方は[[#内部処理|内部処理]]</u>の<u>[[#説明02|説明02:屈折率のバックグラウンド]]</u>を参考にしてほしい。
[[#チュートリアル|チュートリアルtopへ]]


==マニュアル==
==マニュアル==


{|class="wikitable"
{|class="wikitable"
! 目次
! 目次(入力)
|-
|-
|[[#入力01|入力01]]:タイトル
|[[入力#入力01|入力01]]:タイトル
|-
|-
|[[#入力02|入力02]]:ファイル
|[[入力#入力02|入力02]]:ファイル
|-
|-
|[[#入力03|入力03]]:反射率か吸光度か?
|[[入力#入力03|入力03]]:反射率か吸光度か?
|-
|-
|[[#入力04|入力04]]:波数範囲
|[[入力#入力04|入力04]]:波数範囲
|-
|-
|[[#入力05|入力05]]:データの列の指定
|[[入力#入力05|入力05]]:データの列の指定
|-
|-
|[[#入力06|入力06]]:昇順か降順か?
|[[入力#入力06|入力06]]:昇順か降順か?
|-
|-
|[[#入力07|入力07]]:実験で用いた基質の種類
|[[入力#入力07|入力07]]:実験で用いた基質の種類
|-
|-
|[[#入力08|入力08]]:入射角
|[[入力#入力08|入力08]]:入射角
|-
|-
|[[#入力09|入力09]]:吸収がないときの屈折率
|[[入力#入力09|入力09]]:吸収がないときの屈折率
|-
|-
|[[#入力10|入力10]]:残差の指定
|[[入力#入力10|入力10]]:残差の指定
|-
|-
|[[#入力11|入力11]]:フィッティング関数のパラメータの設定の有無
|[[入力#入力11|入力11]]:フィッティング関数のパラメータの設定の有無
|}
{|class="wikitable"
! 目次(出力)
|-
|[[出力#出力01|出力01]]:数値
|-
|[[出力#出力02|出力02]]:表
|-
|[[出力#出力03|出力03]]:グラフ
|-
|[[出力#出力04|出力04]]:アウトプットファイル
|}
|}
<div id="入力01"  style="font-size: 150%; color:Aqua;">チュートリアル01:タイトル</div>
: これはアウトプットファイルの名前になる。自分のわかりやすいようにつけてほしい。デフォルトはno-titleである。


<div id="入力02"  style="font-size: 150%; color:Aqua;">チュートリアル02:ファイル</div>
----
ここでは実験結果のファイルを入力してほしい。以下に例を示す。(ファイル全体が大きすぎるので一部を示している。)
[[File:FILE01.png|caption]]
形式の指定は以下の3つです。
(1)Txtファイルである。
(2)波数とそれに対応する反射率もしくは吸光度が列ごとに並んでいる。
(3)列と列の間は空白で区切られている。
 
<div id="入力03"  style="font-size: 150%; color:Aqua;">チュートリアル03:反射率か吸光度か?</div>
結果のファイルで吸光度と反射率のどちらを読み込ませようとしているかを指定してほしい。
選択肢は次の3つである。
(1)反射率で単位が(%)である。
(2)反射率で単位が(%)ではない。
(3)吸光度
デフォルトは(1)です。
 
<div id="入力04"  style="font-size: 150%; color:Aqua;">チュートリアル04:波数範囲</div>
屈折率の分散を解析する波数範囲を指定してほしい。
 
<div id="入力05"  style="font-size: 150%; color:Aqua;">チュートリアル05:データの列の指定</div>
入力ファイルのうち解析に用いる列を指定してほしい。
波数、反射率(あるいは吸光度)についてそれぞれ指定してほしい。
デフォルトは波数が1行目、反射率(あるいは吸光度)が2行目になっている。
 
<div id="入力06"  style="font-size: 150%; color:Aqua;">チュートリアル06:昇順か降順か?</div>
データの並び方を指定してほしい。これは波数の並び方が昇順か降順かを与えてほしい。
デフォルトは降順になっている。
 
<div id="入力07"  style="font-size: 150%; color:Aqua;">チュートリアル07:実験で用いた基質の種類</div>
全反射実験で用いた基質の種類を入力してほしい。これはn1の屈折率を指定することになっている。
[[File:全反射実験.png|500px]]
選択肢は次の4つである。
(1)diamond。屈折率は2.38と設定される。
(2)zinc selenide。屈折率は2.40と設定される。
(3)germanium。屈折率は4.0と設定される。
(4)上記以外。これは屈折率を自由に設定できる。実際の実験で上記3つの基質以外を使った場合を想定している。しかし上記3つの基質のいずれかを使った場合でも、より厳密に屈折率を指定したい場合はこれを用いることも可能である。。
デフォルトは(1)になっている。
 
<div id="入力08"  style="font-size: 150%; color:Aqua;">チュートリアル08:入射角</div>
全反射実験の光の入射角を指定してほしい。
[[File:全反射実験.png|500px]]
上の図でいうところの<math>{\theta}_i</math>である。
デフォルトは45°になっている。
 
<div id="入力09"  style="font-size: 150%; color:Aqua;">チュートリアル09:吸収がないときの屈折率</div>
吸収がないときの屈折率を入力してください。
これはコーシーの方程式<math>n = A + \frac{B}{{\lambda}^2} + \frac{C}{{\lambda}^4}</math>から計算できる。解析したい物質及び波数範囲に合わせて適切なパラメータ及び波長を与え、求めた値を入力してほしい。
「参考サイト」
 
<div id="入力10"  style="font-size: 150%; color:Aqua;">チュートリアル10:残差の指定</div>
ここでの解析を終了するための指標になる。<u>[[#内部処理|内部処理]]</u>の<u>[[#説明01|説明01:フィッティング方法]]</u>で述べるように最小二乗法を繰り返し行い、残差がここでの入力値より小さいかどうかで解析の終了、続行を判定している。
<span style color="red">注意!!小さすぎると終わらないことがある。</span>
 
<div id="入力11"  style="font-size: 150%; color:Aqua;">チュートリアル11:フィッティング関数のパラメータの設定の有無</div>
フィッティング関数の初期の本数およびパラメータの初期値を手動で与えるか自動で設定するかを選択できる。
自動の場合は<u>[[#内部処理|内部処理]]</u>の<u>[[#説明01|説明01:フィッティング方法]]</u>で述べたように決定している。
手動で決定する場合は、まず、Lor_numにローレンツ関数の本数を入力してほしい。最大は5となっている。
次に、Lor_numの値に応じて、INIT_A1, INIT_N1, INIT_G1と出てくる。これはローレンツ関数<math>\frac{A}{\nu_l-\nu-i\gamma}</math>のパラメータ<math>A, \nu_l, \gamma</math>に相当している。
最後の数字が同じINIT_A, INIT_N, INIT_G3つが一組となって一つのローレンツ関数のパラメータの初期を与えることになる。それぞれ、INIT_Aは<math>A</math>, INIT_Nは<math>\nu_l</math>, INIT_Gは<math>\gamma</math>に対応している。
 
 
[[#マニュアル|マニュアルtopへ]]


==内部処理==
==内部処理==


{|class="wikitable"
{|class="wikitable"
! 目次
! 目次(内部処理)
|-
|-
|[[#説明01|説明01]]:フィッティング方法
|[[説明01|説明01]]:フィッティング方法
|}
|}
<span style="font-size: 100%; color:red;">※このページを見るにはブラウザとしてchromeを使用されることを推奨しています。ブラウザによっては読み込みにかなり時間がかかることがあります。</span>


----
----
<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へ]]


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


{|class="wikitable"
{|class="wikitable"
! 目次
! 目次(詳細)
|-
|[[詳細01|詳細01]]:ローレンツ関数を使う理由
|-
|-
|[[#詳細01|詳細01]]:ローレンツ関数を使う理由
|[[詳細02|詳細02]]:p波とs波の平均値で与えられる理由
|-
|-
|[[#詳細02|詳細02]]:p波とs波の平均値で与えられる理由
|[[詳細03|詳細03]]:屈折率の虚部が吸収を表す理由
|}
|}
----
<div id="詳細01"  style="font-size: 150%; color:Aqua;">詳細01:ローレンツ関数を使う理由</div>
: これには2つ理由がある。
: 1つはローレンツ関数がクラマースクロニッヒの関係を満たすことだ。
: 屈折率の実部と虚部がクラマースクロニッヒの関係を満たすことからフィッティング関数にもこのような性質が要求される。
: この関係式は以下のようなものである。導出は複素積分を使う数学的なものなので導出等は省略する。詳細は参考文献[3]を参照してほしい。<ref name = "ref3">
: <math>n_{1}(\nu) - 1 = \frac{2}{\pi}P\int_{0}^{\infty}\frac{n_{2}(\nu')}{\nu'^2 - \nu'^2}\, d\nu'</math>
: <math>n_{2}(\nu) = - \frac{2}{\pi}P\int_{0}^{\infty}\frac{n_{1}(\nu')}{\nu'^2 - \nu^2}\, d\nu'</math>
: これが1つ目の理由である。
: 2つ目の理由は配向分極の振動電場に対する応答がデバイ型緩和によってよく表せることが背景になっている。ここでは、導出は省略して最終的に導かれる式のみを示す。詳細は参考文献[2]<ref name = "ref2">を参照してほしい。
: デバイ型緩和の考え方に基づくとは以降分極による誘電率は以下のように表せる。
: <math>\hat{\epsilon}(\omega) = {\epsilon}_{0}{{\epsilon}_{\infty} + \frac{{\epsilon}_{s} - {\epsilon}_{\infty}}{1 + i{\omega}{\tau}} }</math>
: ここで、<math>{\epsilon}_{s}</math>:定常電場の比誘電率、<math>{\epsilon}_{\infty}</math>:高周波極限の比誘電率であり、
: <math>{\epsilon}_{s} = 1 + {\chi}_{e1} + {\chi}_{e2}</math>(<math>{\chi}_{e1}</math>:原子間の結合の振動に関する感受率 <math>{\chi}_{e2}</math>:回転に関する感受率)
: <math>{\epsilon}_{\infty} = 1 + {\chi}_{e1}</math>
: と表される。
: このことからは以降分極による誘電率<math>\epsilon</math>はローレンツ関数で近似的に表されることがわかる。
: さらに、誘電率<math>\epsilon</math>と屈折率<math>n</math>の間には
: <math>\sqrt{\epsilon} = n</math>
: という関係があるから、屈折率もローレンツ関数で表しやすいと考えられる。
: 以上の2つの理由からフィッティング関数としてローレンツ関数を用いている。


----
----
<div id="詳細02"  style="font-size: 150%; color:Aqua;">詳細02:p波とs波の平均値で与えられる理由</div>
光をp波とs波に分けてそれぞれ強度の比がしたようになっているとする。
<math>
\begin{cases}
I_s^r &= {\left | r^s \right \vert^2}I_s^i + \\
I_p^r &= {\left | r^p \right \vert^2}I_p^i
\end{cases}
</math>
右辺の<math>I_s^i, I_p^i</math>が入射光。左辺の<math>I_s^r, I_p^r</math>は反射光である。
辺々を足すと
⇔ <math>I_s^r + I_p^r = \left | r^s \right \vert^{2}I_s^i + \left | r^p \right \vert^{2}I_p^i</math>
⇔ <math>I_s^r + I_p^r = (\left | r^s \right \vert^{2} + \left | r^p \right \vert^{2})I_p^i</math>(∵右辺の入射光は自然光で<math>I_s^i = I_p^i</math>)
⇔ <math>I_s^r + I_p^r = \frac{\left | r^s \right \vert^{2} + \left | r^p \right \vert^{2}}{2}2I_p^i</math>
⇔ <math>I_s^r + I_p^r = \frac{\left | r^s \right \vert^{2} + \left | r^p \right \vert^{2}}{2}(I_s^i + I_p^i)</math>
⇔ <math>\frac{I_s^r + I_p^r}{I_s^i + I_p^i} = \frac{\left | r^s \right \vert^{2} + \left | r^p \right \vert^z{2}}{2}</math>
ゆえに、光強度反射率はp波とs波の平均で与えられる。


[http://comp.chem.tohoku.ac.jp/mediawiki/index.php/ComplexRI ComplexRIページtopへ]]


==参考文献==
==参考文献==
<references>
<references>
<ref name = "ref1">論文</ref>
<ref name = "ref1">"Effect of Frequency-Dependent Fresnel Factor on the Vibrational Sum Frequency Generation Spectra for Liquid/Solid Interfaces"
<ref name = "ref2">遠藤雅守:電磁場の物理学ーその発生・伝搬・吸収・増幅・共振を電磁気学で理解するー</ref>
Lin Wang, Satoshi Nihonyanagi, Ken-ichi Inoue, Kei Nishikawa, Akihiro Morita, Shen Ye, Tahei Tahara, J. Phys. Chem. C, 123(25) 15665-15673 (2019).</ref>
<ref name = "ref3">小林浩一:光物性入門</ref>
<ref name = "ref2">"Dispersion of Complex Refractive Indices for Intense Vibrational Bands. II Implication to Sum Frequency Generation Spectroscopy"
<references />
Lin Wang, Ryo Murata, Ken-ichi Inoue, Shen Ye, and Akihiro Morita, J. Phys. Chem. B, 125(34), 9804-9810 (2021).</ref>
 
<ref name = "ref3">"Dispersion of Complex Refractive Indices for Intense Vibrational Bands. I Quantitative Spectra"
[http://comp.chem.tohoku.ac.jp/mediawiki/index.php/ComplexRI ComplexRIページtopへ]]
Ryo Murata, Ken-ichi Inoue, Lin Wang, Shen Ye, and Akihiro Morita, J. Phys. Chem. B, 125(34), 9794-9803 (2021).</ref>
</references>

2021年12月14日 (火) 08:19時点における最新版


概要

 本ComplexRIは、全反射実験から得たデータを用いて、複素屈折率の分散を調べるためのWebアプリケーションである。複素屈折率の分散を調べることは和周波分光の解析に役立つ。界面SFG分光とは可視光と赤外光の2つの光を照射したときに、界面で選択的に発生する和周波光を検出するもので、2次の非線形効果を応用した分光法であり、近年液体界面や高分子界面などを含めた幅広い界面分析に応用されるようになった。この和周波発生はフレネル係数に大きく影響されており、また、フレネル係数は屈折率に依存した量である。そこで和周波分光を解析するには複素屈折率の分散を調べることが必要であり、本Complexそれを手軽に行えることを目的に開発された。

主な特徴

  • 全反射実験の実験データさえあれば、複素屈折率の分散を出すことが可能。
  • 適用範囲は赤外領域。これは、和周波分光では官能基を調べることを目的としており、これに一致する光の周波数帯が赤外領域だからである。

作成の経緯

 和周波分光の結果をより正確に解析するための情報として様々な官能基に関する複素屈折率の分散を調べた論文[1][2][3]がある。これは全反射実験のデータに基づいて屈折率の分散をまとめたものになっている。本ComplexRIはこれに基づいて、全反射実験のデータさえ与えれば、同じようなフィッティングが簡単に行えるように開発された。
 フィッティング計算には論文[2][3]で用いられたものを主として用いている。これは、本研究室の王助教と以前森田グループに所属していた村田によって作成されたものである。本ComplexRIでは初期値を設定しなくてもフィッティングが行えるように、少しアルゴリズムを改良している。これは本研究室の森田教授、王助教の指導の下で上村が実装した。
 また、WebアプリケーションとしてのUIも上村が実装した。

チュートリアル

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

マニュアル

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

内部処理

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

※このページを見るにはブラウザとしてchromeを使用されることを推奨しています。ブラウザによっては読み込みにかなり時間がかかることがあります。



詳細

目次(詳細)
詳細01:ローレンツ関数を使う理由
詳細02:p波とs波の平均値で与えられる理由
詳細03:屈折率の虚部が吸収を表す理由

ComplexRIページtopへ]

参考文献

  1. "Effect of Frequency-Dependent Fresnel Factor on the Vibrational Sum Frequency Generation Spectra for Liquid/Solid Interfaces" Lin Wang, Satoshi Nihonyanagi, Ken-ichi Inoue, Kei Nishikawa, Akihiro Morita, Shen Ye, Tahei Tahara, J. Phys. Chem. C, 123(25) 15665-15673 (2019).
  2. 2.0 2.1 "Dispersion of Complex Refractive Indices for Intense Vibrational Bands. II Implication to Sum Frequency Generation Spectroscopy" Lin Wang, Ryo Murata, Ken-ichi Inoue, Shen Ye, and Akihiro Morita, J. Phys. Chem. B, 125(34), 9804-9810 (2021).
  3. 3.0 3.1 "Dispersion of Complex Refractive Indices for Intense Vibrational Bands. I Quantitative Spectra" Ryo Murata, Ken-ichi Inoue, Lin Wang, Shen Ye, and Akihiro Morita, J. Phys. Chem. B, 125(34), 9794-9803 (2021).