资源预览内容
第1页 / 共10页
第2页 / 共10页
第3页 / 共10页
第4页 / 共10页
第5页 / 共10页
第6页 / 共10页
第7页 / 共10页
第8页 / 共10页
第9页 / 共10页
第10页 / 共10页
亲,该文档总共10页全部预览完了,如果喜欢就下载吧!
资源描述
数值分析课程设计报告学生姓名学生学号所在班级指导教师成绩评定一、课程设计名称函数逼近与曲线拟合二、课程设计目的及要求实验目的:学会用最小二乘法求拟合数据的多项式,并应用算法于实际问题。学会基本的矩阵运算,注意点乘和又乘的区别。实验要求:编写程序用最小二乘法求拟合数据的多项式,并求平方误差,做出离散函 数I(X必)I和拟合函数的图形;用MATLAB的内部函数polyfit求解上面最小二乘法曲线拟合多项式的系 数及平方误差,并用MATLAB的内部函数plot作出其图形,并与(1)结果进行 比较。三、课程设计中的算法描述用最小二乘法多项式曲线拟合,根据给定的数据点,并不要求这条曲线精确 的经过这些点,而是拟合曲线无限逼近离散点所形成的数据曲线。思路分析:从整体上考虑近似函数而同所给数据点位,误差*的大小,常用的方法有三种:一是误差J = P(兀)-月绝对值的最大即误差向量的无穷范数;二是误差绝对值的和|化|,即误差向量的1范数;三是误差平方和|后|的算术平方根,即类似于误差向量的2范数。前两种方法简单、自然,但不便于微分运算,后一种方法相当于考虑2范数的平方, 此次采用第三种误差分析方案。算法的具体推导过程:1. 设拟合多项式为:1ky = a0 + SX + a2x + + akx2. 给点到这条曲线的距离之和,即偏差平方和:3. 为了求得到符合条件的回的值,对等式右边求园偏导数,因而我们得到了:4.将等式左边进行一次简化,然后应该可以得到下面的等式nnaon + +i = 1i = 1axi + xk ; 1i = 1i = 1i = 1+ ai/x* ; 1 + +i = 1i = Li = 12k xi5.把这些等式表示成矩阵的形式,就可以得到下面的矩阵:11n1=1i=ln1=1n1=1nEv 1=1-ix1 /=!nJ=1n 京 1=1ix1 1=1-ix f=ln1=16.将这个范德蒙得矩阵化简后得到7.因为X*A = Y,那么A = Y/X ,计算得到系数矩阵,同时就得到了拟合曲线。四、课程设计内容实验环境:MATLAB2010实验内容:给定的数据点I入必)00.50. 60.70.80.91. 011.751.962. 192. 442.713. 001)用最小二乘法求拟合数据的多项式;2)用MATLAB内部函数polyfit函数进行拟合。实验步骤1)首先根据表格中给定的数据,用MATLAB软件画出数据的散点图(图1)。2)观察散点图的变化趋势,近似于二次函数。则用二次多项式进行拟合,取一组基函数并令|f(x)=罕之+钏+其中国是待定系数|(k = 1,2,3)|。3)用MATLAB程序作线性最小二乘法的多项式拟合,求待定系数。算法实现代码如下:x=0 0.5 0.6 0.7 0.8 0.9 1.0;y=l 1.75 1.96 2. 19 2. 44 2.71 3. 00:R=(x. 2) x ones (7, 1);A = Ry4)用MATLAB程序计算平均误差。算法实现代码如下:yl=l 1. 75 1.96 2. 19 2.44 2.71 3. 00;x=0 0.5 0.6 0.7 0.8 0.9 1.0;y=x. 星+x+l;z=(y-yl). 2sum(z)5)作出拟合曲线和数据图形(图2) o6)用MATLAB的内部函数polyfit求解上面最小二乘法曲线拟合多项式的系数及平方误差。算法实现代码如下:x=0 0.5 0.6 0.7 0.8 0.9 1.0;y=l 1.75 1.96 2. 19 2.44 2.71 3. 00:A二polyfit (x, y, 2) ;%二次多形式拟合z=polyval(A, x);Ad=sum( (zy). 2)7) 绘制使用polyfit函数实现的拟合图形。(图3)五、程序流程图图5-1用最小二乘法求多项式拟合曲线流程图六、实验结果图5-2用polyfit函数求多项式拟合曲线流程图图6T表中数据的散点图图6-2.最小二乘法实现的拟合曲线第1问系数为A = 1. 00001. 00001.00002则多项式的方程为k二x + x + i| 平方误差和为ans =1. 9722e031图6-3. polyfit函数实现的拟合函数第2问系数为A = 1. 00001. 00001. 00002则多项式的方程为k二x + x + i|平方误差和为ans = 1.9722e-031七、实验结果分析编写程序用最小二乘法求拟合曲线的多项式的过程中,求出的数据和拟合函 数的平方误差很小,达到了很高的精度要求,以及通过散点求得的拟合曲线比较 光滑。而用MATLAB的内部函数求polyfit求解的曲线拟合多项式和平方误差与 程序求得的相同,还有就是虽然求解过程简单了,但用MATLAB的内部函数做出 的图形由明显的尖点,不够光滑。此次实验数据较少,而且数据基本都是可靠数据。但是在应用实际问题中, 数据会很庞杂,此时对于最小为乘法的算法就需要进一步的细化。例如在进行数 据采集时,由于数据采集器(各种传感器)或机器自身的原因及其外部各种因素 的制约,导致数据偶尔会有大幅度的波动,及产生一些偏差极大的数据,不能真 实反映数据的可靠性,所以会对数据进行筛选或修正。而此时就可应用曲线拟合 的最小二乘法的进行处理。八、实验心得体会在日常的学习和生活中,我们可能会遇到各种方面的跟数据有关的问题,并 不是所有的数据都是有用,必须对数据进行适当的处理,然后找出数据之间的关 系,然后进行分析得出结果。此次实验结果基本没有大的区别,可是MATLAB提 供给我们一个特别简洁的办法,应用一个函数即可实现相同的结果。虽然很方便, 但是对于初学者来说,我觉得打好基础才是关键,对于一个知识点,应该掌握其 最基本的原理,然后在将它应用于实际。通过这个实验我也理解到了,数值分析是一个工具学科,它教给了我们分析 和解决数值计算问题得方法,使我从中得到很多关于算法的思想,从中受益匪浅。附录:源代码散点图:x=0 0. 5 0. 6 0. 7 0. 8 0. 9 1.0;y=l 1. 75 1. 96 2. 19 2. 44 2. 71 3. 00;plot (x, y, r*) titleC实验数据点的散点图); legend C 数据点(xi, yi );xlable ( x);ylable(,y);最小二乘拟合:x=0 0. 5 0. 6 0. 7 0. 8 0. 9 1.0;y=l 1. 75 1. 96 2. 19 2. 44 2. 71 3. 00;R=(x. 2Y x ones (7, 1);A = Ryxl=0 0. 5 0. 6 0. 7 0. 8 0. 9 1.0;yl=l 1.75 1.96 2. 19 2.44 2. 71 3. 00;x=0 0. 5 0. 6 0. 7 0. 8 0. 9 1.0;y=x. 2+x+l;plot (xl, yl, k+ , x, y, r)titleC实验数据点的散点图及拟合曲线);z=(y-yl). 2;sum(z)Polyfit函数拟合:x=0 0. 5 0. 6 0. 7 0. 8 0. 9 1.0; y=l 1. 75 1. 96 2. 19 2. 44 2. 71 3. 00;A二polyfit (x, y, 2) ;%二次多形式拟合 z=polyval(A, x);Ad=sum( (z-y). 2)plot (x, y, k+)titleC实验数据点的散点图及拟合曲线);hold onplot (x, z, r)
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号