主要内容

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在0处缩放到单位标准差,

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)

图中包含一个轴对象。轴对象包含两个类型为line的对象。

创建一个由5个等距点组成的向量[0,1],并评估 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”'y1'“f1”

图中包含一个轴对象。轴对象包含3个类型为line的对象。这些对象代表y y1 f1。

首先生成向量x在间隔内等距的点[0, 2.5],然后求值ERF(x)在这些点。

x =(0:0.1:2.5)';Y = ERF(x);

确定近似多项式的程度的近似多项式的系数。

p = polyfit(x,y,6)
p =1×7.0.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个类型为line的对象。

创建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”

图中包含一个轴对象。axis对象包含一个类型为line的对象。

使用polyfit用三个输出拟合一个五次多项式,使用定心和缩放,改善了问题的数值性质。polyfit为数据中心一年,将其缩放到标准差为1,避免了拟合计算中出现病态的Vandermonde矩阵。

[p,〜,mu] = polyfit(t.year,t.pop,5);

使用polyval有四个输入要评估p随着时间的推移,(年 - mu(1))/ mu(2).绘制原始年份的结果。

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

图中包含一个轴对象。轴对象包含两个类型为line的对象。

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

创建一些样本数据点的向量(x,y).将第一度多项式适合数据。

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

计算拟合多项式px.将结果线性回归模型与数据绘制。

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

图中包含一个轴对象。轴对象包含两个类型为line的对象。这些对象代表数据,线性拟合。

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

创建一些样本数据点的向量(x,y).使用polyfit适合数据的第一度多项式。指定两个输出以返回线性拟合的系数以及误差估计结构。

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

计算一阶多项式px.将误差估计结构指定为第三个输入,以便polyval计算标准错误的估计。标准错误估计返回三角洲

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

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

情节(x, y,“波”) 抓住plot(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可能需要定心和缩放。

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

在查询点上的拟合值,指定为向量。中的值y对应于包含的查询点x.如果y不是向量吗polyfit将它转换为列向量y(:)

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

多项式拟合程度指定为正整数标量。n指定左侧最大系数的多项式功率p

输出参数

全部折叠

最小二乘拟合多项式系数,返回为向量。p长度n + 1并包含多项式系数的降幂,最高幂为n.如果任何一x或者y包含价值观和n <长度(x),然后是所有的元素p

使用polyval评估p在查询点。

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

描述
R 三角R的Vandermonde矩阵的QR分解(可能排列)x
df 自由程度
诺考 残差的规范

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

如果数据中的错误y是独立且方差恒定的正态分布吗(y),δ)= polyval(…)产生至少50%的预测的错误界限。那是,y±三角洲包含未来观察的至少50%的预测x

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

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

限制

  • 在许多点的问题中,增加了多项式拟合的程度polyfit结果并不总是更适合。高阶多项式可以在数据点之间振荡,导致a贫穷适合数据。在这些情况下,根据问题,您可以使用低阶多项式拟合(在点之间趋于更平滑)或不同的技术。

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

算法

polyfit使用x形成Vandermonde矩阵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.因为范德蒙矩阵的列是向量的幂x的条件数V通常很大,高阶配合,导致奇异系数矩阵。在这些情况下,定心和缩放可以改善系统的数值,以产生更可靠的拟合。

扩展能力

在R2006A之前介绍