Fitting-Piecewise-Linear
このチュートリアルでは2つの線形区分から成る区分線形関数を定義してデータのフィットを実行し、結果から求められる交点位置を計算する方法を示します。
必要なOriginのバージョン:Origin 8.6 SR0以降
このチュートリアルでは、以下の項目について解説します。
上記のグラフから、曲線は2つの部分に分けられる部分からできていることが分かります。これは区分線形関数を使ってフィットすることができます。この関数は次のように表現できます。
x1とx2は曲線の終着点を示すx値で、フィット中に固定されます。x3は2つの部分の交点のx値を示しています。そしてy1、y2、y3は地点でのy値をそれぞれ表しています。
フィット関数は、フィット関数ビルダーを使用して定義できます。
if( x < x3 ) y = (y1*(x3-x)+y3*(x-x1))/(x3-x1); else y = (y3*(x2-x)+y2*(x-x3))/(x2-x3);
コンパイルボタンをクリックして関数内容をコンパイルします。NLSFに戻るボタンをクリックします。進むボタンをクリックします。
int n1, n2, n3; x_data.GetMinMax( x1, x2, &n1, &n2 ); x3 = x1 + (x2 - x1)/2; y1 = y_data[n1]; y2 = y_data[n2]; vector vd; vd = abs( x_data - x3 ); double xta, xtb; vd.GetMinMax( xta, xtb, &n3 ); y3 = y_data[n3];
コンパイルボタンをクリックしてコンパイルします。NLSFに戻るボタンをクリックします。完了ボタンをクリックします。
関数を定義する手順の途中でも、追加で派生パラメータ、例えば傾きや交点となる値を定義できます。これらの値はフィットの処理が完了した後の関数パラメータから計算されます。
フィット曲線のグラフは次のようになります。
フィットパラメータは以下の通りです。
この2つの区分の交点は(22.26316, 0.66106)となります。
Note:区分線形関数で2つ以上の区分にフィットする場合も同様の手順で行えます。