首页 > 解决方案 > 如何使用 sympy/python 找到给定根的多项式

问题描述

假设我有一个根为 -2、1 和 3 的三次多项式,我如何找到它的方程?这可以sympy用 python 解决,还是有其他方法可以解决?

该函数可能喜欢,我想解决a, b, c, d.

f = lambda x: a*x**3+b*x**2+c*x+d

同时,如果多项式是五次的呢?

更新:

感谢您的回答。似乎使用 Vieta 的公式简化了这个问题。但有时 N 次多项式的根数不等于 N。例如,五次多项式可以表示为:

(x-a)**2*(x-b)**2(x-c)

如果是这样,这仍然可以解决吗?

请在下面查看我的解决方案以获取此更新

标签: pythonnumpysympy

解决方案


这应该可以解决任何程度的多项式。星号符号允许任意数量的参数。

def c_find(*roots):
    from sympy import Symbol
    x = Symbol('x')
    whole =1
    for root in roots:
        whole *=(x-root)
    print('f(x) =',whole.expand())

调用c_find(3,4,5)返回f(x) = x**3 - 12*x**2 + 47*x - 60


推荐阅读