Почему выходные данные из кода становятся медленными с каждой последовательной итерацией?
Я хочу написать рабочий код, который реализует метод градиентного спуска и метод Ньютона для одной и той же функции, и я хочу сравнить скорости и итерации для обоих методов, чтобы прийти к приближенному решению.
Этот фрагмент кода предназначен только для градиентного спуска, и вывод кажется замедленным для каждой итерации. Таким образом, я получил первые 10 выводов относительно быстро, после этого каждый выход занимал как минимум 5-6 секунд или больше.
#A python program to approximate a root of a polynomial
#using the newton-raphson method
import math
#f(x) - the function of the polynomial
h = 0.000001
def f(x):
function = (x*x*x) - (2*x) - 1
return function
def derivative(h,x): #function to find the derivative of the polynomial
derivative = (f(x + h) - f(x)) / h
return derivative
def GD(h,x):
return (x - h*derivative(h,x))
# p - the initial point i.e. a value closer to the root
# n - number of iterations
def iterate(p, n): #
x = 0
for i in range(n):
if i == 0: #calculate first approximation
x = GD(h,p)
else:
x = GD(h,iterate(x, n)) #iterate the first and subsequent approximations
n=n-1
return x
for i in range(100):
print (iterate(1, i)) #print the root of the polynomial x^3 - 2x - 1 using 3 iterations and taking initial point as 1
Я не могу понять, происходит ли это из-за кода или градиентного спуска.