Wolfram ResearchPRODUCTSPURCHASEFOR USERSCOMPANYOUR SITES
THIS IS DOCUMENTATION FOR AN OBSOLETE PRODUCT.
SEE THE DOCUMENTATION CENTER FOR THE LATEST INFORMATION.

Documentation / Mathematica / Mathematicaブック / Mathematicaを使った高等数学 / データの数値処理  /

3.8.2 曲線のフィット

与えられたデータセットに最も適した式を求めたいことがある.Mathematicaでこれを行う方法のひとつはFitを使うことである.

基礎的な線形フィット

素数の最初の20個の表である.

In[1]:= fp = Table[Prime[x], {x, 20}]

Out[1]=

データをプロットする.

In[2]:= gp = ListPlot[ fp ]

Out[2]=

素数データを1次曲線でフィットさせる.最適なフィットは関数 1 xの線形合成で得られる.

In[3]:= Fit[fp, {1, x}, x]

Out[3]=

フィットをプロットする.

In[4]:= Plot[%, {x, 0, 20}]

Out[4]=

もとのデータのグラフに重ね描きする.

In[5]:= Show[%, gp]

Out[5]=

次に2次曲線でフィットさせる.

In[6]:= Fit[fp, {1, x, x^2}, x]

Out[6]=

求まった2次曲線をプロットする.

In[7]:= Plot[%, {x, 0, 20}]

Out[7]=

もとのデータに重ね合わせると,2次曲線の方が1次曲線よりよくフィットしていることが分かる.

In[8]:= Show[%, gp]

Out[8]=

データ指定法

Fit, , ... 形式のデータが与えられると連続するが連続する整数点1, 2, ... における関数の値に当たると仮定する.Fitには関数の任意の点における値に相当するデータを与えることもできる.次元は1次元でも多次元でもよい.

多変量フィット

の値の表を作成する. Fitで取り込めるように Flattenをデータに作用させ,平坦化しておく.

In[9]:= Flatten[ Table[ {x, y, 1 + 5x - x y},
{x, 0, 1, 0.4}, {y, 0, 1, 0.4} ], 1]

Out[9]=

2変数の関数のフィットである.

In[10]:= Fit[ % , {1, x, y, x y}, {x, y} ]

Out[10]=

Fitは関数のリストを取り,明確で効果的な手順でこれらの関数のどのような線形結合がデータの最高の最小二乗フィットを与えるかを求める.しかし,指定の関数の線形結合だけからなるのではない「非線形フィット」を求めたいこともあるだろう.その場合はFindFitを使うとよい.FindFitはいかなる形の関数でも取り,データに最適のフィットを与えるパラメータの値を求める.

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

これは素数のリストを項の単純な線形結合にフィットする.

In[11]:= FindFit[fp, a + b x + c Exp[x], {a, b, c}, x]

Out[11]=

結果はFitによるものと同じである.

In[12]:= Fit[fp, {1, x, Exp[x]}, x]

Out[12]=

これはFitでは扱えない非線形形式をフィットする.

In[13]:= FindFit[fp, a x Log[b + c x], {a, b, c}, x]

Out[13]=

デフォルトにより,FitFindFitは両方とも「最小二乗」フィットを生み出す.これはを最小化すると定義することができる.ここではオリジナルの各データ点とフィットした値の差分を与える残差である.これとは別のノルムに基づいたフィットを考えることもできる.オプションNormFunction -> uを設定するとFindFitu[r]を最小にするフィットを求めようとする.ここでrは残差のリストである.デフォルトはNormFunction -> Normで最小二乗フィットに対応している.

ここではというノルムを使っている.これはフィットとデータ間の最大距離を最小にする.結果は最小二乗とは多少異なる.

In[14]:= FindFit[fp, a x Log[b + c x], {a, b, c}, x,
NormFunction -> (Norm[#, Infinity] &)]

Out[14]=

FindFitは最適なフィットを与えるパラメータの値を求めるという形を取る.検索を始める点を指定しなければならないこともある.この指定はa, , b, , ... の形式でパラメータを与えることで行う.FindFitには検索方法をコントロールするためのたくさんのオプションがある.

FindFitのオプション



Any questions about topics on this page? Click here to get an individual response.Buy NowMore Information


 © 2009 Wolfram Research, Inc.  Terms of Use  Privacy Policy |
Sign up for our newsletter: