在Matlab中数值拟合的应用

2019-02-26 11:28

在Matlab中数值拟合的应用

摘要

在科学实验和生产实践中,往往需要从一组实验数据(xi,yi)(i?1,2,...n)中,寻找变量x和y之间的函数关系y?f(x)的某种近似表达式s(x)。而实际去只能通过观测得到一些离散的数据点。针对这些分散的数据点,运用某种你和方法生成一条连续的曲线,这个过程称为曲线拟合。插值方法可以构造一个插值函数逼近已知函数你,但是,一般来说,给定的实验数据(xi,yi)(i?1,2,...n)的数量较大,且由于观测误差的原因,准确度不一定高,甚至在个别点有很大的误差,形象地成为“噪声”。如果用插值法来求y?f(x)的近似表达式,要使s(x)满足插值条件,势必将“噪声”带进近似函数s(x),因而不能较好地描绘y?f(x)。 面对着分散的数据点,运用某种你和方法生成一条连续的曲线,这个过程称为曲线拟合。插值法虽然是函数逼近的一种重要方法,但他还存在以下的缺陷:一是由于测量数据的往往不可避免地带有测试误差,而插值多项式又通过所有的

电容器充电电压与时间t的曲线109.598.587.576.56点(xi,yi),这样就使插值多项式保留了这些误差,从而影响了逼近精度。此时显然

插值效果是不理想的。二是如果由实验提供的数据较多,则必然得到次数较高的插值多项式,这样近似程度往往既不稳定又明显缺乏实用价值。因此,怎样从给定的一组实验数据出发,寻求已知函数的一个逼近函数s(x),使得逼近函数从总体上来说与已知函数的偏差按某种方法度量能

充电电压(V)012345时间t(s)6789达到最小而又不一定过全部的点(xi,yi),

这就需要介绍本论文主要研究的数据拟合。本文学习目的:

(1)熟悉、掌握数据拟合的各种不同准则,重点学习最小二乘准则; (2)提出、分析并掌握Matlab中各种常见的拟合方法; (3)熟悉掌握拟合工具的使用;

(4)能够灵活编程来解决数据拟合的实际问题 。

关键词:Matlab、数据拟合准则、一元线性拟合、非线性、图像、拟合工具

1 / 16

1、数据拟合概念

数据的拟合主要分为曲线拟合(curve fitting)、曲面拟合(suface fitting)。它试图从散点数据中拟合出一个有规律的解析式,而该解析式的某些参数(系数)是不定的未知量。数据拟合的目的是要根据散点数据在“最小误差”的意义下确定出解析式中的这些不定参数。正如对于一条直线y?kx?b,而该式中有k和b两个未知参数需要求出。由基本的数学知识我们可以知道,只要有两个点就可以确定出这两个参数。但是若有更多的点,比如实验数据往往有很多点,这些点由于有误差不一定在一条直线上,需要找出一条直线离这些点“最近”,这就是拟合。从上面的例子我们可以看出,拟合具有两个特点:

(1)点数(已知数据数目)即方程的个数要大于待求参数的个数; (2)方程所代表的曲线、曲面等不一定通过这些已知点。

对于不同的定义有着不同的数据拟合准则,最常见的数据拟合准则有三种,分别是切比雪夫近似准则、极大化绝对偏差之和准则和最小二乘准则。本文重点介绍最小二乘法准则。

数据拟合的方法主要有一元线性拟合、一元非线性拟合、多项式拟合、多元拟合及拟合工具拟合等。 2、基本拟合准则

2.1切比雪夫近似准则

对给出的y?f(x)和数据,极小化最大绝对偏差|yi?f(xi)|,即确定函数类型y?f(x)电脑参数从而极小化数量:Maxinum|yi?f(xi)|(i?1,2,...n) 切比雪夫近似准则在实际应用中通常很复杂,应用这一准则所产生的最优化问题通常可以表示为线性规划问题,这可能需要高级的数学方法或者用计算机的数值算法,所以通常不使用这一准则。 2.2极大化绝对偏差之和准则

同3.1,对给出的y?f(x)和数据,极大化最大绝对偏差|yi?f(xi)|的和,即确定函数类型y?f(x)电脑参数从而极小化数量:?|yi?f(xi)|

i?1n 由于这一准则有出现了绝对值,这个和式电脑各种微分不是连续的,要解决这个最优化问题时,将该和式对每个未知参数进行求异时,问题会变得不可解,因此该准则也不常用。 2.3最小二乘准则

同3.1、3.2使用相同记号,确定函数类型y?f(x)的参数,使得极小化和数?|yi?f(xi)|2

i?1n 用这方法解决产生的最优化问题仅需要使用几个变量的演算,所以容易普及,Matlab软件中提供的数据拟合方法也基本都是基于该准则的。

2 / 16

2、几种拟合方法

数据拟合根据自变量的个数以及选取的拟合函数的形式 ,可以分为一元线性拟拟合、一元非线性拟合、多元拟合及拟合工具箱使用等方法。

2.1一元线性拟合

2.1.1多项式拟合

多项式拟合是线性拟合中最常见的形式, 它的目标是找出一组多项式系数

ai(i?1,2,...n?1),使得多项式f(x)?a1xn?a2xn?1?...?anx?an?1能够在最小二乘

的意义下最好地拟合原始数据。

多项式拟合可以通过Matlab提供的polyfit()函数实现,调用格式为:

[p,s]=polyfit(x,y,n)

其中,x,y 是输入的实验数据,n 是拟合计算用到的多项式的次数,返回值p 是拟合多

项式的系数,S 是用来估计误差和预测数据的结构体。

与polyfit()函数配合使用的函数是polyval(),这个函数根据拟合出来的多项式系数p 计

算给定数据x 处的y 值。其调用格式如下:

Y=polyval(p,X)

其中X 是给定的需要计算拟合值的向量,p 是polyfit()函数的返回值,返回值Y 是根据p计算出来的X 处的多项式的值。 例1.

给定的多项y?x3?6x2?6x?3和自变量x=1:10,代入产生一组数据

y, 现在xi=x+0.2*rand(1,10)-0.1, yi =y+0.5- rand (1,10) ,i=1,2,?,10), 然后用xi和yi作3次多项式拟合,与原系数比较。注意作图并说明。 x=1:10;

得到结果为:

f3 = 0.9645 -5.4289 3.4571 -0.4339

3 / 16

y=x.^3-6*x.^2+6*x-3; x0=x+0.2*rand(1,10)-0.1; y0=y+0.5- rand;

f3=polyfit(x0,y0,3)%3次多项式拟合 y3=polyval(f3,x0); plot(x,y,'+',x0,y3); grid on

title('三次拟合曲线');

拟合图像为:

可发现加入随机“噪声”后用三次拟合,发现拟合效果还是相当好。故结果可用。

2.1.1已知函数线性组合的拟合方法

实际上,多项式函数的每一项的都可以被看做是一个函数,而多项式函数就是这些函数的线性组合。对于更一般的情形,假设已知某函数的线性组合为:

f(x)?c1f1(x)?c2f2(x)?c3f3(x)?...?cnfn(x)

其中,f1(x),f2(x),?,fn(x)为已知函数,c1,c2,?cn为待定系数,这时如给出数据(xi,yi)(i?1,2,...n),则可以建立方程:Ac?y

?f1(x1)?f(x) A??12?...??f1(xn)Tf2(x1)...f2(x2).........f2(xn)...fn(x1)??y1??y?fn(x2)??,y??2? ?...?...????fn(xn)??yn? 且c??c1,c2,...cn?,故该方程的最小乘解为c?A/y。

4 / 16

例2.已知一室模型快速静脉注射下的血药浓度数据(t=0注射300mg)

kt问题:求血药浓度随时间的变化规律c(t).c(t)?c0e?(c,k为待定系数)

解:建立M文件并命名为fun.m

function f=fun(x,tdata)

f=x(1)*exp(-x(2)*tdata);

在Command Window中输入:

tdata=[0.25,0.5,1,1.5,2,3,4,6,8];

cdata=[19.21,18.15,15.36,14.10,12.89,9.32,7.45,5.24,3.01];

x0=[0.2,0.05];

x=lsqcurvefit('fun',x0,tdata,cdata);

f=fun(x,tdata); x

plot(tdata,cdata,'ro',tdata,f,'b*-')

得到结果为:

x =20.2413 0.2420

得到拟合图像为:

可见拟合效果不错,可以使用,所以方程为:c(t)?20.2413e?0.2420t 2.2一元非线性拟合

在实际的问题场景中,如果我们已知的函数形式为y(x)?aebx这样在幂指数上带有未知数的其他形式,简单的线性求解就无能为力了。通常这种情况下,我

5 / 16


在Matlab中数值拟合的应用.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:生物多样性保护优先区域

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: