2013-12-13 35 views
1

我是新來SciPy的,和下面的代碼似乎並沒有工作:與多個參數調用optimize.newton函數拋出一個「浮動的對象不是可調用的」錯誤

from scipy import optimize 

def f(x, y): 
    return x * x - 3 + y 


def main(): 
    x0 = 0.1 
    y = 1 
    res = optimize.newton(f(x0,y), x0) 
    print (res) 

我收到的錯誤:

File "C:\Python27\lib\site-packages\scipy\optimize\zeros.py", line 144, in newton 
    q0 = func(*((p0,) + args)) 
TypeError: 'float' object is not callable 

回答

6

您需要提供一個函數作爲optimize.newton的第一個參數。對於獨立參數猜測x0提供的第二個參數,你可以使用args提供恆定的參數:

def f(x, y): 
    return x * x - 3 + y 

def main(): 
    x0 = .1 
    y = 1 
    res = optimize.newton(f, x0, args=(y,)) 
+0

我有一個跟進的問題。 args可以聲明爲一個元組,所以如果我假設我可以簡單地聲明:args0 = y,然後聲明 res = optimize.newton(f,x0,args = args0)? – insomniac

+0

它必須是一個元組,所以你必須聲明'args0 =(y,)'。如果你有一個額外的參數'z',你當然也可以把它加入'args0 =(y,z)'。 –

相關問題