好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

最小二乘法matlab多项式拟合.docx

13页
  • 卖家[上传人]:新**
  • 文档编号:420359660
  • 上传时间:2024-01-08
  • 文档格式:DOCX
  • 文档大小:190.45KB
  • / 13 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 最小二乘法拟合探究吴春晖中国海洋大学海洋环境学院 山东 青岛 266100)摘要:本文的拟合对象为含多个变量的待定系数的多项式通过最小二乘法对多项式作出拟合 以向量矩阵的形式来解出待定的系数在matlab中,通过算法,写出具体的解法之后, 先对最小二乘法的准确性作出检验,分析该方法在应对复杂情况的误差在检验该方法的可 行性之后,对给定的变量值进行拟合与解题同时,本文将对基于Laguerre多项式的最小 二乘法进行分析检验,关键词:最小二乘法拟合多变量 Laguerre 多项式引言:在之前的计算方法中,在给出已知节点后,如果需要根据给出的节点来确定未知节点的 值,我们需要运用插值在对插值的精准性进行分析后,我们发现不同插值方式的误差都极 大,而且插值所得出的函数的特征由插值方式所决定,并不能反映具体的节点原来可能的规 律与分布所以,拟合的方法相比插值而言,并不要求函数值在原节点处的值相等,却能在 一定程度上反映原函数的规律在该文中,我们主要运用最小二乘法进行拟合目录第一章 matlab 最小二乘法拟合程序 31.1 最小二乘法拟合的数学法 31.2 编写最小二乘法的 matlab 拟合程序 31.2.1 程序算法 31.2.2 最小二乘法拟合的程序 41.3 程序的分析说明 4第二章最小二乘拟合法的检验及应用 52.1 最小二乘法拟合的检验 52.2 最小二乘法拟合的实际应用 7第三章 Laguerre 多项式的最小二乘拟合 83.1 算法与程序 83.2 检验与分析 9第四章最小二乘法拟合的分析总结 11第一章 matlab 最小二乘法拟合程序1.1 最小二乘法拟合的数学方法最小二乘法拟合的算法如下:对于给定的一组数据W' yi),° =1,2,…'N求t (t 口 N)次多项式y = Ea x jij =0 使总误差Q=E(y -Ea xj)2iii=1 j =0 最小.由于Q可以视作关于ai(i = 0,l,2,i't)的多元函数,故上述拟合多项式的构造可归结为多元函数的极值问题.= 0, k = 0,1,2,…,t da令kE(y -Ea x j)xk = 0,k = 0,1,2, — ,ti j i i得到 i =1 j =0a N + a Ex H Fa 工xt =工y0 1 i t i ia Ex + a Ex2 h fa Ext+1 = Ex y0 i 1 i t i i i旳亠、^/r1 a Ext + a Ext+1 + + a Ex2t = Exty即有方程组 0 i 1 i t i i i求解该正规方程组,即可得到最小二乘法的拟合系数。

      1.2编写最小二乘法的matlab拟合程序1.2.1 程序算法在最小二乘法的数学算法的基础上,对算法进行优化,给出具体的程序算法 由线性代数的知识,易知可将每一组变量表现为在一个多维空间的向量故对于基本方 程组而言,无解即代表由多个变量所确定的多维空间的集合中,无法找到Y值的向量在只 有两个变量的情况下,即为Y的向量到平面的最短距离的向量与转置的自变量向量的向量积 为 0.所以我们可以建立两个矩阵,一个代表Y向量,另一个代表X向量通过循环求得代表X 向量的每个变量的在确定的位置的转置与另一变量的向量积,另一变量为Y或X向量之后利 用左除法解出待定的系数,即得到了我们要知道的具体的函数然后通过符号变量,对给定的x值进行运算,并给出拟合值1.2.2 最小二乘法拟合的程序在这里,我们选取了特定的含二次幂,一次幂,常数及负一次幂的多项式进行拟合,每 一系数对应一个不同的变量具体的程序代码如下:x=[1 2 1 1];x1=[2 4 2 3];x2=[3 6 5 3];y=[6 14 7 7];vec_1=x.A-1;vec_2=x1.八2;vec_3=ones(1,length(x));vec_4=x2 %length(x)=length(x1) matrix=zeros(4,4);yx=zeros(1,4);for j=1:4matrix(1,j)=eval('sum(vec_',num2s tr(j), '.*(x.A(-1)))'])mat rix(2,j)=eval( 'sum(vec_' ,num2s tr(j),'.*(x1「2))']) matrix(3,j)=eval('sum(vec_',num2str(j),'.*1)']) matrix(4,j)=eval('sum(vec_',num2str(j),'.*x2)']) yx(j)=eval('sum(vec_',num2str(j),'*y)'])endsolve=matrix\yx';symsxv;symsw; symssabcd;f=a*xA(-1)+b*wA2+c*1+d*s;out=0;in=double(in);in=[1 2 3 solve(1) solve(2) solve(3) solve(4)]; formatlong;out=double(subs(f,[x w s a b c d],in));1.3程序的分析说明在程序的开头,是输入x与y值,变量的个数与幕次由输入决定。

      之后程序会自动进行 运算,给出所要求的每个变量的所对应的系数值之后求得的拟合函数表现为符号变量的形 式程序的适用性较好,通过符号变量能直接输出需要求的拟合曲线 程序也存在可以改进的地方,比如可以将整个解法优化为一个函数,对输入的变量,直 接进行处理另外程序的循环算法的效率不高代码较多第二章最小二乘拟合法的检验及应用2.1 最小二乘法拟合的检验在上文所给出的拟合程序自带检验部分,分别输入原值与随机的几组数据来进行验证Fig.2.1.1 Lagrange interpolation nodes of interpolation(for 4)我们加大原变量的拟合个数共有8 组数据,得到的拟合曲线如下16141210864202238147-4最小二乘法拟合的原变量检验(8个点)原值 拟合结果 误差图 2.1.2 最小二乘法的原变量检验(8 个点)Fig.2.1.2Lagrange interpolation nodes of interpolation(for 8)从上述原变量检验的结果来看,最小二乘法能较好的拟合出符合原函数规律的区间值 我们给出一系列由符合标准形式函数所构造的略微偏离原值的变量组,来进行检验。

      为 了实现结果的直观性,保留一个单变量构造的函数为x"2+x+l.y 值离原函数值在1 的范围内波动,取2,4,10,100,1000组自变量值,并绘制出图像进 行比较,来检验最小二乘法的准确性拟合得出的该二次项的系数随自变量的组数发生变化,见24101001000二次项值0.86080.99120.99971.00001.0000一次项值1.24070.96900.97120.99901.0000常数项值1.81520.97901.02801.07380.9950表 2.1.1 拟合系数随自变量组数变化的规律Table 2.1.1 fitting coefficient with the number of sets of independent variables分析总结:从以上单变量与多变量的多项式的检验结果看,拟合在体现原函数潜在的规 律上,具有较好的表现对于单变量的多项式,在检验中,我们通过随机函数,使因变量在 原函数附近波动随着自变量组数的增多,拟合的结果越来越接近原函数,当自变量达到一 个较大数值时,拟合所得曲线基本等于原函数对于多变量的最小二乘法拟合,原理与单变量基本类似,我们所采取的用向量来表示正 规方程组的方式同样适用于多变量。

      只需要改变列向量的数值,使其等于某变量的二次项的 值之后用右除法来解出各项的系数2.2最小二乘法拟合的实际应用选取《计算方法引论》上的P65的第3小题,并加以改进为:用最小二乘原理,求一个 形如y=a+b*x"2+c*x的经验公式,使其与下列数据相拟合x1925313844y19.032.349.073.397.8表 2.2.1 拟合数据表Table.2.2.1 the data table 运用之前的程序进行拟合,得到的2次项系数为0.0497,常数项系数为0.6882,一次项 系数为 0.0193.所得的拟合图线与拟合的节点吻合得较好Figure.2.2.2 Fitting curve 对二次拟合方法进行简单应用后,我们发现该方法所得的拟合函数与原值吻合得较好 证明最小二乘法在实际运用中能发挥较大的作用第三章 Laguerre 多项式的最小二乘拟合3.1 算法与程序正交多项式的最小二乘法的拟合,主要改变的是各项的表达式,使其具有较好的独立性, 随着项数的增加,能较好地逼近原函数故整体算法与之前相仿,求各项系数的方法不变由于项数是可以改变的,所以要设置 项数,及多组符号变量,来使程序简洁。

      求正交多项式,也应用符号变量表示,注意常数项 的特殊情况故程序如下syms x f;syms l;m=3;data=[19 25 31 38 44];y=[19 25 31 38 44];l(1)=1;for n=2:ml(n)二exp(x)/fac to rial(n-l)*diff(x"(n-l)*exp(-x),x,n-l);endfor i=1:m eval(['vec_',num2str(i),'=subs(l(i),x,data)']) end vec_1=ones(1,length(data));% vec_2=data;% vec_3=ones(1,length(data));%length(x)=length(x1) matrix=zeros(m,m);yx=zeros(1,m); out=zeros(m,length(data));for i=1:mfor j=1:m matrix(i,j)=eval(['sum(vec_',num2str(j),'.*vec_',num2str(i),')'])% 可写成两层循环 yx(j)=eval(['sum(vec_',num2str(j),'.*y)']) end endsolve=matrix\yx';for k=1:mf(k)=l(k)*solve(k)out(k,:)=subs(f(k),x,data)endvalues=sum(out,1);fun=sum(f,2);3.2 检验与分析我们先选取比较有规律的自变量与因变量,为data=[19 25 31 38 44],y=[19 25 31 38 44], x与y呈正比关系,对这些节点作基于Laguerre多项式的二次拟合。

      设项数为3,解得的系 数分别对应为 1.000000000000145, -0.999999999999990,3.492540352537980e-16,拟合的 值在原节点相等见图 3.2.1Figure.3.2.1 When f。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.