Сначала прочитайте это: Итерация с фиксированной точкой: Приложения
Я выбрал метод Ньютона.
Теперь, если вы хотите узнать о функциях генератора, вы можетеопределите функцию генератора и создайте экземпляр объекта генератора следующим образом
def newtons_method(n):
n = float(n) #Force float arithmetic
nPlusOne = n - (pow(n,3) + n - 1)/(3*pow(n,2) +1)
while 1:
yield nPlusOne
n = nPlusOne
nPlusOne = n - (pow(n,3) + n - 1)/(3*pow(n,2) +1)
approxAnswer = newtons_method(1.0) #1.0 can be any initial guess...
Тогда вы можете получить последовательно лучшие приближения, вызвав:
approxAnswer.next()
см .: PEP 255 или Классы (Генераторы) - Python v2.7 для получения дополнительной информации о Генераторах
Например
approx1 = approxAnswer.next()
approx2 = approxAnswer.next()
Или еще лучше использовать цикл!
Что касается принятия решения, когда ваше приближение достаточно хорошо ...;)