第四讲数据分析方法

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

第四讲 数据分析方法

第一节、数据拟合

问题:给定一批数据点(输入变量与输出变量的数据),需确定满足特定要求的曲线或 曲面。如果输入变量和输出变量都只有一个,则属于一元函数的拟合和插值;而若输入变量 有多个,则为多元函数的拟合和插值(有点回归分析的意思)

解决方案: (1) 若要求所求曲线(面)通过所给所有数据点,就是插值问题;

(2) 若不要求曲线(面)通过所有数据点,而是要求它反映对象整体的变化趋势,这就

是数据拟合,又称曲线拟合或曲面拟合。 注意:插值和拟合都是要根据一组数据构造一个函数作为近似,由于近似的要求不同, 二者的数学方法上是完全不同的。而面对一个实际问题,究竟应该用插值还是拟合,有时 容易确定,有时则并不明显。

例 1:下面数据是某次实验所得,希望得到 X 和 f 之间的关系? x f

1 2 4 7 9 12 13 15 17 1.5

3.9

6.6

11.7

15.6

18.8

19.6

20.6

21.1

曲线拟合问题最常用的解法——最小二乘法的基本思路

第一步:确定拟合的函数类型 y f (x ;a 1,a 2,",a m ),其中a 1,a 2,",a m 为待定系数。 (函数类型的确定可以根据内在的规律确定,如果无现成的规则,则可以通过散点图,联系 曲线的形状进行分析)

第二步:确定a 1,a 2,",a m 的最小二乘准则:要求n 个已知点(x i , y i )与曲线 y f (x ) n

的距离d i 的平方和 (y i f x 2 最小 。

( )) i i 1 用 MATLAB 作拟合

1.多项式拟合。作多项式 y a 0x

m

a 1x m 1 "a m 拟合,可利用

a=polyfit(x,y,m)—其中 x,y 为给出的数据,m 为多项式的次数。

多项式在 x 处的值 y 可用以下命令计算: y=polyval (a,x )

2.用 MATLAB 作非线性最小二乘拟合

Matlab 的提供了两个求非线性最小二乘拟合的函数:lsqcurvefit 和 lsqnonlin 。两个命令 都要先建立 M-文件 fun.m ,在其中定义函数 f(x)。 (1)x = lsqcurvefit (‘fun’,x0,x‚ata,y‚ata);

(2)x =lsqcurvefit (‘fun’,x0,x‚ata,y‚ata,options);

(3)x = ls qcurvefit (‘fun’,x0,x‚ata,y‚ata,options,’‛ra‚’); (4)“x, options” = lsqcurvefit (‘fun’,x0,x‚ata,y‚ata,…);

(5)“x, options,funval” = lsqcurvefit (‘fun’,x0,x‚ata,y‚ata,…);

(6)“x, options,funval, ‟acob” = lsqcurvefit (‘fun’,x0,x‚ata,y‚ata,…);

(7)x=lsqnonlin(‘fun’,x0);

(8)x= lsqnonlin (‘fun’,x0,options);

(9)x= lsqnonlin (‘fun’,x0,options,‘‛ra‚’);

(10)[x,options]= lsqnonlin (‘fun’,x0,…);

(11)[x,options,funval]= lsqnonlin (‘fun’,x0,…);

在使用lsqcurvefit与lsqnonlin命令时,共同的问题是要先知道函数的类型,而拟合其实是决定函数中的待定系数。

第二节插值

插值的基本问题:给出n个数对,(P i, f (P i)),i 1,2,",n,求点P处对应的函数值f (P)。

一、一维插值

已知n 1个节点(x i, y i ),i 0,1,",n,求任意点*处的函数值*。常用的插值方法

x y

有拉格朗日多项式插值、牛顿插值、分段线性插值、Hermite插值和三次样条插值。

分段线性插值:将各数据点用折线连接起来

多项式插值:求一个多项式通过所有数据点,可以假设出多项式的系数,最后通过

求解方程得到每个系数(拉格朗日插值,用n次多项式描述n 1个点)

样条插值:分段多项式的光滑连接(三次样条插值)

牛顿插值:利用节点之间的各阶差商和差分构造多项式

Hermite插值:对插值函数,不仅要求它在节点处与函数同值,而且要求它与函数有相同的一阶、二阶甚至更高阶的导数值

(1)MATLAB命令:y=interp1(x0,y0,x,'method')

method指定插值的方法,默认为线性插值。其值可为:

'nearest' 最近项插值

'linear' 'spline' 'cubic' 线性插值

立方样条插值立方插值。

所有的插值方法要求x0是单调的。

当x0为等距时可以用快速插值法,使用快速插值法的格式为'*nearest'、'*linear'、'*spline'、'*cubic'。

(2)三次样条插值在Matlab中的实现

在Matlab中数据点称之为断点。如果三次样条插值没有边界条件,最常用的方法,就

是采用非扭结(not-a-knot)条件。这个条件强迫第1个和第2个三次多项式的三阶导数相

等。对最后一个和倒数第2个三次多项式也做同样地处理。

Matlab中三次样条插值也有现成的函数:

y=interp1(x0,y0,x,'spline');

y=spline(x0,y0,x);

pp=csape(x0,y0,conds),

pp=csape(x0,y0,conds,valconds),y=ppval(pp,x)。

其中x0,y0是已知数据点,x是插值点,y是插值点的函数值。

对于三次样条插值,我们提倡使用函数csape,csape的返回值是pp形式,要求插值点

相关文档
最新文档