我知道多项式的根被称为多重根,如果它也是其导数的根
我对prolog相当陌生,我想编写一个代码,其中我有一个列表(例如:[3,2,1]
表示3x^2 + 2x + 1
(作为输入,我必须找到多项式是否有多个根
为了计算导数,我只需将列表的每个条目在其索引中相乘并删除最后一个条目。 但我不知道如何计算两个多项式之间的共享根,甚至不知道如何使用 prolog 计算一个多项式的根。
任何帮助将不胜感激
计算多项式与其导数之间的gcd
。根是多个当且仅当它是gcd
的根。这可能会降低程度,从而增加您找到多个根的机会。
有一些策略可以遵循:
-
如果
gcd
的次数不大于 2,则可以对其根使用封闭公式。 -
如果多项式有整数系数,你可以使用有理根定理来求
gcd
的有理根,如果有的话。 -
对于一般情况,您可以使用 Sturm 定理以尽可能小的间隔分隔所有根,这是一种实现无限精度的方法。