资源描述:
《最小二乘法matlab多项式拟合》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
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最小二乘法拟合的实际应用7第三章Laguerr
3、e多项式的最小二乘拟合83.1算法与程序83.2检验与分析9第四章最小二乘法拟合的分析总结11第一章matlab最小二乘法拟合程序1.1最小二乘法拟合的数学方法最小二乘法拟合的算法如下:对于给定的一组数据,求次多项式使总误差最小.由于可以视作关于的多元函数,故上述拟合多项式的构造可归结为多元函数的极值问题.令得到即有方程组求解该正规方程组,即可得到最小二乘法的拟合系数。1.2编写最小二乘法的matlab拟合程序1.2.1程序算法在最小二乘法的数学算法的基础上,对算法进行优化,给出具体的程序算法。由线性代数的知识,易知可将每一组变量表现为在一个多维空间的向量。故对于基本方程组而言,
4、无解即代表由多个变量所确定的多维空间的集合中,无法找到Y值的向量。在只有两个变量的情况下,即为Y的向量到平面的最短距离的向量与转置的自变量向量的向量积为0.所以我们可以建立两个矩阵,一个代表Y向量,另一个代表X向量。通过循环求得代表X向量的每个变量的在确定的位置的转置与另一变量的向量积,另一变量为Y或X向量。之后利用左除法解出待定的系数,即得到了我们要知道的具体的函数。然后通过符号变量,对给定的x值进行运算,并给出拟合值。1.2.2最小二乘法拟合的程序在这里,我们选取了特定的含二次幂,一次幂,常数及负一次幂的多项式进行拟合,每一系数对应一个不同的变量。具体的程序代码如下:x=[1
5、211];x1=[2423];x2=[3653];y=[61477];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);forj=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_',nu
6、m2str(j),'.*1)'])matrix(4,j)=eval(['sum(vec_',num2str(j),'.*x2)'])yx(j)=eval(['sum(vec_',num2str(j),'*y)'])endsolve=matrixyx';symsxv;symsw;symssabcd;f=a*x^(-1)+b*w^2+c*1+d*s;out=0;in=double(in);in=[123solve(1)solve(2)solve(3)solve(4)];formatlong;out=double(subs(f,[xwsabcd],in));1.3程序的分析说明在程序
7、的开头,是输入x与y值,变量的个数与幂次由输入决定。之后程序会自动进行运算,给出所要求的每个变量的所对应的系数值。之后求得的拟合函数表现为符号变量的形式。程序的适用性较好,通过符号变量能直接输出需要求的拟合曲线。程序也存在可以改进的地方,比如可以将整个解法优化为一个函数,对输入的变量,直接进行处理。另外程序的循环算法的效率不高。代码较多。第二章最小二乘拟合法的检验及应用2.1最小二乘法拟合的检验在上文所给出的拟合程序自带检验部分,分别输入原值与随机的几组数据来进行验证。图2.1.