最小二乘法matlab多项式拟合
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
最小二乘法拟合探究
吴春晖
(中国海洋大学海洋环境学院山东青岛 266100)
摘要:
本文的拟合对象为含多个变量的待定系数的多项式。通过最小二乘法对多项式作出拟合,以向量矩阵的形式来解出待定的系数。在matlab中,通过算法,写出具体的解法。之后,先对最小二乘法的准确性作出检验,分析该方法在应对复杂情况的误差。在检验该方法的可行性之后,对给定的变量值进行拟合与解题。同时,本文将对基于Laguerre多项式的最小二乘法进行分析检验,
关键词:最小二乘法拟合多变量Laguerre多项式
引言:
在之前的计算方法中,在给出已知节点后,如果需要根据给出的节点来确定未知节点的值,我们需要运用插值。在对插值的精准性进行分析后,我们发现不同插值方式的误差都极大,而且插值所得出的函数的特征由插值方式所决定,并不能反映具体的节点原来可能的规律与分布。所以,拟合的方法相比插值而言,并不要求函数值在原节点处的值相等,却能在一定程度上反映原函数的规律。在该文中,我们主要运用最小二乘法进行拟合。
目录
第一章matlab最小二乘法拟合程序 (3)
1.1最小二乘法拟合的数学法 (3)
1.2 编写最小二乘法的matlab拟合程序 (3)
1.2.1程序算法 (3)
1.2.2 最小二乘法拟合的程序 (4)
1.3程序的分析说明 (4)
第二章最小二乘拟合法的检验及应用 (5)
2.1 最小二乘法拟合的检验 (5)
2.2最小二乘法拟合的实际应用 (7)
第三章Laguerre多项式的最小二乘拟合 (8)
3.1 算法与程序 (8)
3.2检验与分析 (9)
第四章最小二乘法拟合的分析总结 (11)
第一章matlab 最小二乘法拟合程序
1.1 最小二乘法拟合的数学方法
最小二乘法拟合的算法如下:
对于给定的一组数据
(,)i i x y ,1,2,,i N = 求t ()t N 次多项式
j
t
i j y a x ==∑使总误差
2
1
()j N t
i i i j Q y a x ===-∑∑最小.
由于Q 可以视作关于i a (0,1,2,,)i t = 的多元函数,故上述拟合多项式的构造可归结
为多元函数的极值问题.
令0,0,1,2,,k Q
k t a ∂==∂ 得到10
()0,0,1,2,,N t
j k i j i i i j y a x x k t ==-==∑∑
即有方程组
0121
01120
1t i t i i
t i i t i i i t t t t i i t i i i a N a x a x y a x a x a x x y a x a x a x x y
++⎧+∑++∑=∑⎪∑+∑++∑=∑⎪⎨⎪⎪∑+∑++∑=∑⎩
求解该正规方程组,即可得到最小二乘法的拟合系数。
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.^-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:4
matrix(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)'])
end
solve=matrix\yx';
syms xv;
syms w;
syms sabcd;
f=a*x^(-1)+b*w^2+c*1+d*s;
out=0;
in=double(in);
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值,变量的个数与幂次由输入决定。之后程序会自动进行运算,给出所要求的每个变量的所对应的系数值。之后求得的拟合函数表现为符号变量的形