/ / scipy.optimize.newton daje TypeError: obiekt "float" nie jest wywoływalny - python, scipy, typeerror, newtons-method

scipy.optimize.newton daje TypeError: obiekt "float" nie jest wywoływalny - python, scipy, typeerror, newtons-method

Jestem nowy dla Pythona i napisałem ten kod po prostu dla znalezienia korzeni tej funkcji:

from scipy import optimize

x = eval(raw_input())                           #Initial guess
f = eval(raw_input())                           # function to be evaluated
F = eval(raw_input())                          #derivative of function f

round(optimize.newton(f, x, F, tol = 1.0e-9), 4)

Ale tłumacz zwraca: TypeError: obiekt "float" nie jest możliwy do wywołania

Naprawdę nie jestem pewien, czego brakuje mi w tym kodzie, czy ktoś może mi pomóc ... dziękuję z góry

Odpowiedzi:

1 dla odpowiedzi № 1

optimize.newton oczekuje odniesienia do obiektu wywoływalnego (na przykład funkcji). Nie oznacza to, że nadajesz funkcję jako ciąg znaków "x*x" ale musisz najpierw zdefiniować jeden, na przykład:

def my_func (x):
return x*x

Następnie możesz podłączyć my_func w optimize.newton (oprócz innych wymaganych parametrów).


0 dla odpowiedzi nr 2

To będzie zależeć od tego, co wprowadzasz f. Jeśli wpiszesz coś podobnego

lambda x: x ** 2

to będzie interpretowane na przykład jako funkcja

In [83]: f = eval("lambda x: x ** 2")

In [84]: f(5)
Out[84]: 25