我知道多项式的根被称为多根,如果它是also the root of its derivative
我对prolog很新,我想写一个代码,我有一个列表(例如:[3,2,1]
for 3x^2 + 2x + 1
)作为输入,我必须找到多项式是否有多个根
要计算导数,我只需将其索引中列表的每个条目相乘,然后删除最后一个。但我不知道如何计算两个多项式之间的共享根,甚至不知道如何使用prolog计算一个多项式的根。
任何帮助将不胜感激
答案 0 :(得分:4)
计算多项式及其导数之间的gcd
。当且仅当它是gcd
的根时,根才是多个。这可能会降低程度,这将增加你找到多个根的机会。
有一些策略要遵循:
如果gcd
的程度不大于2,则可以使用封闭的公式作为其根。
如果多项式具有整数系数,则可以使用Rational root theorem来查找gcd
的合理根,如果有的话。
对于一般情况,您可以使用Sturm theorem将间隔中的所有根分开,尽可能小,这是实现无限精度的方法。