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

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

实验名称: 最小二乘拟合 引言 在科学实验和生产实践中,经常要从一组实验数据出发,寻求函数y=f(x)的一个近似表达式y=φ(x),称为经验公式,从几何上来看,这就是一个曲线拟合的问题。 多项式的插值虽然在一定程度上解决了由函数表求函数近似表达式的问题,但用它来解决这里的问题,是有明显的缺陷的。首先,由实验提供的数据往往有测试误差。如果要求近似曲线y=φ(x)严格地通过所给的每个数据点,就会使曲线保留原来的测试误差,因此当个别数据的误差较大的时候,插值的效果是不理想的。其次,当实验数据较多时,用插值法得到的近似表达式,明显缺乏实用价值。在实验中,我们常常用最小二乘法来解决这类问题。 定义为拟合函数在处的残差。为了是近似曲线能尽量反映所给数据点的变化趋势,我们要求尽可能小。在最小二乘法中,我们选取,使得偏差平方和最小,即 ,这就是最小二乘法的原理。 实验目的和要求 运用matlab编写.m文件,要求用最小二乘法确定参数。 以下一组数据中x与y之间存在着的关系,利用最小二乘法确定式中的参数a和b,并计算相应的军方误差与最大偏差。数据如下: x 1 2 3 4 5 6 7 8 9 10 y 0.898 2.38 3.07 1.84 2.02 1.94 2.22 2.77 4.02 4.76 x 11 12 13 14 15 16 17 18 19 y 5.46 6.53 10.9 16.5 22.5 35.7 50.6 61.6 81.8 算法原理与流程图 原理 最小二乘是要求对于给定数据列,要求存在某个函数类 中寻求一个函数: ,使得满足 。 根据以上条件可知,点是多元函数 的极小点,从而满足方程组 即, 记,则上述方程组可表示成,(k=0,1,…,n) 写成矩阵形式为 ,这个方程组成为法方程组,可以证明,当线性无关时,它有唯一解。 特别地,曲线拟合的一种常用情况为代数多项式,即取 ,则 (k=0,1,…,n) 故相应的法方程组变为 ,这就是最小二乘法的原理。 在解决本题时,为了简便起见,我们将指数转变成代数多项式去计算。 在两边取对数,得到,取,可见是呈线性关系的。这样我们可以方便地利用最小二乘法求取参数。 (2)流程图 整体流程图 生成矩阵C流程图 程序代码及注释 %最小二乘拟合 %a为线性拟合中的常数,b为一次项系数 %t为均方误差,maxi为最大偏差 function [a,b,t,maxi]=polyfit(x0,y0,n) m=length(x0) ;p=length(y0); %x0和y0长度不等时,报错 if m~=p fprintf(Error! Please input again!\n); end %生成中间矩阵C for i=1:m C(i,1)=1; for j=2:n+1 C(i,j)=x0(i)*C(i,j-1); end end %生成系数矩阵A A=C*C; %将题目中的y的每项求自然对数后得到y1 for i=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; for k=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.898 2.38 3.07 1.84 2.02 1.94 2.22 2.77 4.02 4.76 5.46 6.53 10.9 16.5 22.5 35.7 50.6 61.6 81.8]; [a b t max]=polyfit(x,y,1) Error! Please input again! a = 0.7185 b = 0.2227 t = 31.6255 max = 22.0631 2、计算过程 (1)首先输入已知点 x=1:19; y=[0.898 2.38 3.07 1.84 2.02 1.94 2.22 2.77 4.02 4.76 5.46 6.53 10.9 16.5 22.5 35.7 50.6 61.6 81.8]; (2)输出结果 [a b t max]=polyfit(x,y,1) a = 0.6814 b = 0.2306 t =

文档评论(0)

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

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档