主要内容

polyfit

多项式曲线拟合

描述

例子

p= polyfit (xyn返回多项式的系数p (x)的程度n这是数据的最佳拟合(在最小二乘意义上)y。系数p幂次递减,长度pn + 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同样的回报μ,它是一个具有定心值和缩放值的二元向量。μ(1)意思是(x),μ(2)性病(x)。利用这些值,polyfit中心x并将其缩放为单位标准差,

x ^ = x x ¯ σ x

这种定心和缩放变换提高了多项式和拟合算法的数值性质。

例子

全部折叠

在间隔中沿正弦曲线等距生成10个点[0, 4 *π)

X = linspace(0,4*pi,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],并评估 y x = 1 + x - 1 在这些点上。

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

拟合5个点的4次多项式。一般来说,对于n点,你可以拟合一个多项式的度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 = erf(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 = table(x,y,f,y-f,“VariableNames”,{“X”“Y”“健康”“FitError”})
T =26日×4表X Y Fit FitError __________ __________ ___________ 00 0.00044117 -0.00044117 0.1 0.11246 0.11185 0.00060836 0.2 0.2227 0.2231 0.2231 0.2230 0.00039189 0.3 0.32863 0.32893 -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.7965 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)';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.055 e+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.1560 e+10
情节(年,流行,“o”

使用polyfit利用定心和标度的方法,通过三个输出来拟合一个五次多项式,提高了问题的数值性质。polyfit将数据集中在一年,并将其缩放为标准差为1,从而避免了拟合计算中的病态Vandermonde矩阵。

[p,~,mu] = polyfit(T。年,T.pop, 5);

使用polyval有四个输入值需要评估p随着岁月的流逝,(year-mu(1)) /μ(2)。将结果与最初年份作对比。

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

对一组离散的二维数据点拟合一个简单的线性回归模型。

创建一些样本数据点的向量(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(1,100);[p,S] = polyfit(x,y,1);

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

[y_fit,delta] = 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%预测区间”

输入参数

全部折叠

查询点,指定为向量。里面的点x中包含的拟合函数值对应y。如果x不是一个向量吗polyfit把它转换成一个列向量x (:)

以下情况会产生警告消息x是否有重复(或几乎重复)的观点x可能需要定心和缩放。

数据类型:|
复数支持:金宝app是的

查询点的拟合值,指定为向量。中的值y中包含的查询点对应x。如果y不是一个向量吗polyfit把它转换成一个列向量y (:)

数据类型:|
复数支持:金宝app是的

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

输出参数

全部折叠

最小二乘拟合多项式系数,作为一个向量返回。p长度n + 1包含了多项式系数的降次,最高次是n。如果任何一xy包含价值观和N < length(x),然后是所有元素p

使用polyval评估p在查询点。

误差估计结构。此可选输出结构主要用作polyval函数来获得误差估计。年代包含以下字段:

描述
R 三角R的范德蒙德矩阵的QR分解的因子(可能是置换的)x
df 自由度
normr 残差范数

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

如果在数据中出现错误y是独立的,正态的,方差恒定的[y,delta] = polyval(…)生成至少包含50%预测的错误边界。也就是说,y±δ包含至少50%的对未来观测的预测x

定心和缩放值,作为双元素向量返回。μ(1)意思是(x),μ(2)性病(x)。这些值将查询点居中x在零处,单位标准差。

使用μ作为第四个输入polyval评估p在缩放后的点,(x - (1))/ (2)

限制

  • 在多点问题中,使用polyfit并不总能找到更合适的人选。高阶多项式可以在数据点之间振荡,导致a贫穷符合数据。在这些情况下,根据问题的不同,可以使用低阶多项式拟合(点之间更平滑)或其他技术。

  • 多项式本质上是无界的振荡函数。因此,它们不适合外推有界数据或单调(增加或减少)数据。

算法

polyfit使用x形成范德蒙矩阵Vn + 1列和M =长度(x)行,得到线性方程组

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。因为Vandermonde矩阵的列是向量的幂x的条件数V对于高阶拟合往往较大,导致矩阵的系数为奇异。在这些情况下,定心和缩放可以改善系统的数值性质,以产生更可靠的拟合。

扩展功能

R2006a之前引入