scipy.optimize.newton给出TypeError:'float'对象不可调用

时间:2014-09-22 16:10:23

标签: python scipy typeerror newtons-method

我是python的新手,我正在编写这个简单的代码来查找函数的根源:

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)

但是翻译返回: TypeError:'float'对象不可调用

我真的不确定从这段代码中遗漏了什么。有人可以帮帮我..谢谢你提前

2 个答案:

答案 0 :(得分:1)

optimize.newton期望引用可调用对象(例如函数)。这并不意味着您将函数作为'x*x'之类的字符串给出,但您必须首先定义一个函数,例如:

def my_func (x):
    return x*x

然后您可以将my_func插入optimize.newton(除了其他必需参数)。

答案 1 :(得分:0)

这取决于您为f输入的内容。如果输入类似

的内容
lambda x: x ** 2

然后它将被解释为一个函数,例如

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

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