Mathematica 9 is now available
THIS IS DOCUMENTATION FOR AN OBSOLETE PRODUCT.
SEE THE DOCUMENTATION CENTER FOR THE LATEST INFORMATION.
Mathematica >

曲線のフィット

与えられたデータセットに最も適した式を求めたいことがある.Mathematica でこれを行う方法のひとつはFitを使うことである.
Fit[{f1,f2,...},{fun1,fun2,...},x]fi に最もフィットするの線形結合funi を求める

基礎的な線形フィット

素数の最初の20個の表である.
In[1]:=
Click for copyable input
Out[1]=
データをプロットする.
In[2]:=
Click for copyable input
Out[2]=
素数データを1次曲線でフィットさせる.最適なフィットは関数1xの線形結合で得られる.
In[3]:=
Click for copyable input
Out[3]=
フィットをプロットする.
In[4]:=
Click for copyable input
Out[4]=
もとのデータのグラフに重ね描きする.
In[5]:=
Click for copyable input
Out[5]=
次に2次曲線でフィットさせる.
In[6]:=
Click for copyable input
Out[6]=
求まった2次曲線をプロットする.
In[7]:=
Click for copyable input
Out[7]=
もとのデータに重ね合せると,2次曲線の方が1次曲線よりよくフィットしていることが分かる.
In[8]:=
Click for copyable input
Out[8]=
{f1,f2,...}1, 2, ...と変化する座標の値に対応したデータ点のリスト
{{x1,f1},{x2,f2},...}x1, x2, ...と変化する座標の値に対応したデータ点のリスト
{{x1,y1,...,f1},{x2,y2,...,f2},...}座標の列xi, yi, ...の値で得られたデータ点のリスト

データ指定法

Fit{f1, f2, ...}形式のデータが与えられると連続する fi が連続する整数点{1, 2, ...}における関数の値に当たると仮定する.Fitには関数の任意の点における値に相当するデータを与えることもできる.次元は1次元でも多次元でもよい.
Fit[data,{fun1,fun2,...},{x,y,...}]複数の変数を持つ関数にフィットする

多変量フィット

x, y1+5x-xyの値の表を作成する.Fitで取り込めるようにFlattenをデータに作用させ,平坦化しておく.
In[9]:=
Click for copyable input
Out[9]=
2変数の関数のフィットである.
In[10]:=
Click for copyable input
Out[10]=
Fitは関数のリストを取り,明確で効果的な手順でこれらの関数のどのような線形結合がデータの最高の最小2乗フィットを与えるかを求める.しかし,指定の関数の線形結合だけからなるのではない「非線形フィット」を求めたいこともあるだろう.その場合はFindFitを使うとよい.FindFitはいかなる形の関数でも取り,データに最適のフィットを与えるパラメータの値を求める.
FindFit[data,form,{par1,par2,...},x]
formdata に最もフィットする pari の値を求める
FindFit[data,form,pars,{x,y,...}]多変量データのフィット

データの一般的なフィットを求める

これは素数のリストを項の単純な線形結合にフィットする.
In[11]:=
Click for copyable input
Out[11]=
結果はFitによるものと同じである.
In[12]:=
Click for copyable input
Out[12]=
これはFitでは扱えない非線形形式をフィットする.
In[13]:=
Click for copyable input
Out[13]=
デフォルトにより,FitFindFitは両方とも「最小2乗」フィットを生み出す.これはを最小化すると定義することができる.ここで ri はオリジナルの各データ点とフィットした値の差分を与える残差である.これとは別のノルムに基づいたフィットを考えることもできる.オプションNormFunction->u を設定するとFindFitu[r]を最小にするフィットを求めようとする.ここで r は残差のリストである.デフォルトはNormFunction->Normで最小2乗フィットに対応している.
ここではというノルムを使っている.これはフィットとデータ間の最大距離を最小にする.結果は最小2乗とは多少異なる.
In[14]:=
Click for copyable input
Out[14]=
FindFitは最適なフィットを与えるパラメータの値を求めるという形を取る.検索を始める点を指定しなければならないこともある.この指定は{{a, a0}, {b, b0}, ...}の形式でパラメータを与えることで行う.FindFitには検索方法をコントロールするためのたくさんのオプションがある.
FindFit[data,{form,cons},pars,vars] パラメータ制約条件consの下での最適フィットを探す

データへの一般フィットの検索

以下はパラメータの制約条件の下での最適フィットを探す.
In[15]:=
Click for copyable input
Out[15]=
オプション名
デフォルト値
NormFunctionNorm使用するノルム
AccuracyGoalAutomatic確度の目標桁数
PrecisionGoalAutomatic精度の目標桁数
WorkingPrecisionAutomatic内部計算精度
MaxIterations100最大反復回数
StepMonitorNone段階を踏むたびに常に評価される式
EvaluationMonitorNoneform が評価されたときに常に評価される式
MethodAutomatic使用するアルゴリズム

FindFitのオプション

Ask a question about this page  |  Suggest an improvement  |  Leave a message for the team