Python scipy.optimize.newton()的问题:“;加上「;对象不可调用

Python scipy.optimize.newton()的问题:“;加上「;对象不可调用,python,python-3.x,scipy,Python,Python 3.x,Scipy,我正在编写一个函数,它包含两个列表,并创建一个多项式函数,稍后通过优化来求解 我试图创建一个看起来像函数的字符串,使用sympy.sympify()将其转换为函数,然后将其传递到optimize.newton() 然而,它不断抛出一个TypeError“Add”对象是不可调用的,而我已经认为sympify正确地返回了一个函数 我想我遗漏了一些非常基本的东西,也许有一个函数可以将我的变量function0转换为函数类型,以便scipy正确解释,也许 def poly_build(coefficie

我正在编写一个函数,它包含两个列表,并创建一个多项式函数,稍后通过优化来求解

我试图创建一个看起来像函数的字符串,使用
sympy.sympify()
将其转换为函数,然后将其传递到
optimize.newton()

然而,它不断抛出一个
TypeError“Add”对象是不可调用的
,而我已经认为
sympify
正确地返回了一个函数

我想我遗漏了一些非常基本的东西,也许有一个函数可以将我的变量
function0
转换为函数类型,以便
scipy
正确解释,也许

def poly_build(coefficient_list, power_list):
    '''
    coefficient_list & power_list must be iterable objects of the same length, preferably a list
    '''
    if len (coefficient_list) != len(power_list):
        return False
    function = ""
    for n in range(0, len(coefficient_list)):
        if n != len(coefficient_list) - 1:
            function += f'{coefficient_list[n]}*x**{power_list[n]} +'
        else:
            function += f'{coefficient_list[n]}*x**{power_list[n]}'
    function0 = (sympy.sympify(function))
    function1 = sympy.diff(function0)
    function2 = sympy.diff(function1)

    return scipy.optimize.newton(function0, 1.5) 

Symphy函数不是Python函数,正如
scipy.optimize.newton
所期望的那样。要转换:

pyfunction0 = sympy.lambdify(x, function0)