查找多项式是否有重根

Ala*_*ian 5 math prolog

我知道多项式的根如果也是其导数的根,则称为多重根

我对序言相当陌生,我想编写一个代码,其中有一个列表(例如:[3,2,1]for 3x^2 + 2x + 1)作为输入,并且我必须查找多项式是否有多个根

为了计算导数,我只需将列表中索引中的每个条目相乘并删除最后一个即可。但我不知道如何计算两个多项式之间的共享根,甚至不知道如何使用序言计算一个多项式的根。

任何帮助,将不胜感激

Lea*_*lia 5

计算gcd多项式及其导数之间的差。一个根是多重的当且仅当它是 的根gcd。这可能会降低度数,从而增加找到多个根的机会。

有一些策略需要遵循:

  1. 如果 的次数gcd不大于 2,则可以对其根使用封闭公式。

  2. 如果多项式具有整数系数,则可以使用有理根定理来查找 的有理根gcd(如果有)。

  3. 对于一般情况,您可以使用Sturm 定理将所有根以您想要的小间隔分开,这是一种实现无限精度的方法。