多项式的计算.doc

  1. 1、本文档共16页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
多项式的计算

·PAGE 14· 常用算法程序集(C语言描述) ·PAGE 15· 第1章 多项式的计算 第1章 多项式的计算 1.1 一维多项式求值 1.功能 计算多项式 p(x)=an-1xn-1+an-2xn-2+…+a1x+a0 在指定点x处的函数值。 2.方法说明 首先将多项式表述成如下嵌套形式: p(x)=(…((an-1x+an-2)x+an-3)x+…+a1)x+a0 然后从里往外一层一层地进行计算。其递推计算公式如下: un-1=an-1 uk=uk+1x+ak,k=n-2,…,1,0 最后得到的u0即是多项式值p(x)。 3.函数语句与形参说明 double plyv(a,n,x) 形参与函数类型 参 数 意 义 double a[n] 存放n-1次多项式的n个系数 int n 多项式的项数 double x 指定的自变量值 double plyv() 返回多项式值p(x) 4.函数程序(文件名:1plyv.c) double plyv(a,n,x) int n; double x,a[]; { int i; double u; u=a[n-1]; for (i=n-2; i=0; i--) u=u*x+a[i]; return(u); } 5.例 计算多项式 p(x)=2x6-5x5+3x4+x3-7x2+7x-20 在x=±0.9,±1.1,±1.3处的函数值。 主函数程序(文件名:1plyv0.c)如下: #include stdio.h #include 1plyv.c main() { int i; static double a[7]={-20.0,7.0,-7.0,1.0,3.0,-5.0,2.0}; static double x[6]={0.9,-0.9,1.1,-1.1,1.3,-1.3}; printf(\n); for (i=0; i=5; i++) printf(x(%d)=%5.2lf p(%d)=%13.7e\n, i,x[i],i,plyv(a,7,x[i])); printf(\n); } 运行结果为: x(0)= 0.90 p(0)=-1.856227e+01 x(1)=-0.90 p(1)=-2.671537e+01 x(2)= 1.10 p(2)=-1.955613e+01 x(3)=-1.10 p(3)=-2.151303e+01 x(4)= 1.30 p(4)=-2.087573e+01 x(5)=-1.30 p(5)=-6.340432e+00 1.2 一维多项式多组求值 1.功能 利用系数预处理法对多项式 p(x)=an-1xn-1+an-2xn-2+…+a1x+a0 进行多组求值。其中n=2k(k≥1)。 2.方法说明 首先将多项式变为首一多项式,即 T(x)=p(x)/an-1=xn-1+tn-2xn-2+…+t1x+t0 其中tk=ak/an-1(k=n-2,…,1,0)。 然后对首一多项式T(x)的系数进行预处理。其预处理过程如下: 将T(x)分解为 T(x)=(x j+b)q(x)+r(x) 其中j=2k-1,q(x)与r(x)均为2k-1-1次的首一多项式。b,q(x)与r(x)按以下规则确定: 多项式中的中项系数减1即为b,即 b= 多项式左半部分除以x j即为q(x),即 q(x)=xs-1+qs-2xs-2+…+q1x+q0 其中s=2k-1,qi=ti+s(i=s-2,…,1,0)。 多项式右半部分减去b与q(x)的乘积即为r(x),即 r(x)=xs-1+rs-2xs-2+…+r1x+r0 其中ri=ti-bqi(i=s-2,…,1,0)。 由于q(x)与r(x)还是首一多项式,因此,它们也可以按照上述方法分别进行分解。这个过程一直做到q(x)与r(x)的次数为1为止。在分解过程中,每次分解后的系数仍存放在T(x)的各系数的存储单元中,最后得到T(x)经分解处理后的系数。 首一多项式T(x)的系数经预处理后,就可以用这些预处理后的系数对不同的x求函数值。这种方法特别适用于对多个x进行求值,减少求值中的乘法次数。 如果原来的多项式不满足n=2k这个条件,则可以添加系数为0的各项及系数为1的最高次项。 3.函数语句与形参说明 void plys(a,n,x,m,p) 形参与函数类型 参 数 意 义 double a[n] 存放n-1次多项式的n个系数。返回时其值将被改变 int n 多项式的项数 double x[m] 存放给定的m个自变量值 int m 给定自变量的个数 double p[m] 返回时存放与给定

文档评论(0)

zhuliyan1314 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档