查找多项式是否有多个根



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

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

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

任何帮助将不胜感激

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

有一些策略可以遵循:

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

  2. 如果多项式有整数系数,你可以使用有理根定理来求gcd的有理根,如果有的话。

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

最新更新