import numpy as np x_k = 2 # Initial (guessed) value K = 0.01 # Parameter prec = 0.0001 # Precision of result max_iter = 10000 # Max number of iterations k = 0 df_min = np.inf def f(x): return x**2 + 1 # Derivative def df(x): return 2*x while (k < max_iter) and (abs(df_min) > prec): x_kp1 = x_k - K*df(x_k) # kp1 means 'k plus 1'. df_min = df(x_k) x_k = x_kp1 k += 1 print('y_min = ', f(x_k)) print('x_opt = ', x_k) print('k = ', k) print('df =', df_min)