polyfit

多项式曲线拟合

描述

p= polyfit (Xÿñ返回多项式的系数p (x)ñ这是对数据的最佳拟合(在最小二乘意义上)ÿ。在系数p是降序功率,以及长度pn + 1

p X = p 1 X ñ + p 2 X ñ 1 + + p ñ X + p ñ + 1

[p小号] = polyfit(Xÿñ也返回结构小号可以使用作为输入到polyval获取错误估计。

[p小号μ] = polyfit(Xÿñ同样的回报μ,这与定心和缩放值的两个元素的矢量。亩(1)均值(X),亩(2)STD(x)的。使用这些值,polyfit中心X在0处标度为单位标准差,

X ^ = X X ¯ σ X

这种定心和定标变换改进了多项式和拟合算法的数值性质。

例子

全部收缩

在一个正弦曲线上生成10个等距的点[0,4 * PI]

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

采用polyfit以适应第七次多项式的点。

P = polyfit(X,Y,7);

在更细的网格上计算多项式并绘制结果。

X1 = linspace(0,4 * PI);Y1 = polyval(P,X1);图图(X,Y,'O')举行图(X1,Y1)保持

在区间创建的5个间隔的点的矢量[0,1],并评估 ÿ X = 1 + X - 1 在这些点。

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

拟合一个4次多项式到5个点。一般来说,对ñ点,你可以拟合一个多项式的次数n - 1准确地通过这些点。

p = polyfit (x, y, 4);

评估原函数和点上的0和2之间的更精细网格上的多项式拟合。

X1 = linspace(0,2);Y1 = 1./(1+x1);F1 = polyval(P,X1);

绘制函数值和多项式在较宽区间内的拟合[0,2],用来获得多项式拟合的点被突出显示为圆。原多项式拟合良好[0,1]间隔,但很快就从该区间的拟合函数外发散。

图图(X,Y,'O')举行情节(x1, y1)情节(x1, f1,“r——”)传说('Y'“日元”'F1'

第一生成的矢量X分,在间隔等间隔[0,2.5],然后评估小块土地(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,Y-F,“VariableNames”,{'X''Y''适合''FitError'})
T =26×4表XÿFit FitError ___ _______ __________ ___________ 0 0 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.79654 0.00036515 1 0.8427 0.84238 0.0003164 1.1 0.88021 0.88005 0.00015948 1.2 0.91031 0.91035 -3.9919e-05 1.3 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)';Y1 = ERF(X1);F1 = polyval(P,X1);图图(X,Y,'O')举行图(X1,Y1,' - ')图(X1,F1,“r——”轴([0 5 0 2])保持

创建一个1750 - 2000年人口数据表,并绘制数据点。

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

采用polyfit与三个输出,以适应使用定心和缩放一个第五次多项式,这改善了问题的数值性质。polyfit把数据集中在在0处,标度为1,标准偏差为1,这样就避免了拟合计算中的病态Vandermonde矩阵。

(p ~μ)= polyfit (T。年,T。流行,5);

采用polyval有四个输入评估p与缩放年,(年亩(1))/亩(2)。将结果与最初的年份进行对比。

F = polyval(P,年,[],亩);保持图(一年,F)保持

适合一个简单的线性回归模型的一组离散的2-d的数据点。

创建一些样本数据点向量(x, y)。将一阶多项式与数据拟合。

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

评估拟合的多项式p在点X。用数据绘制得到的线性回归模型。

f = polyval (p (x);积(X,Y,'O'f, x,,' - ')传说(“数据”“线性拟合”

将线性模型拟合到一组数据点并绘制结果,包括95%预测区间的估计值。

创建一些样本数据点向量(x, y)。采用polyfit将一阶多项式与数据拟合。指定两个输出来返回线性拟合的系数和误差估计结构。

X = 1:100;Y = -0.3 * X + 2 * randn(1100);[P,S] = polyfit(X,Y,1);

评估一次多项式拟合在p在点X。指定误差估计结构作为第三输入,以便polyval计算标准误差的估计值。返回标准误差估计δ

[y_fit,δ= polyval(P,X,S);

绘制的原始数据,线性拟合,和95%预测区间 ÿ ± 2 Δ

积(X,Y,“博”)举行情节(x, y_fit,'R-')情节(x, y_fit + 2 *δ,“m——”中,x,y_fit-2 *增量,“m——”)标题(“数据与95%预测区间的线性拟合”)传说('数据'“线性拟合”'95%预测区间”

输入参数

全部收缩

查询点,指定为向量。的点X对应于拟合函数值包含在ÿ。如果X不是一个矢量,然后polyfit将其转换成一个列向量x (:)

警告消息在X是否重复(或几乎重复)了要点X可能需要定心和缩放。

数据类型:|
复数支持:万博1manbetx是的

在查询点拟合值,指定为矢量。中的数值ÿ对应于其中包含的查询点X。如果ÿ不是一个矢量,然后polyfit将其转换成一个列向量y (:)

数据类型:|
复数支持:万博1manbetx是的

多项式拟合度,指定为正整数标量。ñ指定最左边系数的多项式幂p

输出参数

全部收缩

最小二乘法拟合多项式系数,返回作为载体。p有长度n + 1并包含在降权力多项式系数,最高功率为ñ。如果任何一Xÿ包含为NaN价值观和Ñ<长度(x)的,则在所有元素p为NaN

采用polyval评估p在查询点。

误差估计结构。这个可选的输出结构,主要是用来作为输入到polyval函数来获取错误估计。小号包含以下字段:

领域 描述
[R 从的Vandermonde矩阵的QR分解三角形因子X
DF 自由度
normr 残差的范数

如果数据在ÿ是随机的,那么一个的协方差矩阵的估计p(Rinv * Rinv”) * normr ^ 2 / df,在那里Rinv是的逆[R

如果数据中的错误ÿ是独立的,与正常常数方差,然后[Y,δ= polyval(...)产生包含至少50%预测的误差范围。也就是说,ÿ±δ包含至少50%的未来观测的预测X

定心和缩放值,返回作为一个两元素矢量。亩(1)均值(X),亩(2)STD(x)的。这些数值中心查询点X在单位标准差为0时。

采用μ作为第四输入到polyval评估p在缩放点处,(X - 亩(1))/亩(2)

限制

  • 在多点问题中,采用多项式拟合度递增的方法polyfit并不总是导致一个更适合。高次多项式可以是振荡的数据点之间,导致符合数据。在这些情况下,根据问题的不同,可以使用低阶多项式拟合(在点之间会更平滑)或其他不同的技术。

  • 多项式自然无界,振动功能。因此,它们不很适合于外推的数据界定或单调(增加或减少)的数据。

算法

polyfit使用X形成范德蒙德矩阵Vn + 1列和M =长度(x)的行,从而导致线性系统

X 1 ñ X 1 ñ 1 1 X 2 ñ X 2 ñ 1 1 X ñ X ñ 1 1 p 1 p 2 p ñ + 1 = ÿ 1 ÿ 2 ÿ

哪一个polyfit解决与p = V \ y。由于在Vandermonde矩阵的列是向量的功率X,的条件数V通常为大高阶拟合,从而产生单数系数矩阵。在这些情况下中心和缩放可以提高系统的数值性质,以产生一个更可靠的配合。

扩展功能

也可以看看

||||||

主题

之前介绍过的R2006a