私はこのコードを与えられた多項式と初期推測値のニュートンの方法を解くことができます。私はニュートンの方法が実際に反復的なプロセスに変わりたいと思っています。プログラムは、出力値 "x_n"が一定になるまで実行し続ける必要があります。 x_nの最終的な値は実際のルートです。また、私のアルゴリズムでこのメソッドを使用している間、常に0と1の間の正のルートを生成する必要があります。したがって、負の出力(ルート)を正の数に変換すると違いがありますか?ありがとうございました。反復ニュートンの方法
import copy
poly = [[-0.25,3], [0.375,2], [-0.375,1], [-3.1,0]]
def poly_diff(poly):
""" Differentiate a polynomial. """
newlist = copy.deepcopy(poly)
for term in newlist:
term[0] *= term[1]
term[1] -= 1
return newlist
def poly_apply(poly, x):
""" Apply a value to a polynomial. """
sum = 0.0
for term in poly:
sum += term[0] * (x ** term[1])
return sum
def poly_root(poly):
""" Returns a root of the polynomial"""
poly_d = poly_diff(poly)
x = float(raw_input("Enter initial guess:"))
x_n = x - (float(poly_apply(poly, x))/poly_apply(poly_d, x))
print x_n
if __name__ == "__main__" :
poly_root(poly)
私はあなたのコードを置き換えただけですが、プログラムが停止します。 – zingy
申し訳ありません。ありがとう。 – zingy