sicp.io
1.1.6 · Итеративное улучшение

Квадратный корень через многократное уточнение

Вычисление квадратного корня многократно усредняет приближение с частным от деления целевого числа на это приближение.

Вопрос для размышления

Как одно локальное правило улучшения создает все более точный численный процесс?

  • Чтение guess как полного состояния одной итерации
  • Применение улучшения квадратного корня методом Ньютона
  • Сравнение приближенного значения с его квадратом
  • Исследование шагов сходимости для одного фиксированного наблюдаемого запуска

Если guess слишком велико, то x, деленное на guess, слишком мало, и наоборот. Усреднение этих двух значений дает следующее guess между ними. Процесс переносит только это новое guess в следующий вызов.

Эти программы используют фиксированное число уточнений вместо скрытой погрешности. Шесть шагов от 1.0 дают детерминированное наблюдение для √2, а явная история показывает, как изменение между приближениями быстро уменьшается.

Код SICP331 из 1,048,576 байт UTF-8
Примеры
Результат
Вывод
Значение
Диагностика
Трасса выполнения0 / 0 событий
    Запуски происходят внутри браузера с отображением результата программы и трассы выполнения.
    Ожидаемый результат

    Первая программа возвращает (1.414213562373095 1.9999999999999996). Вторая программа фиксирует пять значений guess от 1.0 до 1.4142135623746899.

    На что обратить внимание в трассе

    Проследите за каждым вызовом refine и найдите частное, среднее и обновление оставшегося числа шагов. Фиксированное число шагов записывает каждый шаг для выбранных начального значения guess и цели.

    Попробуйте сами

    Измените программу и сравните результат.

    Измените целевое значение на 9.0 и сохраните шесть уточнений от 1.0. Предскажите приближение и его квадрат перед запуском.

    Показать подсказку

    Примените то же усреднение guess и x, деленного на guess. Меняется только цель.

    Завершить этот урок

    В этой главе пройдено 0 из 18 уроков0%