2014-09-22 76 views
1

进出口新的蟒蛇,我在写这只是代码查找函数的根:scipy.optimize.newton给出了类型错误:“浮动”对象不是可调用

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'对象不可调用

我真的不知道该代码错过了什么。有人可以帮助我......预先感谢您

+0

你正在评估'raw_input',有可能成为一个浮动,对于'F'。 '牛顿'正在等待一个功能。 – user2085282 2014-09-22 16:12:12

+0

@ user2085282,谢谢您的澄清 – user277746 2014-09-24 07:27:05

回答

1

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

def my_func (x): 
    return x*x 

然后你可以插入到my_funcoptimize.newton(除了其他所需参数)。

+0

谢谢,它的工作 – user277746 2014-09-24 07:31:01

0

这将取决于您输入的是什么f。如果你输入类似

lambda x: x ** 2 

那么它将被解释为一个函数,例如

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

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

感谢您的意见,它工作完美 – user277746 2014-09-24 07:32:34

相关问题