找到多项式是否有多个根

时间:2018-05-26 20:01:46

标签: math prolog

我知道多项式的根被称为多根,如果它是also the root of its derivative

我对prolog很新,我想写一个代码,我有一个列表(例如:[3,2,1] for 3x^2 + 2x + 1)作为输入,我必须找到多项式是否有多个根

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

任何帮助将不胜感激

1 个答案:

答案 0 :(得分:4)

计算多项式及其导数之间的gcd。当且仅当它是gcd的根时,根才是多个。这可能会降低程度,这将增加你找到多个根的机会。

有一些策略要遵循:

  1. 如果gcd的程度不大于2,则可以使用封闭的公式作为其根。

  2. 如果多项式具有整数系数,则可以使用Rational root theorem来查找gcd的合理根,如果有的话。

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