最小二乘法数值分析实验报告数学与信息工程学院实课程名称:实验室:实验台号:班级:姓名:实验日期:验报告数值分析2012 年 4 月 13 日数值分析实验报告五最小二乘法一、题目设有如下数据用三次多项式拟合这组数据,并绘出图形二、方法最小二乘法三、程序M文件: syms x f;xx=input(‘请输入插值节点as [x1,x2...]\n’);ff=input(‘请输入插值_ __________________ ___________________ ___________________ ___________________实验一MATLAB在数值分析中的应用插值与拟合是来源于实际、又广泛应用于实际的两种重要方法随着计算机的不断发展及计算水平的不断提高,它们已在国民生产和科学研究等方面扮演着越来越重要的角色下面对插值中分段线性插值、拟合中的最为重要的最小二乘法拟合加以介绍分段线性插值所谓分段线性插值就是通过插值点用折线段连接起来逼近原曲线,这也是计算机绘制图形的基本原理实现分段线性插值不需编制函数程序,MATLAB自身提供了内部函数interp1其主要用法如下:interp1(x,y,xi) 一维插值◆yi=interp1(x,y,xi)对一组点(x,y) 进行插值,计算插值点xi的函数值x为节点向量值,y为对应的节点函数值如果y
为矩阵,则插值对y 的每一列进行,若y 的维数超出x 或xi 的维数,则返回NaN ◆ yi=interp1(y,xi)此格式默认x=1:n ,n为向量y的元素个数值,或等于矩阵y的size(y,1) ◆ yi=interp1(x,y,xi,’method’)method用来指定插值的算法默认为线性算法其值常用的可以是如下的字符串nearest 线性最近项插值linear线性插值spline 三次样条插值贵州师范大学数学与计算机科学学院学生实验报告1. 对函数f(x)?,哪一种曲线拟合较好?为什么?能找出更好的拟合曲线吗?七、总结1、从图像可以看出用lagrange插值函数拟合数据中间拟合的很好,但两边与原函数图象相比波动太大,逼近效果很差,出现所谓的Runge现象2、从图像可以看出用最小二乘法去拟合较少的数据点,曲线拟合比直线拟合得好,高次的会比低次的拟合得好3.一般情形高次插值比低次插值精度高,但是插值次数太高也不一定能提高精度.八、附录1、M文件:function cy=Lagrange(x,y,n,cx)m=length(cx);cy=zeros(1,m);for k=1:n+1t=ones(1,m);for j=1:n+1if j~=kt=t.*(cx-x(j))./(x(k)-x(j));endendcy=cy+y(k).*t ;end>> x=-5::5;>> y=1./(x. +1);>> plot(x,y)>> n=10;>> x0=-5:10/n:5;>> y0=1./(1+x0. );>> cx=-5::5;>> cy=Lagrange(x0,y0,n,cx);>> hold on>> plot(cx,cy)e1 =xxxx大学数值分析实验报告题目:学
院:专业:年级:学生姓名:学号:日期:曲线拟合的最小二乘法xxxx学院xxxxxxx xxxx级xxx xxx 2014年12月24日课题八曲线拟合的最小二乘法一、问题的提出从随机的数据中找出其规律性,给出其近似表达式的问题,在生产实践和科学实验中大量存在,通常利用数据的最小二乘拟合求得拟合曲线在某冶炼过程中,根据统计数据的含碳量与时间关系,试求出含碳量y与时间t的拟合曲线0 5 10 15 20 25 30 35 40 45 50 55t(分)y(x10?4)0 二、要求1、用最小二乘法进行曲线的拟合;2、近似表达式为:?(t)?a0?a1t?a2t2?a3t3;?(t),3、打印出拟合函数:并打印出?(tj)与y(tj)的误差,其中j?1,2,3,?,12;
4、另外选取一个近似表达式,尝试拟合效果的比较;
5、*绘制出拟合曲线图;三、目的和意义1、掌握曲线拟合的最小二乘法;2、最小二乘法亦可用于解超定线性方程组;
3、探索拟合函数的选择与拟合进精度间的关系;四、MATLAB2011a简介及算法介绍MATLAB2011a本实验是基于MATLAB2011a软件平台进行程序设计MATLAB2011a是一款将数据结构、程序特性以及图形用户界面完美地结合在一起的一款强大的软件MATLAB的核心是矩阵和数组,在MATLAB2011a中,所有的数据都是以矩阵或数组的形式来表
示和存储的MATLAB2011a提供了常用的矩阵代数运算功能,同时还提供了非常广泛的、灵活的数组运算功能,用于数据集的处理MATLAB的编程特性与其他高级语言类似,同时它还可以与其他语言(如Fortran和C语言)混合编程,进一步扩展了自身的功能这次作业课题,主要采用了MATLAB语言进行程序的编写,误差计算,拟合函数的输出,以及拟合曲线(1)和拟合曲线(2)与原离散数据点在一个图形界面中的现实的显示
最小二乘拟合法在函数的最佳平方逼近中f(x)?C[a,b],如果f(x)只在一组离散的点集?xi,i?0,1,2,3,?,m?上给出,这就是科学实验中经常见到的实验数据?(xi,yi),i?0,1,2,3,?m?的曲线拟合,这里yi?f(xi)(i?0,1,2,3,?,m),要求一个函数y?S*(x)与所给数据?(xi,yi),i?0,1,2,3,?m?拟合若记误差?i?S(xi)?yi(i?0,1,2,3,?,m),??(?0,?1,?2,?3,??m)T,设?0(x),?1(x),?,?n(x)是*?C[a,b]上线性无关的函数族,在??span??0(x),?1(x),?,?n(x)?中找一个函数S*(x)使误差平方和??这里22[S(xi)?yi]?min?[S*(xi)?yi]2, ()2i*2i?0i?0s(x)??i?0mmmS(x)?a0?0(x)?a1?1(x)?a2?2(x )?a3?3(x)??an?n(x) (n?m). () 这就是一般的最小二乘逼近,用几何语言说,就称为曲线拟合的最小二乘法. 用最小二乘法拟合曲线时,首先要确定S(x)的形式,这不是单
纯的数学问题,还与所研究问题的运动规律及所得到的观测数据(xi,yi)有关;通常要从问题的运动规律或给定的数据描图,确定S(x)的形式,并通过实际计算选出最好的结果——这点将从下面的例题得到说明. S(x)的一般表达式为()式表示的线性形式.若?k(x)是k次多项式,S(x)就是n次多项式为了使问题的提法更有一般性,通常在最小二乘法中都考虑加权平方和2?2??22(xi)[S*(xi)?yi]2. ()i?0m 这里?(x)?0 (i?0,1,2,3,?m)是[a,b]上的权函数它表示不同的点(xi,yi)处的数据比重不同,列如:?(xi)可以表示点(xi,yi)处的重复观测次数用最小二乘法拟合曲线的问题,就是在形如()式的S(x)中求一函数y?S(x),使()式取得最小值它转化为求取多元函数*
I(a0,a1,?an)(xi)[?aj?(xi)?f(xi)]2i?0j?0mn***的极小点(a0,a1,?,an)的问题这与多元函数求极值的必要条件的问题一样,则有:mn?I?2??(xi)[?aj?(xi)?f(xi)]?k(xi)?0
k?0,1,2,?,n. ?aki?0j?0若记(?j,?k)(xi)?j(xi)?k(xi),
()i?0mm(f,?k)(xi)f(xi)?k(xi)?dk,k?0,1,2,3?,n, ()i?0上式可以改写为:?(?j?0mk,?j)aj?dk, k?0,1,2,3?,n, ()线性方程组()称为法方程,可以将其写成:Ga?d其
中??Ta?(a0,a1,?a2),d?(d0,d1,?dn)T,
(0,0)(0,1)(,)(,)11G10(n,0)(n, 1)(0,n)(n,1)
() (?n,?n)?五、课题分析拟合近似表达式:?(t)?a0?a1t?a2t2?a3t3的最高次数为三次,我们知道当拟合多项式的最高次数n?3时,与连续的情形一样,在求解法方程Ga?d的过程中,会出现系数矩阵(格拉姆矩阵)G为病态的问题但是如果?0(x),?1(x),?2(x),?,?n(x)是关于点集?xi?(i?0,1,2,?,m)带权?(xi)(i?0,1,2,?,m)正交的函数族,即:
0,jk,()
(?j,?k)(xi)?j(xi)?k(xi)??i?0?Ak?0,j?k,m则法方程的解为:(f,?k)?(?k,?k)*ak(x)f(x)?iii?0mk(xi),k?0,1,2,?,n ()??(x)?ii?0m2k(xi)这样就能避免求解格拉姆矩阵,也不会在求解线性方程组是就不会出现病态问题现在我们需要根据给定的节点x0,x1,?xm及权函数?(xi)?0,造出带权?(xi)正交的多项式?Pn(x)?.注意n?m,用递推公式表示Pk(x),即:?P0(x)?1,?() ?P1(x)?(x??1)P0(x),?P(x)?(x??)P(x) P(x),k?1,2,3,?,n?1.k?1kkk?1?k?1这里Pk(x)是首项系数为1的k次多项式,根据Pk(x)的正交性,得:m??(xi)xiPk2(xi)??(xPk(x),Pk(x))??k?1?i?0?m?(Pk(x),
Pk(x))2?(x)P(x)?iki?i?0??(xPk,Pk),k?0,1,2,3,?,n?1, () ??(P,P)kk?m??(xi)Pk2(xi)??(Pk,Pk)i?0?,k?1,2,3 ,?,n??k(Pk?1,Pk?1)?(xi)Pk2?1(xi)??i?0?用正交多项式?Pk(x)?的线性组合做最小二乘曲线拟合,只要根据公式()和()逐步求Pk(x)得同时,相应计算出系数(f,Pk)*ak??(Pk,Pk)??(x)f(x)P(x)iikii?0m??(x)Pii?0m, k?0,1,2,?,n,()2k(xi)
*并逐步把ak,Pk(x)累加到S(x)中去,最后就会得到所求的拟合曲线。