主要内容

このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。

polyfit

多項式の曲線近似

説明

p= polyfit (xynは,yのデータに対して(最小二乗的に)最適な近似となるn次の多項式p (x)の係数を返します。pの係数は降べきの順で,pの長さはn + 1になります。

p x p 1 x n + p 2 x n 1 + ... + p n x + p n + 1

p年代) = polyfit (xynはさらに,誤差推定を得るためにpolyvalへの入力として使用可能な構造体年代を返します。

p年代μ) = polyfit (xynはさらに,センタリングとスケーリングの値をもつ2要素ベクトルμを返します。μ(1)意思是(x)で,μ(2)性病(x)です。これらの値を使用して,polyfitxをゼロにセンタリングし,それが以下の単位標準偏差をもつようにスケーリングします。

x x x ¯ σ x

このセンタリングとスケーリングの変換により,多項式と近似アルゴリズムの両方の数値特性が改善されます。

すべて折りたたむ

[0, 4 *π)の区間内で正弦曲線に沿って等間隔に分布する10個の点を生成します。

x = linspace(0, 4 *π,10);y = sin (x);

polyfitを使用して7次の多項式を点にあてはめます。

p = polyfit (x, y, 7);

より細かいグリッド上で多項式を計算して結果をプロットします。

x1 = linspace(0, 4 *π);日元= polyval (p, x1);图绘制(x, y,“o”)举行情节(x1, y1)

图中包含一个坐标轴。轴线包含2个线型对象。

[0, 1]の区間内で等間隔に配置された5つの点のベクトルを作成し,それらの点で y x 1 + x - 1 を評価します。

x = linspace (0, 1, 5);y = 1. / (1 + x);

4次の多項式をこの5つの点にあてはめます。一般にn個の点に対して,それらの点を正確に通過するn - 1次の多項式をあてはめられます。

p = polyfit (x, y, 4);

0と2の間のより細かい点のグリッド上で,元の関数と多項式近似を計算します。

x1 = linspace (0, 2);日元= 1. / (1 + x1);f1 = polyval (p, x1);

元の関数の値と多項式近似をより広い区間(0, 2)でプロットし,多項式近似を求めるために使用した点を円で強調表示します。多項式近似は元の[0, 1]の区間では良好ですが,この区間の外側では近似させた関数から急速に離れています。

图绘制(x, y,“o”)举行情节(x1, y1)情节(x1, f1,“r——”)传说(“y”“日元”“f1”

图中包含一个坐标轴。轴线包含3个线型对象。这些对象代表y y1 f1。

最初に,区間[0, 2.5]で等間隔に分布するx個の点からなるベクトルを作成し,これらの点で小块土地(x)を評価します。

x =(0:0.1:2.5)”;y =小块土地(x);

6次の近似多項式の係数を求めます。

p = polyfit (x, y, 6)
p =1×70.0084 -0.0983 0.4217 -0.7435 0.1471 1.1064 0.0004

近似の程度を見るために,データ点で多項式を計算し,データ,近似値,誤差を表示する表を生成します。

f = polyval (p (x);T =表(x, y, f, yf,“VariableNames”, {“X”“Y”“健康”“FitError”})
T =26日×4表X Y Fit fiiterror __________ __________ ___________ 00 0.00044117 -0.00044117 0.1 0.11246 0.11185 0.00060836 0.2 0.2227 0.22231 0.00039189 0.3 0.32863 0.32872 -9.7429e-05 0.4 0.42839 0.4288 -0.00040661 0.5 0.5205 0.52093 -0.00042568 0.6 0.60386 0.60408 -0.00022824 0.7 0.6778 0.67775 4.6383e-05 0.8 0.7421 0.74183 0.00026992 0.9 0.79691 0.796541.0.93401 0.93422 -0.000211 1.4 0.95229 0.95258 -0.00029933 1.5 0.96611 0.96639 -0.00028097⋮

この区間内では,内挿値と実際の値は,かなり一致しています。この区間の外側で外挿値が実際のデータからどの程度急速に離れるのかを見るためにプロットを作成します。

x1 = (0:0.1:5) ';日元=小块土地(x1);f1 = polyval (p, x1);图绘制(x, y,“o”)举行情节(x1, y1,“- - -”)情节(x1, f1,“r——”)轴([0 5 0 2])保持

图中包含一个坐标轴。轴线包含3个线型对象。

1750 ~ 2000年の人口のデータのテーブルを作成し,データ点をプロットします。

年= (1750:25:2000)';Pop = 1e6*[791 856 978 1050 1262 1544 1650 2532 6122 8170 11560]';T = table(year, pop)
T =11×2表年流行____ _________ 1750 7.91e+08 1775 8.56e+08 1800 9.78e+08 1825 1.05e+09 1850 1.262 2e+09 1875 1.544e+09 1900 1.65e+09 1925 2.532 2e+09 1950 6.122e+09 1975 8.17e+09 2000 1.156e+10
情节(年,流行,“o”

图中包含一个坐标轴。轴包含一个线型对象。

3出力のpolyfitを使用し,センタリングとスケーリングを使用して5次の多項式をあてはめます。これにより問題の数値特性が向上します。polyfit一年のデータを0にセンタリングし,標準偏差が1になるようにスケーリングします。これにより近似計算において悪条件のヴァンデルモンド行列を避けることができます。

(p ~μ)= polyfit (T。年T.pop 5);

polyvalを4入力で使用し,pをスケーリングされた年(year-mu(1)) /μ(2)に対して評価します。結果を元の年に対してプロットします。

f = polyval (p,年,[],μ);持有情节(一年,f)

图中包含一个坐标轴。轴线包含2个线型对象。

単純な線形回帰モデルを,一連の離散2次元データ点に近似します。

サンプルデータ点のベクトル(x, y)をいくつか作成します。1次多項式をデータに近似します。

x = 1:50;Y = -0.3*x + 2*randn(1,50); / /p = polyfit (x, y, 1);

近似多項式pxの点で評価します。その結果得られる線形回帰モデルをデータでプロットします。

f = polyval (p (x);情节(x, y,“o”f, x,,“- - -”)传说(“数据”“线性适应”

图中包含一个坐标轴。轴线包含2个线型对象。这些对象代表数据,线性拟合。

線形モデルでデータ点セットを近似し,95%の予測区間の推定を含めて結果をプロットします。

サンプルデータ点のベクトル(x, y)をいくつか作成します。polyfitを使用して1次多項式でデータを近似します。線形近似の係数と誤差推定値の構造体を返す2つの出力を指定します。

x = 1:10 0;Y = -0.3*x + 2*randn(1100);[p, S] = polyfit (x, y, 1);

xの各点でpの1次多項式近似を評価します。polyvalの3番目の入力として誤差推定の構造体を指定し,標準誤差の推定値を計算します。標準誤差の推定値はδに返されます。

[y_fitδ]= polyval (p, x, S);

元のデータ,線形近,似および95%の予測区間 y ± 2 Δ をプロットします。

情节(x, y,“波”)举行情节(x, y_fit,的r -)情节(x, y_fit + 2 *δ,“m——”, x, y_fit-2 *δ,“m——”)标题(“95%预测区间的数据线性拟合”)传说(“数据”“线性适应”“95%的预测区间”

图中包含一个坐标轴。标题为“95%预测区间的数据线性拟合”的轴包含4个类型为line的对象。这些对象代表数据,线性拟合,95%预测区间。

入力引数

すべて折りたたむ

クエリ点。ベクトルとして指定します。xの点は,yに含まれる近似された関数の値に対応します。xがベクトルでない場合,polyfitはそれを列ベクトルx (:)に変換します。

xが同じ点(またはほぼ同じ点)を含む場合またはxのセンタリングやスケーリングが必要になる可能性がある場合には,警告メッセージが出力されます。

データ型:|
複素数のサポート:あり

クエリ点における近似値。ベクトルとして指定します。yの値は,xに含まれるクエリ点に対応します。yがベクトルでない場合,polyfitはそれを列ベクトルy (:)に変換します。

データ型:|
複素数のサポート:あり

多項式近似の次数。正の整数スカラーとして指定します。nは,pの最も左の係数の,多項式のべき乗を指定します。

出力引数

すべて折りたたむ

最小二乗近似多項式の係数。ベクトルとして返されます。pの長さはn + 1で,最大べき乗がnである多項式の係数を降べきの順に含みます。xまたはyのいずれかに値が含まれ,n <长度(x)である場合,pのすべての要素がです。

クエリ点でpを計算するにはpolyvalを使用します。

誤差推定の構造体。このオプションの出力構造体は,主に誤差推定を得るために関数polyvalへの入力として使用します。年代には次のフィールドが含まれています。

フィールド 説明
R xのヴァンデルモンド行列のQR分解によって得られる(置換されている可能性がある)三角R因子
df 自由度
normr 残差のノルム

データyがランダムな場合,pの共分散行列の推定は,(Rinv * Rinv”)* normr ^ 2 / dfになります。ここで,RinvRの逆行列です。

yのデータの誤差が一定の分散をもつ独立した正規分布の場合,関数(y),δ)= polyval(…)は少なくとも予測の50%を含む誤差範囲を出力します。つまりy±δの範囲には,xにおいて予想される将来の観測値の50%以上が含まれます。

センタリング値とスケーリング値。2要素ベクトルとして返されます。μ(1)意思是(x)μ(2)性病(x)です。これらの値は,xのクエリ点が単位標準偏差をもち,ゼロセンタリングされるために使用されます。

μpolyvalへの4番目の入力として使用すると,スケーリングされた点(x - mu(1)) /μ(2)pを計算します。

制限

  • 多くの点をもつ問題に対してpolyfitを使用して多項式近似の次元数を増やしても,より優れた近似が得られるとは限りません。高次の多項式はデータ点の間で振動する場合があり,データの“より劣った”近似になる場合があります。このような場合は,低次の多項式近似(点の間がより滑らかになる傾向がある)や別の手法を問題に応じて使用します。

  • 多項式は本質的に非有界の振動関数です。このため,有界のデータや,単調増加または単調減少するデータの外挿にはあまり適していません。

アルゴリズム

polyfitxを使用してn + 1列およびm =长度(x)行のヴァンデルモンド行列Vを形成し,次の線形方程式を導きます。

x 1 n x 1 n 1 1 x 2 n x 2 n 1 1 x n x n 1 1 p 1 p 2 p n + 1 y 1 y 2 y

polyfitはこれをp = V \ yによって解きます。ヴァンデルモンド行列の列はベクトルxのべき乗であるため,Vの条件数は高次の近似の場合にはしばしば大きくなり,結果として特異係数行列になります。このような場合,センタリングとスケーリングによって方程式の数値特性が向上し,信頼性の高い近似が得られる場合があります。

拡張機能

R2006aより前に導入