实验题目用正交多项式做小二乘曲线拟合.docx

上传人:b****7 文档编号:26105687 上传时间:2023-06-17 格式:DOCX 页数:17 大小:97.40KB
下载 相关 举报
实验题目用正交多项式做小二乘曲线拟合.docx_第1页
第1页 / 共17页
实验题目用正交多项式做小二乘曲线拟合.docx_第2页
第2页 / 共17页
实验题目用正交多项式做小二乘曲线拟合.docx_第3页
第3页 / 共17页
实验题目用正交多项式做小二乘曲线拟合.docx_第4页
第4页 / 共17页
实验题目用正交多项式做小二乘曲线拟合.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

实验题目用正交多项式做小二乘曲线拟合.docx

《实验题目用正交多项式做小二乘曲线拟合.docx》由会员分享,可在线阅读,更多相关《实验题目用正交多项式做小二乘曲线拟合.docx(17页珍藏版)》请在冰豆网上搜索。

实验题目用正交多项式做小二乘曲线拟合.docx

实验题目用正交多项式做小二乘曲线拟合

实验题目:

用正交多项式做小二乘曲线拟合

学生组号:

_6_完成日期:

2011/11/27

1实验目的

针对给定数据的煤自燃监测数据中煤温与O2,之间的非线性关系,用正交多项式做最小二乘曲线拟合。

2实验步骤

2.1算法原理

设给定n+l个数据点:

(血,)[),k=0,l,・・・,ii,则根据这些节点作一个m次的最

小二乘拟合多项式化(x)=偽+卧+0才+・・・+6?

』”=工°/‘①

7=0

其中,—般远小于n.。

若要构造一组次数不超过m的在给定点上正交的多项式函数系{。

‘切(j=0,

1,...,m)},则可以首先利用{g(a)(j=0,1m)}作为基函数作最小二乘

曲线的拟合,即p(X)=Qo(x)+q^Q(x)+...+qQ(x)②根据②式,其中的系数q.(j=o,1,...,m)为

f儿0(儿)

j=0,1八・・,m

k=OJ

将④代入③后展开就成一般的多项式。

构造给定点上的正交多项式2(X)(j=0,

1m)的递推公式如下:

0。

(归

迄⑴弋-久)④

0+1(x)=(x~a)Ql(x)-p.(x),j=1,2,•••,用-1

其中

刃2

—k=0J

d,

m—1

ar

d广丈2(Q'j=0‘I,…’m—l

k=0J

则实际计算过程中,根据⑤式逐步求出个正交多项式Q\x),并用公式④计算出q,并将每次计算展开后累加到拟合多项式①中。

2.2算法步骤

用三个向量B,T,s,存放多项式0,T(x),0,3,2,+1W的系数。

(1)构造Qq(x),设°o(x)=bo,根据④式,得bo=1。

再根据⑦®⑤式,计算:

do=n+1

n

Sy,

~d7

k=O

a°~~d7

最后将^020W项展开后累加到拟合多项式中,则q°bo=a。

(2)构造Q(x),设Q(Q=/o+/\x,根据递推公式④,则可知,仏=一Q。

,t=

io由公式⑦③⑤⑥求得,

d产丈03)

20

tykQSxk)

k=0

 

 

最后将展开累加到拟合多项式①中,有

Qo+qi。

*a。

⑶对于j=2,3,逐步递推Q(x)

根据递推公式④有

0(X)=(X-%T)0鬥(X)-0鬥Q,-2(X)

=(X■図J(匚tx~'+…•+Ax+?

o>0j_AbH£2+•+bm+bo)

Qj(x)=SjX+Sj-lXJ+……+51X+So

则可以得到计算5;(k=O,l,…J)的公式:

S产-OCj-W卩厂\bik=j-2,….,2,1

然后分别根据⑦式③式⑤式与⑥式计算卜•列屋:

d广丈05)

q厂土几Q'xjdj

“=工尢3)0(竝)a

再将q,QSx)项展开后累加到拟合多项式①中,即有

ak+QjSk=>QjJ,…•丄°

QjSj^aj

最后,,为了便于循坏使用向量BT,与S,应将向量T传递给E,向量S传递送给T,即tk=>bk»k=j-l,…,1,0

mk=j,…,1,0

在实际计算中,为了防止运算溢出,将兀,用Xk~X来代替,其中

Jt=o

在这种情况下,拟合多项式的形式为

_2/w

pmM=a0+al(x-x)+a2(x—兀)+…+am(x—兀)

2.3程序流程图

灼卜二>

c=t/d2;p=g/d2;q=d2/dlL;

dl=d2;3[j]=c-s[j];1[J]=4jl;

d2+=q*qx-»-=v[i]*q;

2[k]4=c"(町;t>[k]=t[k];t[k]=s[k];

K=j-l;k>=O;k-

dt(O)=O.O;dt[l]=a.O;dt[2]=0.0

q=q*(x[i]-zl*s[k]

i=0;i

q=a[ml]

K=m-2;k>=0;k-

q=ak]+q*(xil-z);

p=q-vi'i;

3实验结果分析

温度数据:

51.1

52.8

54.8

57.258.3

62.7

65.2

67.7

70.673.575.77&6

80.8

84.8

87.8

89.592.1

96.4

103.1

112.5

120.8134.7

152.4159.1

氧气数据:

20.13

19.9

19.61

18.9819.61

19.32

19.73

19.5919.38

20.1819.9819.58

19.74

19.26

;19.5918.77

18.66

17.47

17.01

16.3315.95

13.765.915.43

氮气数据:

79.579.6779.5980.248080.3179.3580.180.3779.779.7880.15

8080.4680.0980.980.9982.0682.3383.0283.3184.8490.8593.96

实验结果:

1-

■正交多项式拟合

输出温度数据:

51.100000

52・800000

54.800000

5?

・200000

58・300000

62.700000

65.200000

67.700000

70.600000

73.500000

75.700000

78.600000

80.800000

84.800000

87.800000

89.500000

92.100000

96.400000

103.100000

112.500000

120.800000

输出氧气数据:

134.700000

152.400000

159.100000

20.130000

仅900000

19.610000

18・980000

19.610000

19.320000

19.730000

19.590000

19.380000

20.180000

19.980000

19.580000

19.740000

19.260000

19.590000

18.770000

18.660000

17.470000

17.010000

16.330000

15.950060

a<0>=19.060178a=-0.050815a<2>=-0.001271

13・760000

5.910000

5.430000

3>=-0.000010

dt=8.06955?

dt<1>=10.859434dt<2>=1.385219

输出氧气与温度拟合的正交多项式:

输岀温度数据:

51.100000

52.800000

54.800000

57.200000

58.300000

62.700000

65.200000

6?

・700000

70.600000

73.500000

75.700000

78.600000

80.800000

84.S00000

87.S00000

89.500000

92.100000

96・400000

103.100000

112.500000

120.800000

134・700000

152.400000

159.100000

输出氮气数据,

79.500000

79・670000

79.590000

80.240000

80・000000

80.310000

79.350000

80.130000

80.370000

79.700000

79.780000

80.150000

80・000000

80.460000

80・090000

80.900000

80.990000

82.060000

82.330000

83.020000

83.310008

a<0>=80.628611a<1)=0.038346

a<2>=0・000776

a<3>=0・0000丄6

84.840008

90.850008

93.960008

dtC0>=5.624939

dt<1>=9.117542dt<2>=1

.167073

输出氮气与温度拟合的正交多项式:

y=80.628611+C0.038346>*^l+<0.000?

76>*^2+*^3

Pressanykeytocontinue

注:

dt(0)为误差的平方和,dt⑴为误差的绝对值之和,dt

(2)误差绝对值最人值。

氧气与温度的拟合曲线:

20

*拟合点

——三次拟合-

18

16

14

12

10

8

6

440

60

80

氮气与温度的拟合曲线:

1

100

120

140

160

 

实验结论

这次实验我们的拟合曲线是选择三次拟合曲线,虽说更高次的拟合曲线可以达到更好的效果,但是由于在计算机计算的过程中舍入误差的存在,使得次数高的项系数为零。

由于数据是观测得来,而我们的误差最人不超过1.4,所以误差在允许范閑内,故从误差以及各方面的考虑,我们最终选择三次来拟合曲线。

为了能够达到视觉上的效果,我们在实验结果处附上了用matlab所拟合得到的曲线,从图中可以看出,随着温度的不断增加氧气的含屋在降低,且降低率随温度的增加而增加,但是对于氮气却是随着温度的增加而增加,且增加率随温度的增加而增加。

由于温度的不断增加,经过一定的化学变换,放出氮气,同时消耗氧气,而且在温度相对高时(在一定的温度范围内),其化学反应的速率快,这就是对上述结果的一个解释。

5问题归纳与总结

在本次试验中,组员在分析问题的过程中主要遇到了一下几方面的问题,下面一一表述并给出解决办法。

问题一:

0,分别Q,(x)之间的关系

解决办法:

观察公式,找出关系,将公式分解,分步求出分子分母,将分母用d广丈0(竝)

表示。

问题2:

Q(X)的迭代问题

解决办法:

分别用三个向量E,T,S分别存在0/t⑴,QSX),0鬥⑴的系数,用

tk=>brsk=>tr依次迭代

问题3:

系数拟合问题

解决办法:

将上一次正交多项式次数相等的对应系数加到卞一次的系数,

即:

久+乞$=>久,k=j-l,….,1,0

问题4:

Q(x)的算法

解决方法:

Q(Xk)是一个j次多项式,从j次到1次,递减乘x来增加次数,再加上

s[k].

Qj(兀)=(($/+$」+$』

Qj(兀)=((工X+5;-1X+Sj-2)x+57-3)

Qj(x)=SjX^Sj-,X'+……+S1X+So

问题5:

溢出问题

解决方法:

由于给定温度数据过犬,次数大时会出现溢出,所以采用平移思想用X-X

来表示X,图像不变。

参考文献

李庆扬,王能超,易大义.数值分析.北京:

清华大学岀版社.200S

附录(源代码)

#include"stdio.h"

#include”math.h"

doublespu(doublex[].doublev[].mtn.doublea[],iiitm.doubledt[])

intij,k;

doublez,p,c,g,q,d1,d2,s[20],t[20],b[20];for(i=0;i<=m-l;i++)//系数的初始化a[i]=0.0;

m=n;

if20)

m=20;

z=0.0;

for(i=0;i<=n-l;i++)

z=z+x[i]/(1.0*n);//温度平均值

b[0]=1.0y/Q0(x)多项式系数dl=1.0*n;

P=0.0;

c=0.0;

for(i=0;i<=n-l;i++)

p=p+(x[i]-z);c=c+v[i];

}

c=c/dl;

p=p/dl;

a[0]=c*b[0];

〃构造Ql(x)

t[l]=l・O;

t[O]=-p;

d2=0.0;

c=0.0;

g=0.0;

for(i=0;i<=n-l;i++)

{

q=x[i]-z-p;d2=d2+q*q;c=c+y[i]*q;

g=g+(x[i]-z)*q*q;

}c=c/d2;

p=g/d2;

q=d2/dl;

dl=d2;

a[l]=c*t[l];a[O]=c*t[O]+a[O];

}for(j=2j<=m-l;j++)〃构造Qj(x)

{

s[j]=t|j-l];s[j-l]=-p*t[j-l]4-t[j-2];珂>=3)

fbr(k=j-2;k>=l;k-)

s[k]=-p*t[k]+t[k-l]-q*b[k];

s[O]=-p*t[O]-q*b[O];d2=0.0;c=0.0;g=0.0;fbr(i=O;i<=n-l;i++)

{

q=s[j];

fbr(k=j-l;k>=O;k-)

q=q*(x[i]-z)+s[k];

d2=d2+q*q;c=c+y[i]*q;g=g+(x[i]-z)*q*q;

}

c=c/d2:

p=g/d2;q=d2/d1;

dl=d2;

a[j]=c*s[j];

fbr(k=j-l;k>=O;k-)

{

a[k]=c*s[k]+a[k];

b[k]=t[k];

t[k]=s[k];

}

〃计算误差的平方和、误差的绝对值之和与误差绝对值的最人值

dt[O]=O.O;

dt[l]=0.0;dt[2]=0.0;

fbr(i=O;i<=n-l;i++)

{

q=a[m-l];

for(k=m-2;k>=0;k-)

q=a[k]+q*(x[i]-z);

p=q-yW;

if(fabs(p)>dt[2])

dt[2]=fabs(p);

dt[O]=dt[O]+p*p;

dt[l]=dt[l]+fabs(p);

}

returnz;

}

voidmain()

{

inti;

doublea[8],dt[3],z;

doublex[24]={51.1,52.8,54.8,57.2,58.3,62.7,65.2,67.7,70.6,73.5,75.7,78.6,80.8//温度数据84・&87・8,89・乂92丄96・4」03丄112・5」20・&134・7,152・4,159・1};

doubleyl[24]={20.13J9.9J9.61J8.98,19.614932,19.73,19.59,1938,20.18,19.98//氧气数据

I9・58,19・74,19・26」9・59,18・77,18・66」7・47,17・0I」6・33」5・95,13・76,5・91,5・43};

doubley2[24]={79.5,79.67,79.59,80.24.80.80.31,79.35.80.13,80.37,79.7,79.78,80.15,80,80.46,80・09,80・9、80・99,82・06,82・33,83・02,83・31,84・84,90・85、93・96};//氮/[数据

pnntf("正交多项式拟合\n”);

pmitf(”输出温度数据:

\n”);

fbr(i=0;i<=23;i++)

pimtf("\n输出氧气数据:

\n”);

fbr(i=0;i<=23;i++)

z=spir(x,vl,24,a,4,dt);〃函数的调用来求拟合函数系数、误差

pnntf(H\nM);

for(i=0;i<=3;i-H-)

pnntf(H\nM);

for(i=0;i<=2;i-H-)

prmtf(ndt(%2d)=%lff\i,dt[i]);//误差的输出

pmitf(”输出氧气与温度拟合的正交多项式:

\n\n”);pnntf(Mp(x)=%lf\a[O]);

for(i=l;i<=3;i-H-)

pnntf(”+(%lf)*(x・%lf)A%d”Q[i],z,i);

pnntf(H\n\QM);

printf(”输出温度数据:

\n“);

for(i=0;i<=23;i++)

pimtf("\n输出氮气数据:

\n”);

for(i=0;i<=23;i++)

pnntff%lf\L,y2[i]);

z=spir(x,v2,24,a,4,dt);//函数的调用来求拟合函数系数、误差pnntf(H\nM);

for(i=0;i<=3;i-H-)pimtf("a(%2d)=%lfn",i,a[i])y/函数系数的输出pnntf(H\nM);

for(i=0;i<=2;i-H-)

prmtf("dt(%2d)=%lf”,i,dt[i]);〃误差的输出

pnntf(”输出氮气与温度拟合的正交多项式:

\n\n");piintf(Mv(x)=%lf\a[O]);

for(i=l;i<=3;i-H-)

pnntf(”+(%lf)*(x・%lf)A%d”Q[i],z,i);

pnntf(H\nM);

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1