最小二乘法的二次数据拟合

最小二乘法的二次数据拟合
最小二乘法的二次数据拟合

最小二乘法的二次数据拟合

专业班级: 信计061 姓名:袁金龙 学号:156206012 一 实验目的

1.熟悉Mablab 编程;

2.学习最小二乘法及程序设计算法

二 实验题目:

最小二乘法求拟合数据的二次多项式

三 实验原理与理论基础

算法设计:

Ⅰ 由题意决定span(1,x,x^2,…),即决定拟合多项式. Ⅱ 分别计算1

(,)(,)n

i j i

j

m k k k k ==

∑,1

(,)(,)n

i

i

j

m k y k y -

==∑.

Ⅲ 用(,)i j k k 组成方阵A,用(,)i k y -

组成矩阵B. Ⅳ 利用A/B 求出该多项式的系数,再利用

1

(())^2n

i

i

i f x y =-∑求出平方误差.

四 实验内容 (一)问题重述

给定数据点 (,)i j x y 如表所示。

(二)用matlab 编写M 文件如下: function []=zuixiaoercinihe2(x,y) n=length(x); k00=0; for i=1:n

k00=k00+1; end k01=0; for i=1:n

k01=k01+x(i);

end

k02=0;

for i=1:n

k02=k02+x(i)*x(i);

end

k11=0;

for i=1:n

k11=k11+x(i)*x(i);

end

k12=0;

for i=1:n

k12=k12+x(i)*x(i)*x(i);

end

k22=0;

for i=1:n

k22=k22+x(i)*x(i)*x(i)*x(i);

end

k0y=0;

for i=1:n

k0y=k0y+y(i);

end

k1y=0;

for i=1:n

k1y=k1y+x(i)*y(i);

end

k2y=0;

for i=1:n

k2y=k2y+x(i)*x(i)*y(i);

end

A=[k00 k01 k02;k01 k11 k12;k02 k12 k22];

B=[k0y;k1y;k2y];

C=A\B;

p=C(1);

q=C(2);

r=C(3);

syms m;

'拟合的二次函数为:'

f=p+q*m+r*m*m

l=0;

for i=1:n

l=l+((p+q*x(i)+r*x(i)*x(i))-y(i))*((p+q*x(i)+r*x(i)*x(i))-y(i)); end

'该拟合函数的平方误差为:'

l

五实验结果

>> zuixiaoercinihe2(x,y)

ans =

拟合的二次函数为:

f =

1+m+9007199254740963/9007199254740992*m^2

ans =

该拟合函数的平方误差为:

l =

5.8178e-030

六实验结果分析与小结:

优点:该种算法对于节点增加的情况同样实用。

缺点:本实验仅对二次多项式有效,而对于其他次数的多项式要在一定程度上改变程序。

相关主题
相关文档
最新文档