Недавно посмотрела интересное видео на ютубе, в котором сравниваются два способа поиска квадратного корня.
Мне стало интересно самой вычислить корень из двух по методу Ньютона, но считать я решила не на бумажке, а в питоне. Вот такая программка у меня вышла:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
def f(x):
return x**2-2
def f1(x):
return 2*x
x=1 # начальное предположение
epsilon=0.00000001 # допустимая погрешность
print("Поиск квадратного корня из двух по методу Ньютона")
print("изначальное значение x -", x)
print(f"Требуемая точность - {epsilon}")
for i in range(1, 100):
xold=x
x=x-f(x)/f1(x)
delta=abs(xold-x)
print(f"Шаг {i}, результат {x}, дельта", delta)
if epsilon > delta:
print(x, "Задача решена за", i, "шагов, дельта", delta)
break
print("Значение корня из двух на калькуляторе -", 2**(1/2))
Я улучшила алгоритм программы: теперь алгоритм не выполняется больше ста раз и останавливается, если разница между двумя последними результатами меньше допустимой погрешности.
Код также доступен на гитхабе.