《最小二乘法matlab多项式拟合》由会员分享,可在线阅读,更多相关《最小二乘法matlab多项式拟合(13页珍藏版)》请在金锄头文库上搜索。
1、最小二乘法拟合探究吴春晖(中国海洋大学 海洋环境学院 山东 青岛 266100)摘要:本文的拟合对象为含多个变量的待定系数的多项式。通过最小二乘法对多项式作出拟合,以向量矩阵的形式来解出待定的系数。在 matlab中,通过算法,写出具体的解法。之后,先对最小二乘法的准确性作出检验,分析该方法在应对复杂情况的误差。在检验该方法的可行性之后,对给定的变量值进行拟合与解题。同时,本文将对基于 Laguerre多项式的最小二乘法进行分析检验,关键词:最小二乘法 拟合 多变量 Laguerre 多项式引言:在之前的计算方法中,在给出已知节点后,如果需要根据给出的节点来确定未知节点的值,我们需要运用插值。
2、在对插值的精准性进行分析后,我们发现不同插值方式的误差都极大,而且插值所得出的函数的特征由插值方式所决定,并不能反映具体的节点原来可能的规律与分布。所以,拟合的方法相比插值而言,并不要求函数值在原节点处的值相等,却能在一定程度上反映原函数的规律。在该文中,我们主要运用最小二乘法进行拟合。目录第一章 matlab 最小二乘法拟合程序 .31.1 最小二乘法拟合的数学法 .31.2 编写最小二乘法的 matlab 拟合程序 .31.2.1 程序算法 .31.2.2 最小二乘法拟合的程序 .41.3 程序的分析说明 .4第二章最小二乘拟合法的检验及应用 .52.1 最小二乘法拟合的检验 .52.2
3、最小二乘法拟合的实际应用 .7第三章 Laguerre 多项式的最小二乘拟合 .83.1 算法与程序 .83.2 检验与分析 .9第四章 最小二乘法拟合的分析总结 .11第一章 matlab 最小二乘法拟合程序1.1 最小二乘法拟合的数学方法最小二乘法拟合的算法如下:对于给定的一组数据 , 求 次多项式 使总误(,)ixy1,2N t()=0jtijyax差 最小210(jNtiiijQya由于 可以视作关于 的多元函数,故上述拟合多项式的构造可归结i(0,1,)t为多元函数的极值问题令 得到0,1,2kta 10(),01,2Ntjkiiijyaxt即有方程组 0121120 titiii
4、itt ttiitiiaxyxxay 求解该正规方程组,即可得到最小二乘法的拟合系数。1.2 编写最小二乘法的 matlab 拟合程序1.2.1 程序算法在最小二乘法的数学算法的基础上,对算法进行优化,给出具体的程序算法。由线性代数的知识,易知可将每一组变量表现为在一个多维空间的向量。故对于基本方程组而言,无解即代表由多个变量所确定的多维空间的集合中,无法找到 Y 值的向量。在只有两个变量的情况下,即为 Y 的向量到平面的最短距离的向量与转置的自变量向量的向量积为 0.所以我们可以建立两个矩阵,一个代表Y向量,另一个代表X向量。通过循环求得代表X向量的每个变量的在确定的位置的转置与另一变量的向
5、量积,另一变量为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.-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);fo
6、r j=1:4matrix(1,j)=eval(sum(vec_,num2str(j),.*(x.(-1)matrix(2,j)=eval(sum(vec_,num2str(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=matrixyx;syms xv;syms w;syms sabcd;f=a*x(-1)+b*w2+c*1+d*s;out=0;in=double(in
7、);in=1 2 3 solve(1) solve(2) solve(3) solve(4);format long;out=double(subs(f,x w s a b c d,in);1.3 程序的分析说明在程序的开头,是输入 x与 y值,变量的个数与幂次由输入决定。之后程序会自动进行运算,给出所要求的每个变量的所对应的系数值。之后求得的拟合函数表现为符号变量的形式。程序的适用性较好,通过符号变量能直接输出需要求的拟合曲线。程序也存在可以改进的地方,比如可以将整个解法优化为一个函数,对输入的变量,直接进行处理。另外程序的循环算法的效率不高。代码较多。第二章最小二乘拟合法的检验及应用2.1
8、 最小二乘法拟合的检验在上文所给出的拟合程序自带检验部分,分别输入原值与随机的几组数据来进行验证。1 2 3 4-2024681012141618原 值 拟 合 值 误 差最 小 二 乘 法 的 原 变 量 检 验 (4 个 点 )图 2.1.1 最小二乘法的原变量检验(4 个点)Fig.2.1.1 Lagrange interpolation nodes of interpolation(for 4)我们加大原变量的拟合个数。共有 8组数据,得到的拟合曲线如下。1 2 3 4 5 6 7 8-4-20246810121416原 值 拟 合 结 果 误 差最 小 二 乘 法 拟 合 的 原 变
9、 量 检 验 (8 个 点 )图 2.1.2 最小二乘法的原变量检验(8 个点)Fig.2.1.2Lagrange interpolation nodes of interpolation(for 8)从上述原变量检验的结果来看,最小二乘法能较好的拟合出符合原函数规律的区间值。我们给出一系列由符合标准形式函数所构造的略微偏离原值的变量组,来进行检验。为了实现结果的直观性,保留一个单变量。构造的函数为 x2+x+1.y值离原函数值在 1的范围内波动,取 2,4,10,100,1000组自变量值,并绘制出图像进行比较,来检验最小二乘法的准确性。拟合得出的该二次项的系数随自变量的组数发生变化,见2
10、4 10 100 1000二次项值 0.8608 0.9912 0.9997 1.0000 1.0000一次项值 1.2407 0.9690 0.9712 0.9990 1.0000常数项值 1.8152 0.9790 1.0280 1.0738 0.9950表 2.1.1 拟合系数随自变量组数变化的规律Table 2.1.1 fitting coefficient with the number of sets of independent variables2 4 10 100 100000.20.40.60.811.21.41.61.82二 次 项 值一 次 项 值常 数 项 值图 2.
11、1.3 拟合系数随自变量组数变化的规律Table 2.1.3 fitting coefficient with the number of sets of independent variables分析总结:从以上单变量与多变量的多项式的检验结果看,拟合在体现原函数潜在的规律上,具有较好的表现。对于单变量的多项式,在检验中,我们通过随机函数,使因变量在原函数附近波动。随着自变量组数的增多,拟合的结果越来越接近原函数,当自变量达到一个较大数值时,拟合所得曲线基本等于原函数。对于多变量的最小二乘法拟合,原理与单变量基本类似,我们所采取的用向量来表示正规方程组的方式同样适用于多变量。只需要改变列向量
12、的数值,使其等于某变量的二次项的值。之后用右除法来解出各项的系数。2.2 最小二乘法拟合的实际应用选取计算方法引论上的 P65的第 3小题,并加以改进为:用最小二乘原理,求一个形如 y=a+b*x2+c*x的经验公式,使其与下列数据相拟合。x 19 25 31 38 44y 19.0 32.3 49.0 73.3 97.8表 2.2.1 拟合数据表Table.2.2.1 the data table运用之前的程序进行拟合,得到的 2次项系数为 0.0497,常数项系数为 0.6882,一次项系数为 0.0193.所得的拟合图线与拟合的节点吻合得较好。图 2.2.2 拟合曲线Figure.2.2.2 Fitting curve对二次拟合方法进行简单应用后,我们发现该方法所得的拟合函数与原值吻合得较