数值分析作业-曲线拟合的最小二乘法

  • 格式:docx
  • 大小:83.38 KB
  • 文档页数:6

下载文档原格式

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

《数值分析》实验报告课题八:曲线拟合的最小二乘法

姓名:

学号:

专业:

学院:

一、实验课题:曲线拟合的最小二乘法

从随机的数据中找出其规律性,给出其近似表达式的问题,在生产实践和科学实验中大量存在,通常利用数据的最小二乘法求得拟合曲线。

在某冶炼过程中,根据统计数据的含碳量与时间关系,试求含碳量与时间t的拟合曲线。

二、理论意义和实用价值。

如果已知函数f(x)在若干点xi(i=1,2,…,n)处的值y

i

,便可根据插值原理来建立插值多项式作为f(x)的近似。但在科学实验和生产实践中,往往会遇到这样一种情况,即节点上的函数值并不是很精确的,这些函数值是由实验或观测得到的数据,不可避免地带有测量误差,如果要求所得的近似函数曲线精确无误

地通过所有的点(x

i ,y

i

),就会使曲线保留着一些测试误差。当个别数据的误差较

大时,插值效果显然是不理想的。此外,由实验或观测提供的数据个数往往很多,如果用插值法,势必得到次数较高的插值多项式,这样计算起来很烦琐。

所以我们设想:在大量的随机数据X(X

1、X

2

、X

3……

X

n)

与Y(y

1、

y

2、……

y

n),

从看

似无规律的这两组离散数据中,找到一条一条曲线Y=F(x),使数据点均在离此曲线的上方或下方不远处,它既能反映数据的总体分布,又不至于出现局部较大的波动,更能反映被逼近函数的特性,使求得的逼近函数与已知函数从总体上来说其偏差按某种方法度量达到最小,这就是曲线拟合最小二乘法。在对给出的实验(或观测)数据作曲线拟合时,一般希望各实验(或观测)数据与拟合曲线的偏差的平方和最小,这就是最小二乘原理。

曲线拟合不要求曲线通过所有已知点,而是要求得到的近似函数能反映数据的基本关系。此外,由于实验或观测提供的数据个数往往很多,如果用插值法,势必得到次数较高的插值多项式,这样计算起来很麻烦,缺乏实用价值,所以从某些意义上来说,在解决实际问题的过程中,曲线拟合更具有实用价值。三、计算过程

将给定数据作散点图,始图所示,选择形如S

1(X)=a

1

(x)+a

2

(x2)+a

3

(x3)作为拟

合曲线,这里∅ x =span(1,x,x 2,x 3)

根据以上公式求出:a 0=0.000 a 1=-0.0052 ,a 2=0.2634 a 3=0.0178

所求的拟合曲线为S 1(X)=-0.0052X+0.2634x 2+0.0178x 3

若取S 2(X)=a0+a 1(x)+a 2(x 2)

求出a 0=-0.0024 a 1=0.2037 ,a 2=0.2305 所求的S 2(X)=-0.0024+0.2037x+0.2305x 2

正交函数族,则是,设n n b a C b a C x f ϕϕϕϕ,, ],[},,{span ],,[)(00 ⊂=Φ∈⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣

⎡=⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎣⎡⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡),(),(),( ),(),()

,(10**1*

01100n n n n f f f a a a ϕϕϕϕϕϕϕϕϕ

(4.9) .)(||||),()()( (4.8) ),,/(),( 002

2***∑∑=====n k n

k k k k k k n k k k k x f x a x s f a ϕϕϕϕϕϕϕ .||||),(||||),||||),((),())(),()((||)()(|| ||)(|| 2

12

10222

2

20222

/1*2

*2

⎪⎪⎭

⎫ ⎝

⎛-=⎪⎪⎭⎫ ⎝⎛-=-=-=∑∑==n

k k k n

k k k k n

n

n

f f f f f f x f x s x f x s x f x ϕϕϕϕϕδ均方误差

四、曲线拟合图

五、结构程序设计

x=0:5:55

y=[0 1.27 2.16 2.86 3.44 3.87 4.15 4.37 4.51 4.58 4.02 4.64];

xnum=length(x);

plot(x,y,'o'),hold on;

pi=polyfit(x,y,3)

pj=polyfit(x,y,2)

newx=0:0.1:55;

newyi=polyval(pi,newx);

newyj=polyval(pj,newx);

yi=polyval(pi,x)

yj=polyval(pj,x)

erri=yi-y

errj=yj-y

plot(x,erri,'.r'),hold on;

plot(x,errj,'*b'),hold on;

S_erri=sum(erri.^2)

S_errj=sum(errj.^2)

plot(newx,newyi,'r',newx,newyj,'b'),grid off,hold off;

x =

0 5 10 15 20 25 30 35 40 45 50 55

pi =

0.0000 -0.0052 0.2634 0.0178

pj =

-0.0024 0.2037 0.2305

yi =

Columns 1 through 8

0.0178 1.2087 2.1646 2.9113 3.4745 3.8800 4.1536 4.3211 Columns 9 through 12

4.4082 4.4407 4.4444 4.4450

yj =

Columns 1 through 8

0.2305 1.1894 2.0293 2.7502 3.3521 3.8349 4.1987 4.4435 Columns 9 through 12

4.5693 4.5760 4.4637 4.2324

erri =

Columns 1 through 8

0.0178 -0.0613 0.0046 0.0513 0.0345 0.0100 0.0036 -0.0489 Columns 9 through 12

-0.1018 -0.1393 0.4244 -0.1950

errj =