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

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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

专业班级: 信计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

六实验结果分析与小结:

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

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

相关文档
最新文档