区間ごとに関数でフィットする
内容 |
サマリー
このチュートリアルでは、区間毎のフィット関数を定義する方法を説明します。
必要なOriginのバージョン:8.0 SR6
学習する項目
このチュートリアルでは、以下の項目について説明します。
- 区間(条件)のフィット関数を定義する
サンプルとステップ
\Samples\Curve Fitting\Exponential Decay.datファイルをインポートして、このチュートリアルを開始します。列Dを選択し、散布図をプロットします。Growth/Sigmoidalカテゴリーにある多くの組込関数を使ってこの曲線をフィットできますが、このチュートリアルでは、区間関数で曲線を2つの区間に分けます。
関数式は次のようなものです。
関数を定義する
F9を押し、フィット関数オーガナイザを開き、以下のように関数を定義します。
-
関数名: piecewise 実現方式: ユーザ定義 独立変数: x 従属変数: y パラメータの名前: xc, a, b, t1 定義形式: Origin C 関数:
関数編集ボックスの右にあるボタン
をクリックし、コードビルダで次のようにフィット関数を定義します。
void _nlsfpiecewise( // フィットパラメータ: double xc, double a, double b, double t1, // 独立変数: double x, // 従属変数: double& y) { // 編集可能部分の開始 // if条件で、曲線を分ける if(x<xc) { y = a+b*x+exp(-(x-xc)/t1); } else { y = a+b*x; } // 編集可能部分の終了 }
曲線をフィットする
Ctrl + Y を押すと、グラフウィンドウをアクティブにしてNLFitダイアログが開きます。定義した piecewise 関数を選択し、次の値でパラメータを初期化します。
-
xc: 1 a: 1 b: -1 t1: 0.1
「フィット」ボタンをクリックし、結果を生成します。
-
xc: 0.24 a: 36.76585 b: -24.62876 t1: 0.04961
Note: この関数は、xcとt1に敏感で、異なる初期値を使うと結果も異なります。

