最小二乘拟合实验报告.doc

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

最小二乘拟合实验报告

南昌工程学院

《计算方法》实验报告

课程名称计算方法

系院理学院

专业信息与计算科学

班级12级一班

学生姓名魏志辉

学号2012101316

《最小二乘求解》

引言

在科学实验和生产实践中,经常要从一组实验数据出发,寻求函数y=f(x)的一个近似表达式y=φ(x),称为经验公式,从几何上来看,这就是一个曲线拟合的问题。

多项式的插值虽然在一定程度上解决了由函数表求函数近似表达式的问题,但用它来解决这里的问题,是有明显的缺陷的。首先,由实验提供的数据往往有测试误差。如果要求近似曲线y=φ(x)严格地通过所给的每个数据点,就会使曲线保留原来的测试误差,因

输入及m,n生成中间矩阵C

输入及m,n

生成中间矩阵C

生成法方程组的系数矩阵

生成法方程组的右端向量

解法方程组得

输出

i=1,2,…,m

j=2,3,…,n+1

整体流程图 生成矩阵C流程图

程序代码及注释

%最小二乘拟合

%a为线性拟合中的常数,b为一次项系数

%t为均方误差,maxi为最大偏差

function[a,b,t,maxi]=polyfit(x0,y0,n)

m=length(x0);p=length(y0);

%x0和y0长度不等时,报错

ifm~=p

fprintf(Error!Pleaseinputagain!\n);

end

%生成中间矩阵C

fori=1:m

C(i,1)=1;

forj=2:n+1

C(i,j)=x0(i)*C(i,j-1);

end

end

%生成系数矩阵A

A=C*C;

%将题目中的y的每项求自然对数后得到y1

fori=1:m

y1(i)=log(y0(i));

end

%生成法方程组的右端向量B

B=C*y1;

%求解拟合系数

X=A\B;

%题中,a=exp(X(1)),b=X(2)

a=exp(X(1));

b=X(2);

%先求偏差平方和,再求均方误差

sum=0;

fork=1:m

y2(k)=a*exp(b*x0(k));

l(k)=y0(k)-y2(k);

sum=sum+l(k).^2;

end

t=sqrt(sum);

%最大偏差为偏差矩阵中绝对值最大的一项

maxi=max(max(abs(l)));

end

算例分析

1、测试示例

x=1:18;

y=[0.8982.383.071.842.021.942.222.774.024.765.466.5310.916.522.535.750.661.681.8];

[abtmax]=polyfit(x,y,1)

Error!Pleaseinputagain!

a=

0.7185

b=

0.2227

t=

31.6255

max=

22.0631

2、计算过程

(1)首先输入已知点

x=1:19;

y=[0.8982.383.071.842.021.942.222.774.024.765.466.5310.916.522.535.750.661.681.8];

(2)输出结果

[abtmax]=polyfit(x,y,1)

a=

0.6814

b=

0.2306

t=

38.3255

max=

27.3047

其中,a,b,t,max分别为常数项,一次项系数,均方误差,最大偏差。

讨论与结论

时间复杂度:

tic;[abtmax]=polyfit(x,y,1);toc

Elapsedtimeis0.859861seconds.

说明该算法具有一定的复杂性。

直观展示:

输入以下命令:

x=1:19;

y=[0.8982.383.071.842.021.942.222.774.024.765.466.5310.916.522.535.750.661.681.8];

fori=1:19

y0(i)=log(y(i));

end

x0=0:0.01:20;

y1=0.6814*exp(0.2306*x0);

文档评论(0)

喜芝 + 关注
实名认证
内容提供者

赶紧 下载啊啊啊啊

1亿VIP精品文档

相关文档