好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

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

8页
  • 卖家[上传人]:汽***
  • 文档编号:438394969
  • 上传时间:2023-12-14
  • 文档格式:DOC
  • 文档大小:145.50KB
  • / 8 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • .工程学院"计算方法"实验报告课 程 名 称 计算方法 系 院 理 学 院 专 业 信息与计算科学 班 级 12级一班 学 生 姓 名 志辉 学 号 2021101316 "最小二乘求解"1 引言在科学实验和生产实践中,经常要从一组实验数据出发,寻求函数y=f〔x〕的一个近似表达式y=φ(x),称为经历公式,从几何上来看,这就是一个曲线拟合的问题多项式的插值虽然在一定程度上解决了由函数表求函数近似表达式的问题,但用它来解决这里的问题,是有明显的缺陷的首先,由实验提供的数据往往有测试误差如果要求近似曲线y=φ(x)严格地通过所给的每个数据点,就会使曲线保存原来的测试误差,因此当个别数据的误差较大的时候,插值的效果是不理想的其次,当实验数据较多时,用插值法得到的近似表达式,明显缺乏实用价值在实验中,我们常常用最小二乘法来解决这类问题定义为拟合函数在处的残差为了是近似曲线能尽量反映所给数据点的变化趋势,我们要求尽可能小。

      在最小二乘法中,我们选取,使得偏差平方和最小,即 ,这就是最小二乘法的原理2 实验目的和要求运用matlab编写.m文件,要求用最小二乘法确定参数以下一组数据中x与y之间存在着的关系,利用最小二乘法确定式中的参数a和b,并计算相应的军方误差与最大偏差数据如下:x12345678910y0.8982.383.071.842.021.942.222.774.024.76x111213141516171819y5.466.5310.916.522.535.750.661.681.83 算法原理与流程图(1) 原理最小二乘是要求对于给定数据列,要求存在某个函数类中寻求一个函数:,使得满足根据以上条件可知,点是多元函数的极小点,从而满足方程组即,记,那么上述方程组可表示成,(k=0,1,…,n)写成矩阵形式为,这个方程组成为法方程组,可以证明,当线性无关时,它有唯一解特别地,曲线拟合的一种常用情况为代数多项式,即取,那么 (k=0,1,…,n)故相应的法方程组变为,这就是最小二乘法的原理在解决此题时,为了简便起见,我们将指数转变成代数多项式去计算在两边取对数,得到,取,可见是呈线性关系的这样我们可以方便地利用最小二乘法求取参数。

      〔2〕流程图输入 及m,n生成中间矩阵C生成法方程组的系数矩阵 生成法方程组的右端向量 解法方程组得输出 i=1,2,…,mj=2,3,…,n+1整体流程图生成矩阵C流程图4 程序代码及注释%最小二乘拟合%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%生成中间矩阵Cfor i=1:m C(i,1)=1;for j=2:n+1 C(i,j)=x0(i)*C(i,j-1);endend%生成系数矩阵AA=C'*C;%将题目中的y的每项求自然对数后得到y1for i=1:m y1(i)=log(y0(i));end%生成法方程组的右端向量BB=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;endt=sqrt(sum);%最大偏差为偏差矩阵中绝对值最大的一项maxi=max(max(abs(l)));end5 算例分析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.7185b = 0.2227t = 31.6255max = 22.06312、计算过程〔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.6814b = 0.2306t = 38.3255max = 27.3047其中,a,b,t,max分别为常数项,一次项系数,均方误差,最大偏差。

      6 讨论与结论1、 时间复杂度:>> tic;[a b t max]=polyfit(x,y,1);tocElapsed time is 0.859861 seconds.说明该算法具有一定的复杂性2、 直观展示:输入以下命令:>> 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];>> for i=1:19y0(i)=log(y(i));end>> x0=0:0.01:20;>> y1=0.6814*exp(0.2306*x0);>> plot(x,y,'+')>> hold on>> plot(x0,y1)>> plot(x,y0,'+')>> y2=log(0.6814)+0.2306*x0;>> hold on>> plot(x0,y2,'-')可得如以下图形:参考文献[1] 易大义,云宝,有法. 计算方法(第2版),大学. p.29-53.[2] 琨 高思超 毕靖 编著 MATLAB2021从入门到精通 电子工业教育之通病是教用脑的人不用手,不教用手的人用脑,所以一无所能。

      教育革命的对策是手脑联盟,结果是手与脑的力量都可以大到不可思议。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.