2014-09-22 62 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

相關問題