插值多项式系数求解

上传人:飞*** 文档编号:51577046 上传时间:2018-08-15 格式:PDF 页数:7 大小:130.77KB
返回 下载 相关 举报
插值多项式系数求解_第1页
第1页 / 共7页
插值多项式系数求解_第2页
第2页 / 共7页
插值多项式系数求解_第3页
第3页 / 共7页
插值多项式系数求解_第4页
第4页 / 共7页
插值多项式系数求解_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《插值多项式系数求解》由会员分享,可在线阅读,更多相关《插值多项式系数求解(7页珍藏版)》请在金锄头文库上搜索。

1、插值多 项式系数求解nii in nxaxaxaxaxaxaaxfy04 43 32 210)(根据给定的数据样本可以计算上述式中的系数ia,很明显,如果要计算n阶插值多项式的系数则需要1n个数据样本,将样本数据代入并写成矩阵形式,可以得到:nnn nnnnnnnnnnyyyyyyaaaaaaxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx432104321043244 43 42 4434 33 32 3324 23 22 2214 13 12 1104 03 02 00111111上述矩阵构成了一个以ia为未知数的线性方程组,由线性代数知识可知其系数矩阵是范德蒙矩阵,由于其行列

2、式非零,所以上述方程一定有解且有唯一解。求解上述方程组可以使用通用的线性方程组解法,如选主元消去法等。但由于其系数矩阵的特殊性,可以找到更简单的求解方法。考虑拉格朗日插值基函数(参见计算方法易大义,1989,P36))()()()()()()(11101110nkkkkkkknkk kxxxxxxxxxxxxxxxxxxxxxl上式展开后是关于x的n阶(分子部分共n项,缺kxx)多项式,即nii kin knkkkkkkxcxcxcxcxcxccxl04 43 32 210)(并且由分式形式可以注意到)(xlk的取值特点,当kxx时为 1,当ixx且ki时,因为分子部分必有一项为0,所以)(x

3、lk的值为 0,即kikixlik01)(将x依次取nixi,2 , 1 ,0,并写成向量相乘的形式,则有001001111111044 144 14 033 133 13 022 122 12 011043210n nn kn kn knnkkknkkknkkknkkkknkkkkkxxxxxxxxxxxxxxxxxxxxxxxxxcccccc如果关于k从 0 到n将)(xlk全部列出并与上式中的方阵相乘可以得到1000000100000010000001000000100000011111111044 144 14 033 133 13 022 122 12 011043210444131

4、2414033433323130224232221201141312111000403020100n nn kn kn knnkkknkkknkkknkkknnnnnnnnnnnnxxxxxxxxxxxxxxxxxxxxxxxxxcccccccccccccccccccccccccccccccccccc上式说明等式左边两个矩阵是互逆阵,即n nn kn kn knnkkknkkknkkknkkknnnnnnnnnnnnxxxxxxxxxxxxxxxxxxxxxxxxxcccccccccccccccccccccccccccccccccccc11044 144 14 033 133 13 022 1

5、22 12 0110143210444131241403343332313022423222120114131211100040302010011111根据转置矩阵的逆等于逆矩阵的转置可以得到TnnnnnnnnnnnnTn nn kn kn knnkkknkkknkkknkkkccccccccccccccccccccccccccccccccccccxxxxxxxxxxxxxxxxxxxxxxxxx432104441312414033433323130224232221201141312111000403020100111044 144 14 033 133 13 022 122 12 0110

6、11111即Tnnnnnnnnnnnnn nnnnnnnnnnccccccccccccccccccccccccccccccccccccxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx432104441312414033433323130224232221201141312111000403020100143244 43 42 4434 33 32 3324 23 22 2214 13 12 1104 03 02 00111111则由nn nnnnnnnnnnnyyyyyyxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxaaaaaa43210143244 43 42 44

7、34 33 32 3324 23 22 2214 13 12 1104 03 02 0043210111111可得nTnnnnnnnnnnnnnyyyyyyccccccccccccccccccccccccccccccccccccaaaaaa4321043210444131241403343332313022423222120114131211100040302010043210下面需要解决的问题是建立kic的计算公式,重新观察拉格朗日插值基函数)()()()()()()(11101110nkkkkkkknkk kxxxxxxxxxxxxxxxxxxxxxl可见,对于任意一个k值,由于分母部分固

8、定不变,因此要得到kic的计算公式需要计算分子部分展开后的系数,即n nnkkxxxxxxxxxxxxx2 2101110)()()(下面推导的i计算公式, 为了便于计算, 将ix前的负号与看成一个整体,即将样本自变量取相反数,这样求解上式中的系数i就变成了求解下式中的系数i的问题了,可以看到系数都是由ix的乘积及求和得到,而计算中不需再考虑n) 1(引起的问题了,n nnkkxxxxxxxxxxxxx2 2101110)()()(当不考虑缺少)(kxx这一项的情况下,i与nixi, 2, 1 , 0,的关系由下表可得)(0xx)(1xx)(2xx)(3xx)(mxxia, 00x10xx21

9、0xxx3210xxxxmmxa, 0ia, 11 101 xx21010)(xxxxx321010210)(xxxxxxxxxmmmxaa1, 11,0ia,20 1 210 1 xxx321021010 )()(xxxxxxxxxmmmxaa1, 21, 1ia,30 0 1 3210 1 xxxxmmmxaa1, 31, 2ia,40 0 0 1 mmmxaa1, 41, 3ila,0 0 0 0 mmlmlxaa1,1,1上面规律说明,每多一项)(ixx,多项式阶数增加一阶,增加一个系数l,因此可以采用累乘的形式逐次各系数il ,,下面需要解决的是第增加一项)(ixx,各系数il,如何

10、计算。为解决这个问题,以 5 阶多项式中的二阶系数2的计算过程为例进行观察,它应该是4, 3 ,2 , 1 , 0,ixi中的任意三项乘积相加,从)(0xx乘上)(1xx开始存在2且12,再乘上)(2xx,2由两部分之和组成,一部分是没乘)(2xx前的二阶系数与2x乘积构成,因为原为二阶乘上常数仍为二阶,另一部分是没乘)(2xx前的一阶系数,因为它们乘上)(2xx中的x后都成为二阶,两部分之和是2, 1 , 0,ixi中三项相加;再乘上)(3xx,2仍由两部分之和组成,一部分是没乘)(3xx以前的二阶系数与3x的乘积,另一部分是没乘)(3xx前的一阶系数,两部分相加是3 , 2, 1 , 0,

11、ixi中任意两项相乘后求和;再乘上)(4xx,2仍由两部分之和组成,一部分是没乘)(4xx以前的二阶系数与4x的乘积,另一部分是没乘)(4xx前的一阶系数,两部分相加是4 ,3 ,2 , 1 , 0,ixi中任意三项相乘后求和,即为最终结果。概括来说,n阶基函数分子多项式中的k阶系数是由kn个1, 1 , 0,nixi组合后乘积再相加得到,如果从)(0xx开始逐次乘上1,2, 1),(nixxi来计算,在乘)(mxx时,此时系数由km1个mixi, 1 , 0,组合后乘积再相加得到,计算由两部分组成,第一部分是前1m项中km1个1, 1 , 0,mixi组合后乘积再相加,另一部分则是前1m项中

12、km个ix组合后乘积再相加后,该项乘上新加入的mx就是km1个ix相乘了。前一部分正好是乘上)(mxx之前的1k阶系数,因为1k阶系数由km个1, 1 , 0,mixi组合后乘积再相加构成,而1 1k kx再乘)(mxx中的x就成为k阶;后一部分是未乘)(mxx时的k阶系数,因为没乘)(mxx前已经是k阶,乘上)(mxx后与其中的mx相乘即为新的k阶。通式可写为mmkmkmkx1,1,式中m表示加入第m项)(mxx。分子多项式)()()(1110nkkxxxxxxxxxx系数的递推关系可表示为00,0xkinixiii, 1)(1,0,010,1kinixiiii, 1)(1,11,0,111

13、 ,2kinixiiii, 2)(1,21, 1,211,mmkinmixiimimim,)(1,1, 1,i, i k, 0in0 1 2 1kk1k2knj, 0jCountXi)(0xx)(1xx)(2xx)(1kxx)(1kxx)(2kxx)(1nxx)(nxx0 ia,00,0a1, 0a2,0a1,0 ka1,0 ka2, 0 ka1,0 nana,01 ia, 11 1, 1a2, 1a1, 1 ka1,1 ka2, 1 ka1, 1 nana, 12 ia, 20 1 2,2a1,2 ka1,2 ka2, 2 ka1,2 nana,23 ia,30 0 1 1,3 ka1,3

14、ka2,3 ka1,3 nana,31kika, 10 0 0 1, 1 kka1, 1 kka2, 1 kka1, 1 nkanka,1kika,0 0 0 1 1,kka2, kka1,nkanka,1kika,10 0 0 0 1 2, 1 kka1, 1 nkanka,11nina,10 0 0 0 0 0 1 nna,1nina,0 0 0 0 0 0 0 1 如果分子多项式中缺)(kxx时,计算过程由上表可得。从中可以看出每增加一个新的)(mxx需要新计算一个新的ma,但由于缺)(kxx,所以当km时,增加)(mxx时需要新计算的是1ma,这样在编程时需要另外一个变量CountXi

15、来累计增加的)(mxx的项数, 当增加)(mxx时, 需要一个循环, 循环变量为j, 0jCountXi, 它控制着从CountXi阶到 0 阶每个系数按照从高到低的顺序都要更新一次,因为任意一阶系数需要用到低一阶系数没更新前的值,所以需要按从高阶系数到低阶系数的顺序来更新。 void PolynomCoe(double X_in,double Y,double Coe,int N) int i,j,k,CountXi; double Fact; double *CoeXi,*X; X=(double *)calloc(N+1,sizeof(double); CoeXi=(double *)calloc(N+1,sizeof(double); for(j=0;j0;j-) CoeXij=CoeXij-1+CoeXij*Xi; CoeXi0=CoeXi0*Xi; Fact=Fact/(Xi-Xk);/分子即为 (X_ink-X_ini),由于输入 X_in 每个元素前都加了负号所以相减关系也反过来 for(j=0;jN+1;j+) Coej=Coej+CoeXij*Fact;/将每个基函数的各系数积对应相加 free(X); free(CoeXi);

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号