Найти корень числа с точностью до сотых - Lisp
Формулировка задачи:
Помогите пожалуйста, нужно найти корень целочисленного числа с точностью до 2го знака после запятой.
Решение задачи: «Найти корень числа с точностью до сотых»
textual
Листинг программы
(defun newton (x &optional (e 0.001) (z 1)) (if (> (abs (- x (* z z))) e) (newton x e (* (+ z (/ x z)) 0.5)) (format z "0.00"))) ==> newton (newton 2) ==> "1.41"
Объяснение кода листинга программы
В данном коде представлен алгоритм вычисления корня числа с помощью функции newton. Алгоритм имеет следующие шаги:
- Начало функции — начало выполнения функции.
- Проверка условия — проверка условия завершения работы функции: если абсолютное значение разности текущего значения x и произведения текущего значения z на себя больше заданной точности e, то функция завершается.
- Вызов функции newton — рекурсивный вызов функции newton с текущими значениями x и e, а также с новым значением z, равным половине от старого значения z.
- Форматирование значения z — форматирование значения z в виде строки с плавающей точкой до двух знаков после запятой.
- Конец функции — окончание выполнения функции. При вызове функции newton с аргументом 2, происходит следующее:
- Значение x устанавливается равным 2.
- Значение e устанавливается равным 0.001.
- Значение z устанавливается равным 1.
- Условие проверки (> (abs (- x ( z z))) e) становится истинным, так как (abs (- x ( z z))) равно 2.002, что больше 0.001.
- Выполняется рекурсивный вызов функции newton с аргументами (2, 0.001, (* (+ z (/ x z)) 0.5)).
- Значение z заменяется на результат рекурсивного вызова функции newton, равный 1.41.
- Форматирование значения z в виде строки
1.41
. - Возврат значения
1.41
в качестве результата выполнения функции. Таким образом, результатом выполнения функции newton с аргументом 2 будет строка1.41
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д