LabTalk関数を使って2つの積分を含む関数でフィット

サマリー

例えば、複数の積分を利用してフィット関数を作成するとき、

\int_{LL1}^{UL1} f(t, arg1, arg2, ...)~dt + \int_{LL2}^{UL2} g(x, arg3, arg4, ...)~dx

それぞれのパラメータの詳細については、LabTalkを利用した積分フィットをご覧ください。

Origin バージョン8.6ではフィット関数ビルダは1つの積分関数ののみをサポートしていました。このような複雑なコードを使わなくても、フィット関数オーガナイザを使うことで、フィットをすることが来ます。

このチュートリアルでは、2つの積分からなる関数をフィット関数オーガナイザを使ってフィットさせます。2つ以上の積分を利用することも可能です。

必要なOriginのバージョン: Origin 8.6 以降

Origin 2018bから、積分を使って陰函数を定義することができます

学習する項目

このチュートリアルでは、以下の項目について解説します

  • フィット関数ビルダーでフィット関数を作成する
  • Labtalk関数を使って積分定義を組み込んだフィット関数を定義する

サンプルとステップ

フィッティングモデル

フィッティングモデルは次の式で表されます。

y=y_0+\int_{-5}^{x} A~t~dt - \int_{-\infty}^{x}B~t~\exp(-t^2/{w}^2)~ dt

フィット関数には4つのパラメータがあり、そのうち3つを被積分関数に受け渡し、独立変数を上限として積分を行います。

関数を定義します。

  1. F9を押してフィット関数ビルダダイアログを開きます。関数作成を押して新しい関数を追加します。カテゴリ作成ボタンで新しいカテゴリを作成できます。

    Fit Two Integral 001.jpg

  2. 名前編集ボックスで関数の名前を指定します。独立変数従属変数そしてパラメータ名をそれぞれの編集ボックスで定義します。
  3. ドロップボックスから実現方法を選択します。ダイアログの下のヒントタブで説明を確認できます。

    Fit Two Integral 002.jpg

  4. 関数編集ボックスでフィット関数を定義します。積分関数はLabTalkのintegralで作成します。
    y=integral(polyint, -5, x, a)-integral(gaussint, -inf, x, b, wc)+y0
            

    LabTalk関数を使った積分フィットにもあるように、xabそしてwc被積分関数のパラメータになります。

  5. パラメータの設定ボックスの右隣のボタンを押して、パラメータ設定ダイアログを開きます。それぞれのパラーメタの開始値と、下限、上限値を設定します。

    Fit Two Integral 003.jpg

  6. LabTalk関数の定義と初期化ボックスで2つの積分を定義します。今回は、以下のように設定します。
    function double polyint(double t, double ia)
    {
            return ia*t ;
    }
    function double gaussint(t, ib, iwc)
    {
            return ib *t* exp(-(t)^2/iwc^2) ;
    }
  7. これで、2つの積分フィットが定義されました。その他の設定を行います。終了する前に、フィット関数を保存しましょう。

曲線をフィットする

次のデータ をOriginの新しいワークシートにコピー&ペーストします。

X Y
-3 2.47613
-2.6 2.24016
-2.2 2.01543
-1.8 1.83094
-1.5 1.85038
-1.1 2.17725
-0.9 2.44967
-0.7 2.61423
-0.5 3.02305
-0.3 3.23057
-0.1 3.37822
0.1 3.2827
0.3 3.18775
0.5 2.86194
0.7 2.69104
0.9 2.39315
1.4 2.04046
1.8 1.85287
2.2 1.85325
2.6 2.20569

Y列を選択し、Ctrl + YキーでNLFitダイアログを開きます。定義した関数を選び、フィットボタンButton Fit.png をクリックしてフィットを行います。

Fit Two Integral 004.png