运行matlab中的polyfit多项式拟合函数,其中S的结果为R:[3x3 double] df:109 normr:

问题描述:

运行matlab中的polyfit多项式拟合函数,其中S的结果为R:[3x3 double] df:109 normr:27.2741
1个回答 分类:综合 2014-09-18

问题解答:

我来补答
实际上polyfit的意义就在于下面方程组的求解,未知数是p(1)~p(n+1).
p1*x1^n+p2*x1^(n-1)+p3*x1^(n-2)+L+pn*x1+p(n+1)=y1
p1*x2^n+p2*x2^(n-1)+p3*x2^(n-2)+L+pn*x2+p(n+1)=y2
p1*xm^n+p2*xm^(n-1)+p3*xm^(n-2)+L+pn*xm+p(n+1)=ym
那么,上面的系数矩阵就是一个范德蒙矩阵V,矩阵表达式是V*p=y的求解.
背景完毕!了解了以上知识后,再来看这个结果的意义.
s是一个结构体数组(struct),包含了R,df和normr.
R:polyfit函数中,先根据输入的x构建范德蒙矩阵V,然后进行QR分解,得到的上三角矩阵
df:degrees of freedom,df=length(y)-(n+1).df>0时,为超定方程组的求解,即拟合点数比未知数(p(1)~p(n+1))多
normr:norm of the residuals,残差范数,normr=norm(y-V*p),此处的p为求解之后的数值.
mu=[mean(x); std(x)],通过xhat=(x-mu(1))/mu(2)进行中心化和比例缩放,可以改善多项式及拟合算法的数值特征.
 
 
展开全文阅读
剩余:2000
上一页:课时练P3