数值计算方法教案_曲线拟合与函数逼近

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

第三章 曲线拟合与函数逼近

一.曲线拟合 1.问题提出:

已知多组数据(),,1,2,

,i i x y i N =,由此预测函数()y f x =的表达式。

数据特点:(1)点数较多。(2)所给数据存在误差。

解决方法:构造一条曲线反映所给数据点的变化总趋势,即所谓的“曲线拟合”。 2.直线拟合的概念 设直线方程为y=a+bx 。

则残差为:ˆi i i e y y

=-,1,2,,i N =,其中ˆi i y

a bx =+。 残差i e 是衡量拟合好坏的重要标志。 可以用MATLAB 软件绘制残差的概念。 x=1:6;

y=[3,4.5,8,10,16,20];

p=polyfit(x,y,1); xi=0:0.01:7; yi=polyval(p,xi); plot(xi,yi,x,y, 'o'); y1=polyval(p,x); hold on for i=1:6

plot([i,i],[y(i),y1(i)], 'r');

end

可以绘制出如下图形:

三个准则: (1)max i e 最小 (2)1n

i i e =∑最小

(3)21

N i i e =∑最小

3.最小二乘法的直线拟合

问题:对于给定的数据点(),,1,2,,i i x y i N =,求一次多项式y=a+bx ,使得总误差Q 最

小。其中()2

21

1

N

N

i i i i i Q e y a bx ====-+⎡⎤⎣⎦∑∑。根据

0,0.Q Q

a b

∂∂==∂∂ 2222

1

222N

i i i i i i i Q y a b x y a y x b x ab =⎡⎤=++--+⎣⎦∑

[]()1

2222N

i i i i i Q a y x b Na y b x a =∂=-+=-+∂∑∑∑ ()221

2222N

i i i i i i i i i Q bx y x x a b x x y a x b =∂⎡⎤=-+=-+⎣⎦∂∑∑∑∑ 故有以下方程组(正则方程):

2

i i

i

i i i aN b x y a x b x x y ⎧+=⎪⎨+=⎪⎩∑∑∑∑∑ 例1.给定数据表,求最小二乘拟合一次多项式

解:N=5,5

1

i i x =∑=702,5

1

i i y =∑=758,5

2

1

i i x =∑=99864,5

1

i i i x y =∑=108396。

则有方程组

570275870299864108396a b b b +=⎧

+=⎩

解得a=-60.9392,b=1.5138,则一次多项式为y=-60.9392+1.5138b 用MATLAB 计算并画图如下: x=[165,123,150,123,141]; y=[187,126,172,125,148];

A(1,1)=5;A(1,2)=sum(x);A(1,3)=sum(y); A(2,1)=sum(x);A(2,2)=sum(x.^2);A(2,3)=x*y'; B=rref(A); a=B(1,3);b=B(2,3); p=[b,a];

%以上四行,可以用一行命令 p=polyfit(x,y,1); 替代。 xi=min(x)-1:0.01:max(x)+1; yi=polyval(p,xi); plot(xi,yi,x,y, 'o'); 绘制如下图形

4.最小二乘法的多项式拟合

问题:对于给定的数据点(),,1,2,

,i i x y i N =,求m 次多项式0

m

j j j y a x ==∑(m<

,使得总误差Q 最小。其中2

2

110N

N

m j i i j i i i j Q e y a x ===⎛⎫==- ⎪⎝⎭

∑∑∑。根据0,0,1,,k Q k m a ∂==∂

1020N

m j k i j i i i j y a x x ==⎛⎫

--= ⎪⎝⎭∑∑ 故有正则方程:

011m

N N

j k k j i i i j i i a x y x +===⎛⎫= ⎪⎝⎭∑∑∑ 当m=2时,有

201223

0122342012i i i i i i i i i

i i i i a N a x a x y a x a x a x y x a x a x a x y x ⎧++=⎪++=⎨⎪++=⎩∑∑∑∑∑∑∑∑∑∑∑

例2.求数据表的最小二乘法拟合的二次多项式函数

在MATLAB命令窗口输入:

x=-1:0.25:1;

y=[50,40,25,20,18,21,35,56,66];

A(1,1)=length(x);A(1,2)=sum(x);A(1,3)=sum(x.^2);A(1,4)=sum(y);

A(2,1)=sum(x);A(2,2)=sum(x.^2);A(2,3)=sum(x.^3);A(2,4)=y*x';

A(3,1)=sum(x.^2);A(3,2)=sum(x.^3);A(3,3)=sum(x.^4);A(3,4)=y*(x.^2)'; B=rref(A);

p=[B(3,4),B(2,4),B(1,4)];

%以上五行可以用p=polyfit(x,y,2); 替代

xi=min(x)-0.1:0.01:max(x)+0.1;

yi=polyval(p,xi);

plot(xi,yi,x,y, 'o');

可以绘制出如下图形:

相关文档
最新文档