2017-04-24 97 views
0

我想爲給定的參數a,b,c找到一個簡單函數的零點。我必須使用牛頓raphson方法。我編譯代碼時得到的問題是x變量未定義。Python中的牛頓拉普森

from scipy import optimize 

def Zeros(a,b,c,u): 

    return optimize.newton(a*x**2+b*x+c, u, 2*ax + b,args=(a,b,c)) 

a,b,c是函數f的常數,u是起點。所以使用這個函數,我應該能夠通過指定a,b,c和u來獲得零。例如:

print Zeros(1,-1,0,0.8) 

但我獲得「全球名‘X’沒有定義」

任何人都具有的,爲什麼出現這種情況的任何想法?在先進的感謝

伯納特

回答

0

的方式大多數編程語言的工作是,他們使用的變量(名字A,B,C,U在你的代碼)和功能(零,例如)。

當調用一個函數時,Python期望輸入的所有「數量」被定義。在你的情況下,x不存在。

的解決方案是定義取決於X,對於功能的功能和它的衍生物

from scipy import optimize 

def Zeros(a,b,c,u): 
    def f(x, a, b, c): 
     return a*x**2+b*x+c 
    def fprime(x, a, b, c): 
     return 2*a*x + b 
    return optimize.newton(f, u, fprime=fprime,args=(a,b,c)) 

print(Zeros(1,-1,0,0.8)) 
+0

您好@WarrenWeckesser。請問在答案上做了什麼編輯? (我找不到差異)。 –

+0

'Zeros'的'return'語句與'fprime'的'return'語句在同一行。我只是添加了一個換行符,所以最後一個'return'語句是一個單獨的行。 –

+0

好的,謝謝! –