判断方程是否有重根

张文泰 posted @ 2010年1月11日 03:24 in Art of Science with tags 方程 , 10911 阅读

题目来源于SWERC2008 Wizards。

我们显然可以把方程化为根的形式:P=(x-x1)...(x-xn)=0。由于每一个可能出现的根并不能分开表示,所以这个形式对于问题的求解并没有什么帮助。我们要想办法将方程的根放到一个能够把各个根分离考虑的式子里。

回忆多项式的求导,我们发现,P的导数恰好满足的这个性质。P'=(x-x1)'...(x-xn)+...+(x-x1)...(x-xn)'。这样我们发现,如果方程P=0存在一个重根,那么这个重根必然是方程P'=0的一个根。因为n个乘积的和中,每一个乘积里各因数至少有一个是0,而原来不是重根的解只会出现n-1个0,只有在有重根的情况下,才能在该项被求导时使得它仍然为0。所以,我们得到,如果方程P=0存在重根,那么一定是(P,P')=0的一个根,这里(P,P')表示两个多项式的最大公约式。

因此,只需要判断(P,P')是否为一个常数(注意这个常数不会为0)。如果是一个常数,那么两个多项式没有共同的解,也即不存在重根;否则就是存在。

原题目和相关的程序可以在SWERC2008 - Results找到。值得一提的是,如果想要求出任意多项式的解,可以用Bairstow's Method来做,可以在Bairstow's method阅读详细情况。


本作品遵循“署名-非商业性使用-相同方式共享 3.0 Unported”协议,转载请注明来自richard-desktop
Creative Commons License

登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter