クイックスタート
NLFit-QuickStart
非線形フィット(NLFit)ツールには、200以上の 組込関数があり、広い範囲のカテゴリーと分野から選択されています。探している関数がない場合は、Originのフィット関数ビルダを使って関数を定義することができます。
![NLFit Dialog Quick Start 01a.png](//d2mvzyuse3lwjc.cloudfront.net/doc/ja/UserGuide/images/Quick_Start/NLFit_Dialog_Quick_Start_01a.png)
入力データの指定
Originでは、NLFitダイアログを開く前に、ワークシートやグラフからの入力データを事前に選択できます。NLFitダイアログを開くと、設定タブのデータ選択ページにある入力データの項目で、データを変更、追加、移動、リセットできます。
ワークシートからデータを選択
必要に応じて、複数のワークシート列、ワークシート列の一部、ワークシート列の不連続部分を選択できます。不連続区間を選択したいときは、Ctrlキーを押しながら操作します。
グラフからデータを選択
グラフウィンドウがアクティブな場合、アクティブレイヤのアクティブ曲線が、フィッティングの入力として事前選択されます。
他のデータの事前選択する場合は以下のオプションを使用できます。
組み込み関数でフィット
Originの組込フィット関数には、パラメータ初期化コードにより、フィッティング前に、パラメータ初期値をデータセットに適用します。
数回のクリックで、曲線フィットを実行して、最適なフィットパラメータを得ることが可能です。元のデータプロットにフィット曲線を貼り付けることもできます。
- ワークシート内でデータを選択するか、フィットを実行したいデータのグラフウィンドウをアクティブにして、メニューの解析:フィット:非線形曲線フィットを選択してNLFitダイアログを開きます。
- カテゴリと関数ドロップダウンを使ってフィット関数を選択します。
- 組み込み関数が見つからなかった場合は、検索をクリックしてフィット関数の検索を開いてキーワードで検索し関数をロードすることができます。(下記のヒントを参照してください)
- フィットボタンをクリックして実行し、結果ワークシートを取得します。
![NLFit Dialog Quick Start 37.png](//d2mvzyuse3lwjc.cloudfront.net/doc/ja/UserGuide/images/Quick_Start/NLFit_Dialog_Quick_Start_37.png)
![](//d2mvzyuse3lwjc.cloudfront.net/doc/ja/UserGuide/images/Quick_Start/Tip_icon.png) |
検索ボタンをクリックすると、検索ダイアログの右上角にFitting Function Library アプリのアイコンがあります。このアイコンをクリックすると、ダウンロード可能な関数のリストが表示されます。また、キーワードで関数を検索しても見つからない場合は、Fitting Function Libraryアプリを開いて、アドオンの関数を参照することができます。このアプリはOriginの最新バージョンにプレインストールされています。
|
組み込み関数を使用した一般的な非線形フィット
NLFitツールを使用した非線形フィットの操作を簡単にするために、Originのメインメニューの解析: フィットの下に多くのクイックメニューを用意しています。
陰関数カーブフィット
解析:フィット:陰関数カーブフィットメニューを選択すると、カテゴリとしてImplicit を選択した状態でNLFitツールが開きます。このサンプルで陰関数での簡単なフィット操作を確認できます。
曲面フィット
解析:フィット:非線形曲面(3D)フィットメニューを選択すると、カテゴリとしてSurface を選択した状態でNLFitツールが開きます。このチュートリアルで曲面フィット操作を確認できます。
指数曲線フィット
解析:フィット:指数曲線フィットメニューを選択すると、カテゴリとして Exponentialを選択した状態でNLFitツールが開きます。このサンプルで指数関数での簡単なフィット操作を確認できます。
単一ピークフィット
解析:フィット:単一ピークフィットメニューを選択すると、カテゴリとしてPeak Functionsを選択した状態でNLFitツールが開きます。このサンプルでピーク関数を使った簡単なピークフィットの操作を確認できます。
シグモイド曲線フィット
解析:フィット:シグモイド曲線フィットメニューを選択すると、カテゴリとして Growth/Sigmoidalを選択した状態でNLFitツールが開きます。このサンプルでシグモイド関数での簡単なフィット操作を確認できます。
ユーザ定義関数でフィット
組込関数ライブラリに欲しいフィット関数がないのですが、どうしたらよいでしょうか。問題ありません。ツール:フィット関数ビルダーをカスタムフィット関数の定義のガイドに沿って、簡単に使うことができます。
![NLFit Dialog Quick Start 32.png](//d2mvzyuse3lwjc.cloudfront.net/doc/ja/UserGuide/images/Quick_Start/NLFit_Dialog_Quick_Start_32.png)
複数データセットでフィット
同時にフィットを行いたい複数のデータがありますか?Originでは、各データセットを別々にフィットさせて、結果を別のレポートや統合したレポートに出力することができます。また、パラメータを共有してグローバルフィットを実行したり、フィット前に複製データを単一のデータセットに結合する連結フィットを実行できます。
-
![NLFit Dialog Quick Start 15.png](//d2mvzyuse3lwjc.cloudfront.net/doc/ja/UserGuide/images/Quick_Start/NLFit_Dialog_Quick_Start_15.png)
パラメータを共有してグローバルフィット
フィット関数のパラメータは、オプションですべてのデータセット間で共有できます。
-
![NLFit Dialog Quick Start 16.png](//d2mvzyuse3lwjc.cloudfront.net/doc/ja/UserGuide/images/Quick_Start/NLFit_Dialog_Quick_Start_16.png)
複製データの連結フィット
複製データの場合、すべてのデータポイントを1つの曲線に連結し、それらをデータセット全体としてフィットできます。
-
![NLFit Dialog Quick Start 17.png](//d2mvzyuse3lwjc.cloudfront.net/doc/ja/UserGuide/images/Quick_Start/NLFit_Dialog_Quick_Start_17.png)
複数曲線の独立フィット
複数曲線を個別にフィットできます。複数曲線の独立フィットでは、1つずつフィットを実行して、個別レポートを各曲線について作成するか、統合レポートを作成することができます。
-
![NLFit Dialog Quick Start 18.png](//d2mvzyuse3lwjc.cloudfront.net/doc/ja/UserGuide/images/Quick_Start/NLFit_Dialog_Quick_Start_18.png)
フィットの設定
カーブフィット分析で微調整が必要な場合もあります。Originでは、カーブフィット処理をフルコントロールできます。
パラメータの固定
-
![NLFit Dialog Quick Start 06.png](//d2mvzyuse3lwjc.cloudfront.net/doc/ja/UserGuide/images/Quick_Start/NLFit_Dialog_Quick_Start_06.png)
上限境界と下限境界の設定
-
![NLFit Dialog Quick Start 07.png](//d2mvzyuse3lwjc.cloudfront.net/doc/ja/UserGuide/images/Quick_Start/NLFit_Dialog_Quick_Start_07.png)
線形制約の設定
-
![NLFit Dialog Quick Start 08.png](//d2mvzyuse3lwjc.cloudfront.net/doc/ja/UserGuide/images/Quick_Start/NLFit_Dialog_Quick_Start_08.png)
![](//d2mvzyuse3lwjc.cloudfront.net/doc/ja/UserGuide/images/Quick_Start/Tip_icon.png) |
線形制約の入力方法はこの表を確認してください。
|
詳細フィットオプション
基本のフィットオプションに加えて、さらに詳細なフィットを行うための拡張オプションを使うことができます。
XエラーとYエラーでフィット
ステップ1.直交距離回帰(ODR )反復アルゴリズムを選択します。
-
![NLFit Dialog Quick Start 13.png](//d2mvzyuse3lwjc.cloudfront.net/doc/ja/UserGuide/images/Quick_Start/NLFit_Dialog_Quick_Start_13.png)
ステップ2.適切な重み付け方法を選択します。
-
![NLFit Dialog Quick Start 14.png](//d2mvzyuse3lwjc.cloudfront.net/doc/ja/UserGuide/images/Quick_Start/NLFit_Dialog_Quick_Start_14.png)
複製してフィット
-
![NLFit Dialog Quick Start 19.png](//d2mvzyuse3lwjc.cloudfront.net/doc/ja/UserGuide/images/Quick_Start/NLFit_Dialog_Quick_Start_19.png)
派生パラメータの取得
-
![NLFit Dialog Quick Start 04.png](//d2mvzyuse3lwjc.cloudfront.net/doc/ja/UserGuide/images/Quick_Start/NLFit_Dialog_Quick_Start_04.png)
XからYを検索
-
![NLFit Dialog Quick Start 09.png](//d2mvzyuse3lwjc.cloudfront.net/doc/ja/UserGuide/images/Quick_Start/NLFit_Dialog_Quick_Start_09.png)
サンプル
指数関数フィット
- データを選択して、メニューから解析:フィット:指数曲線フィットを選択します。
- 関数ドロップダウンリストから、フィットの関数ExpDecay3を選択します。
- フィットボタンをクリックします。
![NLFit Dialog Quick Start Exponential.png](//d2mvzyuse3lwjc.cloudfront.net/doc/ja/UserGuide/images/Quick_Start/750px-NLFit_Dialog_Quick_Start_Exponential.png)
単一ピークフィット
- データを選択して、メニューから解析:フィット:単一ピークフィットを選択します。
- 関数選択サブタブの関数ドロップダウンリストから、フィット関数Lorentz を選択します。詳細タブで、複製の数を2に変更して、3つのピークをフィットします。
- フィットボタンをクリックします。
![NLFit Dialog Quick Start FitSingle.png](//d2mvzyuse3lwjc.cloudfront.net/doc/ja/UserGuide/images/Quick_Start/750px-NLFit_Dialog_Quick_Start_FitSingle.png)
シグモイド関数でフィット
- データを選択して、メニューから解析:フィット:シグモイド曲線フィットを選択します。
- 関数ドロップダウンリストから、フィットの関数Logisticを選択します。
- フィットボタンをクリックします。
![NLFit Dialog Quick Start Sigmoidal.png](//d2mvzyuse3lwjc.cloudfront.net/doc/ja/UserGuide/images/Quick_Start/650px-NLFit_Dialog_Quick_Start_Sigmoidal.png)
陰関数フィット
- データを選択して、メニューから解析:フィット:非線形陰関数カーブフィットを選択します。
- 関数ドロップダウンリストから、フィットの関数を選択します。
- フィットボタンをクリックします。
-
![NLFit Dialog Quick Start 20.png](//d2mvzyuse3lwjc.cloudfront.net/doc/ja/UserGuide/images/Quick_Start/NLFit_Dialog_Quick_Start_20.png)
このチュートリアルで陰フィット関数の定義方法を紹介しています。
積分してフィット
どの積分関数でフィットできるおよび、フィット関数の定義方法を紹介します。
Case 1
![y=\int_{c}^{d} \frac { \cosh { ((x_i + b^2 \cdot x^2) /(b + x))}}{a+(x_i^2+x^2)}\, dx_i y=\int_{c}^{d} \frac { \cosh { ((x_i + b^2 \cdot x^2) /(b + x))}}{a+(x_i^2+x^2)}\, dx_i](//d2mvzyuse3lwjc.cloudfront.net/doc/ja/UserGuide/images/Quick_Start/math-c57a9cb3da04ebbb99d6869533f7e1ae.png)
ここで、 は積分の独立変数で、 はフィッティングの独立変数です。モデルのパラメータ 、 、 、 はサンプルデータから取得したいフィットパラメータです。
詳細は、チュートリアルをご覧ください。
Case 2
![y=\log (\int_{0}^{1} \frac{1}{\sqrt{2\pi}b}e^{-\frac{(t-a)^2}{2b^2}-xt}\, dt) y=\log (\int_{0}^{1} \frac{1}{\sqrt{2\pi}b}e^{-\frac{(t-a)^2}{2b^2}-xt}\, dt)](//d2mvzyuse3lwjc.cloudfront.net/doc/ja/UserGuide/images/Quick_Start/math-ba2599fbd2266a09de6f0d189020ad62.png)
aとbはフィット関数内のパラメータです。
初期パラメータ: a=1e-4, b=1e-4積分関数には、中心が約a、幅が2bのピークが含まれています。また、ピークの幅(2e-4)は、積分間隔[0,1]と比較して非常に狭くなっています。正しくピークの中心あたりで積分される事を確認するために、積分範囲である[0,1] は3つの区間[0,a-5*b]、[a-5*b,a+5*b]、[a+5*b,1]に分けられています。この区分内で積分が施され、最終的に合計します。
詳細は、チュートリアルをご覧ください。
Case 3
![y=y_0+\int_{-\infty}^{x} \frac{A}{w\sqrt{\frac{\pi}{2}}} e^{-2\frac{(t-x_c)^2}{w^2}}, dt y=y_0+\int_{-\infty}^{x} \frac{A}{w\sqrt{\frac{\pi}{2}}} e^{-2\frac{(t-x_c)^2}{w^2}}, dt](//d2mvzyuse3lwjc.cloudfront.net/doc/ja/UserGuide/images/Quick_Start/math-957656d43fc6d5ccaa64ce6fec8b95aa.png)
フィット関数には4つのパラメータがあり、そのうち3つを被積分関数に受け渡し、独立変数を上限として積分を行います。よって、まず被積分関数を定義しし、組み込みのintegral()関数を使用してフィット関数内で積分をします。
詳細は、チュートリアルをご覧ください。
コンボリューションしてフィット
Originでは、本質的に区分線形カテゴリー内の2つのコンボリューション関数が使われます。
- GaussMod() --クロマトグラフィで使用される指数修正ガウス(EMG)ピーク関数
- Voigt() -- Gaussian関数(wG は FWHM) と Lorentzian 関数のコンボリューション
新しいコンボリューション関数を作成する必要がある場合は、下のチュートリアルをご覧ください。
2種類の関数でコンボリューション
-
![NLFit Dialog Quick Start 23.png](//d2mvzyuse3lwjc.cloudfront.net/doc/ja/UserGuide/images/Quick_Start/NLFit_Dialog_Quick_Start_23.png)
![y=y_0+b_1x+\frac{b_2A_2}{w_2\sqrt{\pi/2}}e^{-\frac{2(x-x_{c2})^2}{w_2^2}}+(f\;*\;g)(x) y=y_0+b_1x+\frac{b_2A_2}{w_2\sqrt{\pi/2}}e^{-\frac{2(x-x_{c2})^2}{w_2^2}}+(f\;*\;g)(x)](//d2mvzyuse3lwjc.cloudfront.net/doc/ja/UserGuide/images/Quick_Start/math-98d6d5f3cde600916e3a94b7fca36400.png)
ここで、![f(x)=\frac{s}{\pi}\cdot\frac{\tau_Lx_0^2(x_L^2-x_0^2)}{(x-x_{c1})\tau_L((x-x_{c1})^2-x_L^2)^2+((x-x_{c1})^2-x_0^2)^2} f(x)=\frac{s}{\pi}\cdot\frac{\tau_Lx_0^2(x_L^2-x_0^2)}{(x-x_{c1})\tau_L((x-x_{c1})^2-x_L^2)^2+((x-x_{c1})^2-x_0^2)^2}](//d2mvzyuse3lwjc.cloudfront.net/doc/ja/UserGuide/images/Quick_Start/math-d9e27fecd554f9306cf331ea7b4b2eba.png)
-
-
.
そして , , , s, , , はフィットパラメータです。 , , , , はフィット関数内の定数です。
詳細は、チュートリアルをご覧ください。
ガウス応答で指数減少関数のコンボリューション
-
![NLFit Dialog Quick Start 22.png](//d2mvzyuse3lwjc.cloudfront.net/doc/ja/UserGuide/images/Quick_Start/NLFit_Dialog_Quick_Start_22.png)
この実験は、以下に示すように、出力信号がガウス応答を持つ指数減少関数のコンボリューションであると見なしています。
![Tutorial Fitting With Convolution 002.png](//d2mvzyuse3lwjc.cloudfront.net/doc/ja/UserGuide/images/Quick_Start/Tutorial_Fitting_With_Convolution_002.png)
これで、出力信号と応答データを得たので、信号を次のモデルでフィットして、指数減少関数を得ることができます。
![y = y_0 + \int_{-\infty}^{+\infty} Ae^{-tx} \otimes Response, dx y = y_0 + \int_{-\infty}^{+\infty} Ae^{-tx} \otimes Response, dx](//d2mvzyuse3lwjc.cloudfront.net/doc/ja/UserGuide/images/Quick_Start/math-8e34ad167a7c75e17660203787f4ef33.png)
詳細は、チュートリアルをご覧ください。
ピークをデコンボリューションする必要がある場合には、このチュートリアルをご覧ください。
区分関数でフィット
Originでは、Piecewise カテゴリー内の2つの区分関数が使われます。
新しい区分関数を作成する必要がある場合は、下のチュートリアルをご覧ください。
Case 1
![NLFit Dialog Quick Start 25.png](//d2mvzyuse3lwjc.cloudfront.net/doc/ja/UserGuide/images/Quick_Start/NLFit_Dialog_Quick_Start_25.png)
上記のグラフから、曲線は2つの部分に分けられる部分からできていることが分かります。これは区分線形関数を使ってフィットすることができます。この関数は次のように表現できます。
![y = \begin{cases} \frac{y_1(x_3-x)+y_3(x-x_1)}{x_3-x_1}, & \mbox{if } x<x_3 \ \frac{y_3(x_2-x)+y_2(x-x_3)}{x_2-x_3}, & \mbox{if } x \ge x_3 \end{cases} y = \begin{cases} \frac{y_1(x_3-x)+y_3(x-x_1)}{x_3-x_1}, & \mbox{if } x<x_3 \ \frac{y_3(x_2-x)+y_2(x-x_3)}{x_2-x_3}, & \mbox{if } x \ge x_3 \end{cases}](//d2mvzyuse3lwjc.cloudfront.net/doc/ja/UserGuide/images/Quick_Start/math-118b6e761a829c9a3cc596f21246cd23.png)
x1とx2は曲線の終着点を示すx値で、フィット中に固定されます。x3は2つの部分の交点のx値を示しています。そしてy1、y2、y3は 地点でのy値をそれぞれ表しています。
詳しくは、こちらのチュートリアルをご覧ください。
Case 2
![NLFit Dialog Quick Start 26.png](//d2mvzyuse3lwjc.cloudfront.net/doc/ja/UserGuide/images/Quick_Start/NLFit_Dialog_Quick_Start_26.png)
上記のグラフから、曲線は、以下の式で定義されるとおり、指数曲線区分と直線区分から成り立っています。
![y = \begin{cases} a+bx+e^{-\frac{x-x_c}{t1}}, & \mbox{if } x<x_c \ a+bx, & \mbox{if } x \ge x_c \end{cases} y = \begin{cases} a+bx+e^{-\frac{x-x_c}{t1}}, & \mbox{if } x<x_c \ a+bx, & \mbox{if } x \ge x_c \end{cases}](//d2mvzyuse3lwjc.cloudfront.net/doc/ja/UserGuide/images/Quick_Start/math-283a8f0a9b16b947c827fd94c4e94bbb.png)
詳しくは、こちらのチュートリアルをご覧ください。
複数変数でフィット
Originでは、Multiple Variablesカテゴリー内の3つの複数変数の関数が使われます。
- GaussianLorentz -- 基線とピーク中心を共有した、GaussianとLorentz関数の組み合わせ
- HillBurk -- 2つの独立変数と2つの従属変数のHillとBurkモデルの組み合わせ
- LineExp -- 1つの独立変数と2つの従属変数のLine と Exponentialモデルの組み合わせ
新しい複数変数の関数を作成する必要がある場合は、下のチュートリアルをご覧ください。
パラメータを共有している2つの異なる関数で曲線をフィット
![NLFit Dialog Quick Start 31.png](//d2mvzyuse3lwjc.cloudfront.net/doc/ja/UserGuide/images/Quick_Start/NLFit_Dialog_Quick_Start_31.png)
GaussianLorentz関数はGaussianとLorentz関数の組み合わせで、y0とxcの値を共有しています。
![y_1 =y_0+\frac {A_1}{w_1\sqrt{\pi /2}}e^{-2\frac{(x-x_c)^2}{w_1^2}} y_1 =y_0+\frac {A_1}{w_1\sqrt{\pi /2}}e^{-2\frac{(x-x_c)^2}{w_1^2}}](//d2mvzyuse3lwjc.cloudfront.net/doc/ja/UserGuide/images/Quick_Start/math-63afdaef55d57ecfe4414c8b77ffd474.png)
![y_2=y_0+\frac{2A_2}\pi \frac {w_2} {4\left( x-x_c\right) ^2+w_2^2} y_2=y_0+\frac{2A_2}\pi \frac {w_2} {4\left( x-x_c\right) ^2+w_2^2}](//d2mvzyuse3lwjc.cloudfront.net/doc/ja/UserGuide/images/Quick_Start/math-45c823f9ecd6d8591bbca1aa8d43d147.png)
詳しくは、こちらのチュートリアルをご覧ください。
2つの独立変数でフィットする
![y = vm*\frac{x1}{km+(1+\frac{x2}{ki})*x1} y = vm*\frac{x1}{km+(1+\frac{x2}{ki})*x1}](//d2mvzyuse3lwjc.cloudfront.net/doc/ja/UserGuide/images/Quick_Start/math-47bf8aac7d4fc2f6576c7776f9634cdc.png)
ここで、x1とx2は、独立変数で、ki、km、vmは、フィットパラメータです。
詳しくは、こちらのチュートリアルをご覧ください。
複素関数でフィット
Originで複素関数でフィットするには、複素数データの実部と虚部を2つの異なる列に、2つの従属変数として分ける必要があります。
以下に、複素関数の定義方法の例を示します。
complex cc = A/(1+1i*omega*tau);
y1 = cc.m_re;
y2 = cc.m_im;
ここで、1iは、虚数単位「i」として使われ、omegaは、独立変数、A, tauは、フィッティングパラメータ、y1とy2は、 ccの実部と虚部です。
常微分方程式でフィット
Originでは、NAG関数を呼び出し、1次または高次の常微分方程式(ODE)を定義することができます。
以下に1階常微分方程式のフィット方法の例を示します。
![\frac{\mathrm{d} y}{\mathrm{d} x}=ay \frac{\mathrm{d} y}{\mathrm{d} x}=ay](//d2mvzyuse3lwjc.cloudfront.net/doc/ja/UserGuide/images/Quick_Start/math-3139ba5ac00c6da70c79240db577d5af.png)
![y|_{x=x0}=y0 y|_{x=x0}=y0](//d2mvzyuse3lwjc.cloudfront.net/doc/ja/UserGuide/images/Quick_Start/math-fa0aad52f07a3069cc4b0a22552679b3.png)
ここで、aは常微分方程式 のパラメータで、y0はODEの初期値です。このODEの問題を解決するために、Runge–Kuttaメソッドを使用して、NAG関数 d02pvc と d02pcc が呼び出されます。
詳しくは、こちらのチュートリアルをご覧ください。
外部DLLでフィット
Origin C 関数は、C、C++、Fortranコンパイラーによって作成された外部DLLの関数を呼び出すことができます。これには、ソースファイルが外部DLL内の関数を宣言するヘッダファイル用の指示文を含んでいる必要があります。
以下に、 GNU Scientific LibraryのGSLを使って下記モデルをフィットする方法の例を示します。
![y=y_0+a\int_{0}^{x} e^{\beta \cdot t}\, dt y=y_0+a\int_{0}^{x} e^{\beta \cdot t}\, dt](//d2mvzyuse3lwjc.cloudfront.net/doc/ja/UserGuide/images/Quick_Start/math-5f9ffaf63cd7012c3ab0cccc7766b173.png)
詳しくは、こちらのチュートリアルをご覧ください。
サードパーティ製DLL関数の呼び出しについての詳細は、このページを参照してください。
ユーザ定義フィット関数で組込関数を引用
Originでは、新しいフィット関数を定義する際に、組込関数を引用することができます。
以下は、2つのガウス関数の統合として考えられる、歪曲ガウスピークをフィットする方法です。これらの2つのガウス曲線は、基線とピークの中心(xc)を共有し、ピークの幅(w) と振幅 (A)が異なっています。
次のように関数を定義します。
y = x<xc? nlf_Gauss(x, y0, xc, w1, A1) : nlf_Gauss(x, y0, xc, w2, A2);
ここで、nlf_Gauss() は組み込みのGauss関数です。
詳しくは、こちらのチュートリアルをご覧ください。
|