Вычисление корня к-й степени - Lisp

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

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

Определить рекурсивную функцию с помощью языка Common Lisp, которая вычисляет по следующей формуле: За ответ принять приближение, для которого выполняется следующее усло-вие: , где

Решение задачи: «Вычисление корня к-й степени»

textual
Листинг программы
(defun sqrt-k (x k &optional (yp 1.0)(eps 0.00001))
  (let ((y (/ (+ (* yp (- k 1))(/ x (expt yp (- k 1)))) k)))
    (if (<= (abs (- y yp)) eps) y (sqrt-k x k y))))

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

В данном коде реализована функция вычисления корня k-й степени из числа x. В первой строке определяется функция с именем sqrt-k, которая принимает три аргумента: x, k и опциональные аргументы yp и eps. Аргумент x — это число, из которого необходимо извлечь корень k-й степени. Аргумент k — это степень, из которой необходимо извлечь корень. Опциональные аргументы yp и eps используются для указания начального приближения и точности вычисления соответственно. По умолчанию начальное приближение равно 1.0, а точность равна 0.00001. Далее в блоке let создается переменная y, которая используется для хранения текущего приближения. Формула для вычисления корня k-й степени из x имеет вид: y = (x^(1/k)) Для вычисления корня используется итерационный процесс, который выполняется до тех пор, пока абсолютное значение разности текущего приближения и аргумента yp не станет меньше заданной точности eps. Если условие выполняется, то текущее приближение y возвращается как результат выполнения функции. Если условие не выполняется, то функция вызывается рекурсивно с аргументами x, k и текущим приближением y.

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


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

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

12   голосов , оценка 4 из 5
Похожие ответы