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

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

ID:33798547

大小:61.54 KB

页数:8页

时间:2019-03-01

有理系数多项式有理根计算_第1页
有理系数多项式有理根计算_第2页
有理系数多项式有理根计算_第3页
有理系数多项式有理根计算_第4页
有理系数多项式有理根计算_第5页
资源描述:

《有理系数多项式有理根计算》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、有理系数多项式有理根计算摘要:设计出计算一元有理系数多项式有理根的算法及程序,并给出计算实例.关键词:有理系数多项式;有理根;算法;程序.多项式问题中,有理系数多项式有理根的计算非常重要,然而,尽管说已有完整的计算方法,但是人工操作却并非易事;尽管说已有大型的数学软件,但是它们的表现却并非如意.例如多项式:有2重有理根-19162/429459,但用Matlab计算的结果却是-233/5222o因此,本文研究专门的计算有理系数多项式有理根的算法及程序.1.理论基础基本定义及结论请参阅文献[1],下面

2、仅列出主要的。本原多项式[1]若整系数多项式f(x)的系数互素,则称f(x)为本原多项式.整系数多项式有理根的性质[1]设f(X)=anxn+an-lxn-l+...+alx+aO是整系数多项式.如果有理数u/v是f(x)的一个根,其中u和v是互素的整数,那么:(1)、整除f(x)最高次项系数aO,而u整除f(x)的常数项an;(2)、f(x)=(x-u/v)/q(x),这里q(x)是一个整系数多项式.并且,若有理数u/v(u,vUz且(u,v)=1)是f(x)=anxn+an-lxn-l+...+

3、alx+a0的有理根,那么f(1)/(v-u)和f(T)/(v+u)全为整数.综合除法[1]设f(x)=anxn+an-lxn-l+...+alx+aO是整系数多项式,c是整数,如果f(x)=(x-c)(bn-lxn-l+bn-2xn-2+...+blx+bO)+r那么bnT=an,b-二ai+l+cbi+1(OWiWnT),r=aO+cbO.1.算法设计根据整系数多项式有理根的性质,设计有理系数多项式f(x)有理根算法如下。2.1主函数⑴、输入f(x)系数。输入系数需要区分整数与分数,为此用两个数

4、组分别存储分子与分母,并初始化分母数组值为1,这样在输入整数时即可不顾分母。⑵、调用”多项式输出子函数”,输出f(x)的多项式形式。⑶、调用”化本原子函数”,变f(x)为本原多项式g(x)=aOxn+...+an-lx+an。⑷、调用”求特殊根子函数”,确定0、❷?是否为g(X)的根。⑸、调用”求普通根子函数”,确定g(x)非0非❷?的有理根。2.2子函数①、多项式输出子函数:需要根据各项系数及次数设计。②、化本原式子函数:调用”求最小公倍数子函数”求得f(x)系数之公分母,调用”求最大公因数子函数

5、”求得f(x)系数分子的最大公约数,则g(X)=(1/g)/f(X)即是本原多项式。③、求特殊根子函数:当an=an-t=...=an-k=O而an+k-tHO(k20)时,0是f(x)的k+1重根;调用"综合除法子函数”计算且记下g(❷?)的值,并当1或-1是根时确定其重数且输出结果。④、求普通根子函数:此函数的功能是求出g(x)最高项系数H、常数项T的因子并构成g(x)的可能的有理根^%Z且判定^%Z是否为g(x)的根。为此设

6、aO

7、=H、Ian

8、=T,首先k从2循环到,当k/T时,若[T/K]

9、=k,则k是T的因子,否则k与T/k都是T的因子,用数组U存储T所有的正因子uo其次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

10、重根,输出此结果。②、判根子函数:此函数的功能是将V与U中的每个数U组成u/v且判定其是否为g(x)的根。为此需做:遍历U中元素u,构作u/v,并且每构作一个就调用”排除非有理根子函数”判断其是否为可能的有理根,若是就调用”综合除法子函数”对其进行判定处理。③、排除非有理根子函数:对于有理数u/v,如果g(l)/(V-U)与g(-1)/(v+u)不全为整数,则u/v不是g(X)的有理根;否则u/v即可能是f(X)的有理根。最大公因数、最小公倍数子函数等算法容易确定,从略。1.参考程序根据算法,我们用

11、C语言设计了参考程序,代码如下:^include^includettinclude^defineUL2000/*存储常数项正因子的数组U的长度*/staticintz;doublex[2][50],X[2][50];staticintZ;inty[50];staticdoubleFl,F2,aO,an;/*F1为f(1),F2为f(T),aO为最高项系数,an为常数项*//*判断两数相乘是否溢出子函数*/intMUL(doublea,doubleb){if(a>0&&

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。