주어진 다항식과 초기 추측 값에 대해 Newton의 방법을 풀기 위해이 코드가 있습니다. 나는 뉴턴의 방법이 실제로 반복적 인 과정으로 변하고 싶다. 프로그램은 출력 값 "x_n"이 일정해질 때까지 계속 실행해야합니다. 그리고 x_n의 최종 값은 실제 루트입니다. 또한, 내 알고리즘에서이 방법을 사용하는 동안 항상 0과 1 사이의 양수근을 생성해야합니다. 양수로 음수 출력 (루트)을 변환하면 어떤 차이가 있습니까? 고맙습니다.iterative Newton 's method
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