- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Ch数值计算方法之多项式计算
第7章 多项式计算 多项式计算的应用领域有: 利用泰勒展式进行各种近似计算; 求矩阵的特征根; 常微分方程的特征值问题等 多项式数值计算所涉及问题: 求多项式求值; 多项式求导; 计算多项式函数的增量; 求多项式的根等等 方法:既可以把多项式看成一般的连续可微的实函数而采用微积分学中的方法进行研究,也可以利用代数学中的方法进行研究。 7.1 引言 一般的实系数n次多项式可以表为 A(x)=a0+a1x+…+an-1xn-1+anxn 其中ak称为k次项的系数,k=0,1,…,n。 为了强调求A(x)是真正的n次多项式,也可以把A(x)记为An(x),在这种情况下,总是假定an≠0。 若n=0而an≠0,则称A(x)为零次多项式,此时A(x)成为非零常数。 若A(x)≡0,则称之为-1次多项式。 7.1 引言(续) 由于多项式的运算主要是利用相应的系数进行计算,所以只需把多项式的系数存贮在计算机内即可。 我们约定用多项式的函数名作为存贮多项式的系数的数组名使用,数组的长度比多项式的次数多1。 举例:多项式A(x)=1+2x+3x2+4x3在计算机内可以说明为 double A[4]={1.0,2.0,3.0,4.0}; 约定:对于多项式相关的各种数值计算来说,当多项式的次数n≤0时并无实际意义。所以,如果没有特别说明,我们总可以假定n0。 7.2 多项式的基本运算 尽管多项式的基本运算也是加、减、乘、除四则运算,但我们的重点只是除法运算,后面的许多问题均可由除法运算来解决。 多项式计算的程序都比较简单,但不大容易理解,所以大家应该多花些时间阅读教材中给出的源代码,既可以理解算法,也好学习编程技巧。 由于在计算机内可通过数组名和数组长度来表示一个多项式,所以在程序中利用形式参数来传递数据比较方便,相应的C语言函数的说明也准确一些,从而程序也容易理解一些。 1. 多项式的乘法 一般地,设A(x),B(x)是两个次数分别为n,m的多项式,记 C(x)=A(x)B(x) 那么C(x)是一个m+n次的多项式,通过B的每一项乘以A的每一项,按次数对齐合并同类项即可得到。 求两个多项式的积的C语言函数可说明为 int PolyMul(double*A,double*B,double*C,int n,int m) 其中:A,B,C分别为存放多项式A(x),B(x),C(x)的系数数组;n,m分别为多项式A(x),B(x)的次数;函数返回值为零表示计算没有错误。 程序7.01 多项式乘法运算 int PolyMul(double*A,double*B,double*C, int n,int m) { int i,j,k; for(j=0;j=m+n+1;j++)C[j]=0.0; for(i=0;i=m;i++) for(j=0;j=n;j++) C[i+j]+=B[i]*A[j]; return 0; } 2 多项式带余除法 设A(x),B(x)为两个已知的多项式,A(x)除以B(x)可以表示为 其中q(x)称为商式,R(x)称为余式。 约定余式的次数一定比除式B(x)的次数低。 一般情况下可以假定A(x)的次数一定不低于B(x)的次数,否则商式q(x)恒为零。 2 多项式带余除法(续) 记号:若A(x)除以B(x)得到商式q(x)和余式R(x),则有 A(x)=q(x)B(x)+R(x) 约定:如果将多项式A(x)表为q(x)B(x)+R(x)的形式,则自动认为q(x)为A(x)除以B(x)所得的商式,R(x)为A(x)除以B(x)所得的余式。 2 多项式带余除法(续) 接下来要搞清楚的问题是:如果编程计算多项式A(x)除以B(x)所得的商式q(x)和余式R(x),首先应该知道商式和余式的次数并决定相应的存放位置。 若A(x)和B(x)分别为n次和m次多项式,且n≥m,则商式q(x)为n-m次多项式,系数的个数为n-m+1;而余式R(x)最多为m-1次,系数的的个数最多为m,所以存放q(x)和R(x)所需要的数组长度与多项式A(x)的相同,都是n+1。所以,可以在程序中用一个长度为n+1的数组同时存放q(x)和R(x)的系数向量。 2 多项式带余除法(续) 多项式除法运算的C语言函数可以说明为 int PolyDiv(double*A,double*B,double*R,int n,int m) 其中:A,B,R分别为存放多项式A(x),B(x),R(x)的系数数组;n,m分别为多项式A(x),B(x)的次数;函数返回值为零表示计算没有错误。 约定数组R的长度与数组A的完全相同,初值设定也与A的完全相同。 在返回值中,R的第m到第n个元素为商式q(x)的系数。 程序7.02 多项式除
文档评论(0)