有理系数多项式有理根计算.docVIP

有理系数多项式有理根计算.doc

此“教育”领域文档为创作者个人分享资料,不作为权威性指导和指引,仅供参考
  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
有理系数多项式有理根计算

有理系数多项式有理根计算   摘 要:设计出计算一元有理系数多项式有理根的算法及程序,并给出计算实例.   关键词:有理系数多项式;有理根;算法;程序.   多项式问题中,有理系数多项式有理根的计算非常重要,然而,尽管说已有完整的计算方法,但是人工操作却并非易事;尽管说已有大型的数学软件,但是它们的表现却并非如意.例如多项式:   有2重有理根-19162/429459 ,但用Matlab计算的结果却是 -233/5222。因此,本文研究专门的计算有理系数多项式有理根的算法及程序.   1. 理论基础   基本定义及结论请参阅文献[1],下面仅列出主要的。   本原多项式[1] 若整系数多项式 f(x)的系数互素,则称 f(x) 为本原多项式.   整系数多项式有理根的性质[1] 设 f(x)=anxn+an-1xn-1+...+a1x+a0是整系数多项式.如果有理数u/v 是 f(x) 的一个根,其中 u和v 是互素的整数,那么:   (1)、整除 f(x)最高次项系数a0 ,而u 整除f(x) 的常数项an ;   (2)、 f(x)=(x-u/v)/q(x),这里 q(x)是一个整系数多项式.   并且,若有理数 u/v ( u,v∈z且 (u,v)=1)是 f(x)=anxn+an-1xn-1+...+a1x+a0的有理根,那么f(1)/(v-u) 和 f(-1)/(v+u)全为整数.   综合除法[1] 设f(x)=anxn+an-1xn-1+...+a1x+a0 是整系数多项式, c是整数,如果   f(x)=(x-c)(bn-1xn-1+bn-2xn-2+...+b1x+b0)+r   那么 bn-1=an, b-=ai+1+cbi+1(0≤i≤n-1), r=a0+cb0.   2. 算法设计   根据整系数多项式有理根的性质,设计有理系数多项式 f(x)有理根算法如下。   2.1 主函数   ⑴、输入 f(x)系数。输入系数需要区分整数与分数,为此用两个数组分别存储分子与分母,并初始化分母数组值为1,这样在输入整数时即可不顾分母。   ⑵、调用多项式输出子函数,输出f(x) 的多项式形式。   ⑶、调用化本原子函数,变f(x) 为本原多项式g(x)=a0xn+...+an-1x+an 。   ⑷、调用求特殊根子函数,确定0、 ??是否为g(x) 的根。   ⑸、调用求普通根子函数,确定 g(x)非0非?? 的有理根。   2.2子函数   ①、多项式输出子函数:需要根据各项系数及次数设计。   ②、化本原式子函数:调用求最小公倍数子函数求得f(x) 系数之公分母 ,调用求最大公因数子函数求得 f(x)系数分子的最大公约数 ,则 g(x) = (l/g)/f(x)即是本原多项式。   ③、求特殊根子函数:当 an=an-t=...=an-k=0而an+k-t≠0(k≥0) 时,0是 f(x)的 k+1重根;调用综合除法子函数计算且记下g(??) 的值,并当 1或 -1是根时确定其重数且输出结果。   ④、求普通根子函数:此函数的功能是求出g(x) 最高项系数H 、常数项T 的因子并构成 g(x)的可能的有理根 ?%Z且判定 ?%Z是否为 g(x)的根。为此设│a0│=H 、 │an│=T,首先 k从2循环到 ,当 k/T时,若 [T/K]=k,则 k是 T的因子,否则k 与T/k 都是 T的因子,用数组 U存储T 所有的正因子u 。其次k 从2循环到 ,同样方法确定H 的正因子v ,并且每求出一个v ,将 v与 U中的每个数 u组成分数 u/v且判断 u/v 是否为 g(x) 的根,为此需调用判根子函数。   ⑤、综合除法子函数:此函数的功能是判定有理数 m/d是否为 g(x)的根,若是则输出结果。首先综合除法容易实现。其次用 m/d除 g(x) ,若余数为0,则设 g(x)=(x-m/d)/q(x) ,再用 m/d除 q(x),一直下去,假设 t+1次后的余数不为零,那么 m/d即是 f(x)的t 重根,输出此结果。   ⑥、判根子函数:此函数的功能是将v 与U 中的每个数u 组成 u/v且判定其是否为 g(x)的根。为此需做:遍历 U中元素 u,构作u/v ,并且每构作一个就调用排除非有理根子函数判断其是否为可能的有理根,若是就调用综合除法子函数对其进行判定处理。   ⑦、排除非有理根子函数:对于有理数u/v ,如果g(1)/(v-u) 与g(-1)/(v+u) 不全为整数,则u/v 不是 g(x)的有理根;否则 u/v即可能是f(x) 的有理根。   最大公因数、最小公倍数子函数等算法容易确定,从略。   3. 参考程序   根据算法,我们用C语言设计了参考程序,代码如下:   #include  

文档评论(0)

bokegood + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档