2016-05-21 17 views
-1

私は、提供された関数の根を見つけるために一般的な二分法を書いていますが、私はそれを二次関数を解くために呼びたいと思います。ここに私のgeneralroot.pyPythonの関数を解くために二分法の根フィリング関数とcalingitを呼び出す

# generalroot.py 
# determines the root of any general function 

def root_bisection(f, a, b, tolerance=1.0e-6): 
    dx = abs(b-a) 
    while dx > tolerance: 
     x = (a+b)/2.0 

     if (f(a)*f(x)) < 0: 
      b = x 
     else: 
      a = x 
     dx = abs(b-a) 
    return 

だ今私は

from math import * 
from generalroot import * 

def function(y): 
    y = y**2 + 5*x - 9 
    return y 

func = root_bisection(y, 0, 1) 

print 'Found f(x) =0 at x = %0.8f +/- %0.8f' % (func , tolerance) 

二次関数を解決するために、それを呼び出していますと、次のエラーを取得しています:

raceback (most recent call last): 
    File "quadfrombisectionroot.py", line 8, in <module> 
    func = root_bisection (y , 0, 1) 
NameError: name 'y' is not defined 

私はエラーを修正する助けてください、ありがとう

+0

'y'は定義されていませんが、引数' y'で 'root_bisection'を呼び出しています。正確にエラーメッセージがあなたに伝えていること... –

答えて

1

root_bisectionは、最初の引数として関数を想定しています。おそらく、そのようにそれを呼び出す必要があります:

func = root_bisection(function, 0, 1) 

はまた、あなたはfunctionの定義にタイプミスをしています。 xyに置き換えてください。

一般的なアドバイスとして:決してfrom libraryXYZ import *を実行しないでください。本当に必要な機能だけをインポートしてください。これにより、コードがはるかに読みやすくなります。

関連する問題