Рекурсивная функция для вычисления корня квадратного - Lisp

Узнай цену своей работы

Формулировка задачи:

Вычислить с точностью до 6 знаков, сравнив по числу шагов, рекурсивную формулу

Решение задачи: «Рекурсивная функция для вычисления корня квадратного»

textual
Листинг программы
  1. (defun sqrt! (x &optional (p x) (eps 0.0000001))
  2.   (let ((q (* 0.5 (+ p (/ x p)))))
  3.      (if (< (abs (- q p)) eps) q (sqrt! x q eps))))
  4.  
  5.  
  6.  
  7. ==> sqrt!
  8.  
  9. (sqrt! 14)
  10.  
  11. ==> 3.74165738677394
  12.  
  13. (^ 3.74165738677394 2)
  14.  
  15. ==> 14.0

Объяснение кода листинга программы

В коде определена рекурсивная функция sqrt!, которая вычисляет квадратный корень из числа x. В функции используется опциональный параметр p, который позволяет улучшить сходимость вычислений. По умолчанию значение p равно x. Также в функции есть параметр eps, который позволяет задать требуемую точность вычислений. По умолчанию значение eps равно 0.0000001. В функции используется локальная переменная q, в которой при каждой итерации вычисления обновляется значение текущего приближения к корню. Используется цикл while, который выполняется до тех пор, пока абсолютное значение разности текущего приближения к корню и параметра p не станет меньше требуемой точности eps. В каждой итерации значение q обновляется как среднее арифметическое между текущим приближением к корню и параметром p, умноженное на 0.5. Если условие цикла while выполняется, то функция sqrt! возвращает текущее значение q. Если условие цикла while не выполняется, то функция sqrt! вызывает саму себя, передавая в качестве аргументов число x, текущее значение q и параметр eps. В данном примере функция sqrt! вызывается с аргументом 14, и возвращает результат 3.74165738677394. Затем результат 3.74165738677394 возводится в квадрат с помощью оператора ^, и результат вычисления равен 14.0.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 4.25 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы