Я пишу функцию, которая берет 2 списка и создает полиномиальную функцию, которая впоследствии будет решена оптимизацией.
Я пытаюсь создать строку, которая выглядит как функция, преобразовать ее в функцию с помощью sympy.sympify()
и затем передать ее в optimize.newton()
.
Однако он продолжает выдавать TypeError "Add" object is not callable
, хотя я уже думаю, что 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)