Метод Герона генерирует последовательность чисел, которые представляют все более и более точные приближения для √ п. Первое число в последовательности является произвольным предположением; каждое второе число в последовательности получается из предыдущего числа prev по формуле:
(1/2)*(prev+n/prev)
Я должен написать функцию heron()
, которая принимает на вход два числа: n и ошибка. Функция должна начинаться с начального предположения 1,0 для √n, а затем многократно генерировать лучшие приближения до тех пор, пока разница (точнее, абсолютное значение разницы) между последовательными приближениями не более чем ошибка.
usage:
>>> heron(4.0, 0.5)
2.05
>>> heron(4.0, 0.1)
2.000609756097561
это немного сложно, но мне нужно будет отслеживать четыре переменные:
# n, error, prev and current
Мне также понадобится цикл while с условием:
((current - prev) > error):
Общее правило для цикла while таково:
# old current goes into new prev
Итак, это то, что я получил до сих пор, это немного, потому что для начала я не знаю, как включить оператор 'if' в цикл while.
def heron(n, error):
guess = 1
current = 1
prev = 0
while (current - prev) > error:
previous==1/2*(guess+n/guess):
print (previous) # just a simple print statement
# in order to see what i have so far
Может кто-нибудь дать мне несколько указателей в правильном направлении, пожалуйста?
благодарю вас