共有パラメータを使った異なる関数でのグローバルフィット

サマリー

このチュートリアルでは、次の問題を解決することを目的としています。それぞれのカーブに対して異なる関数を用い、2つまたはそれ以上の曲線に対して、グローバル曲線フィットを行う際に、いくつかのパラメーターを共有しようとすると、共有したパラメーターは全てのデータセットに共通となってしまいます。この問題は、異方性スペクトルのフィットなどの多種多様な科学分野に起こります。

必要なOriginのバージョン:Origin 2015 SR0

学習する項目

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

  • グローバルフィットを行うために、複数のデータセットを選択します。
  • 全ての関数に繋がる切り替えパラメーターを設定します。
  • 複数のフィット関数に共有されるパラメーターで、グローバルフィットを実行します。

ステップ

  1. 新規ワークブックボタン Button New Workbook.png をクリックして、新規ワークブックを作成します。
  2. Button Import Single ASCII.png ボタンをクリックして、<Origin EXE Folder>\Samples\Curve Fitting\フォルダの、MultiFunctionsFit.datファイルをインポートします。
  3. 列A、列Bと列Cを選択し、メニューから解析:フィット:非線形曲線フィットと操作してNLFitダイアログを開きます。
    次の3つのステップで、ユーザー定義のフィット関数を作成します。その関数は、次の数量的モデルを元に構築されます。
    Col(B):\;L_1=\frac{A_1e^{-t/t_0}+B_1}{A_2e^{-t/t_0}+B_2}
    Col(C):\;L_2=A_2e^{-t/t_0}+B_2
  4. 関数選択ページで、User DefinedカテゴリからH<新規..>関数を選択します。
  5. 関数名に"GlobalFit" と入力し、関数モデルと関数形式を次の図のように設定します。
    MultiFunctionsFit1.png
      進むをクリックし、変数とパラメータの設定ページに移動します。
  6. 変数とパラメータを、下の図のように設定します。
    MultiFunctionsFit2.png
    次に、進む をクリックし、式形式の関数ページに移動します。
  7. 関数内容のボックスにある L_1L_2 の関数式を含む式形式を入力します。
    s*(A1*exp(-t/t0)+B1)/(A2*exp(-t/t0)+B2)-(s-1)*(A2*exp(-t/t0)+B2)
    The parameter s is a switch for global fitting, if s=1, the L_1 is used for fitting, if s=0, L_2 が、フィット計算に使われます。s の値は次のフィット手順で制御されます。A1とB1の初期値を設定します。そして、OKをクリックします。
    MultiFunctionsFit2-1.png
  8. NLFit ダイアログに戻り、Use DefinedカテゴリのGlobalFit関数を選択します。データ選択ページに移動し、複数データフィットモードのドロップダウンリストからグローバルフィットを選択します。
    MultiFunctionsFit3.png
  9. パラメータタブに移動し、A2とB、t0の共有のチェックボックスにチェックを入れ、s と s_2 の固定のボックスにチェックを入れ、それぞれに1 と0を入力します。sの設定では、L_2を利用してC列をフィットしながら、L_1を使ってB列をフィット制御します。
    MultiFunctionsFit4.png
  10. フィットボタンをクリックして、フィットを実行します。結果シートのパラメータ表でフィット結果を確認できます。
    MultiFunctionsFit5.png
  11. グラフの元データプロットに、フィット曲線が追加されます。B列のフィット曲線L_1 と、C列のフィット曲線L_2GlobalFit (User) Fit of Multiple Dataset のグラフをダブルクリックすると確認することが出来ます。
    MultiFunctionsFit6.png