曲线拟合实验报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

曲线拟合实验报告

Document serial number【UU89WT-UU98YT-UU8CB-UUUT-UUT108】

数值分析

课程设计报告

学生姓名

学生学号

所在班级

指导教师

一、课程设计名称

函数逼近与曲线拟合

二、课程设计目的及要求

实验目的:

⑴学会用最小二乘法求拟合数据的多项式,并应用算法于实际问题。

⑵学会基本的矩阵运算,注意点乘和叉乘的区别。

实验要求:

⑴编写程序用最小二乘法求拟合数据的多项式,并求平方误差,做出离散函数(x x,x x)和拟合函数的图形;

⑵用MATLAB的内部函数polyfit求解上面最小二乘法曲线拟合多项式的系数及平方误差,并用MATLAB的内部函数plot作出其图形,并与(1)结果进行比较。

三、课程设计中的算法描述

用最小二乘法多项式曲线拟合,根据给定的数据点,并不要求这条曲线精确的经过这些点,而是拟合曲线无限逼近离散点所形成的数据曲线。

误差向量的1

向量的2范数。前两种方法简单、自然,但不便于微分运算,后一种方法相当于考虑2范数的平方,此次采用第三种误差分析方案。 算法的具体推导过程: 1.设拟合多项式为:

y =x 0+x 1x +x 2x 1++x x x x

2.给点到这条曲线的距离之和,即偏差平方和:

x 2=∑[x x −(x 0+x 1x ++x x x x x )]2x

x =1

3.

x x 偏导数,因而我们得到了:

−2∑[x −(x 0+x 1x ++x x x x x )]x

x =1

x =0

−2∑[x −(x 0+x 1x ++x x x x x )]x

x =1

=0

−2∑[x −(x 0+x 1x ++x x x x x )]x x x

x =1

=0

4.将等式左边进行一次简化,然后应该可以得到下面的等式

x 0x +x 1∑x x ++x x ∑x x x x x =1x x =1

x 0∑x x +x 1∑x x 2++∑x x x +1x x =1

x x =1x x =1

x 0∑x x x +x 1∑x x x +1++x x ∑x x

2x x x =1

x x =1

x x =1

5.把这些等式表示成矩阵的形式,就可以得到下面的矩阵:

6. 将这个范德蒙得矩阵化简后得到

7.计算得到系数矩阵,同时就得到了拟合曲线。

四、课程设计内容 ⑴实验环境:MATLAB2010

⑵实验内容:给定的数据点(x x ,x x )

1) 用最小二乘法求拟合数据的多项式; 2) 用MATLAB 内部函数polyfit 函数进行拟合。

⑶实验步骤

1)首先根据表格中给定的数据,用MATLAB 软件画出数据的散点图(图1)。

2)观察散点图的变化趋势,近似于二次函数。则用二次多项式进行拟合,取一组基函数x0,x1,x2,并令f(x)=x1x2+x2x+x3,其中

x x是待定系数(k=1,2,3)。

3)用MATLAB程序作线性最小二乘法的多项式拟合,求待定系数。

算法实现代码如下:

x=[0 ];

y=[1 ];

R=[(x.^2)' x' ones(7,1)];

A=R\y'

4)用MATLAB程序计算平均误差。

算法实现代码如下:

y1=[1 ];

x=[0 ];

y=x.^2+x+1;

z=(y-y1).^2;

sum(z)

5)作出拟合曲线和数据图形(图2)。

6)用MATLAB的内部函数polyfit求解上面最小二乘法曲线拟合多项式的系数及平方误差。

算法实现代码如下:

x=[0 ];

y=[1 ];

A=polyfit(x,y,2);%二次多形式拟合%

z=polyval(A,x);

A

d=sum((z-y).^2)

7)绘制使用polyfit函数实现的拟合图形。(图3)

五、程序流程图

图5-1 用最小二乘法求多项式拟合曲线流程图

图5-2 用polyfit函数求多项式拟合曲线流程图六、实验结果

图6-1 表中数据的散点图

图6-2. 最小二乘法实现的拟合曲线第1问

系数为

A =

则多项式的方程为y=x2+x+1

平方误差和为

ans =

图6-3. polyfit函数实现的拟合函数

第2问

系数为

A =

则多项式的方程为y=x2+x+1

平方误差和为

ans =

七、实验结果分析

编写程序用最小二乘法求拟合曲线的多项式的过程中,求出的数据和拟合函数的平方误差很小,达到了很高的精度要求,以及通过散点求得的拟合曲线比较光滑。而用MATLAB的内部函数求polyfit求解的曲线

拟合多项式和平方误差与程序求得的相同,还有就是虽然求解过程简单了,但用MATLAB的内部函数做出的图形由明显的尖点,不够光滑。

此次实验数据较少,而且数据基本都是可靠数据。但是在应用实际问题中,数据会很庞杂,此时对于最小为乘法的算法就需要进一步的细化。例如在进行数据采集时,由于数据采集器(各种传感器)或机器自身的原因及其外部各种因素的制约,导致数据偶尔会有大幅度的波动,及产生一些偏差极大的数据,不能真实反映数据的可靠性,所以会对数据进行筛选或修正。而此时就可应用曲线拟合的最小二乘法的进行处理。

八、实验心得体会

在日常的学习和生活中,我们可能会遇到各种方面的跟数据有关的问题,并不是所有的数据都是有用,必须对数据进行适当的处理,然后找出数据之间的关系,然后进行分析得出结果。此次实验结果基本没有大的区别,可是MATLAB提供给我们一个特别简洁的办法,应用一个函数即可实现相同的结果。虽然很方便,但是对于初学者来说,我觉得打好基础才是关键,对于一个知识点,应该掌握其最基本的原理,然后在将它应用于实际。

通过这个实验我也理解到了,数值分析是一个工具学科,它教给了我们分析和解决数值计算问题得方法,使我从中得到很多关于算法的思想,从中受益匪浅。

相关文档
最新文档