2017-04-24 4 views
0

与えられたパラメータa、b、cに対して簡単な関数の零点を見つけたいと思います。私はnewton raphsonメソッドを使用する必要があります。コードをコンパイルするときに得られる問題は、x変数が定義されていないことです。PythonのNewton raphson

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)) 

、B、Cは、関数fの定数であり、uが出発点です。したがって、この関数では、a、b、c、およびuを指定することでゼロを得ることができます。例えば:

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

しかし、私は取得

誰もがそれがなぜ起こるかのいずれかのアイデアを持っている「グローバル名は 『X』に定義されていませんか」?おかげで、高度な

でベルナット

答えて

0

ほとんどのプログラミング言語は、作業方法は、彼らは、変数(名前、B、C、Uコード内)や機能(ゼロ、たとえば)を使用することです。

関数を呼び出すとき、Pythonは入力されたすべての「量」が定義されていることを期待しています。あなたの場合、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ため、Xに依存する関数を定義することです。答えに何が編集されたのか聞いてもよろしいですか? (私は違いを見つけることができません)。 –

+0

'Zeros'の' return'ステートメントは 'fprime'の' return'ステートメントと同じ行にあります。最後の 'return'文が別の行になるように改行を追加しました。 –

+0

よろしくお願いします。 –

関連する問題