Я сейчас пишу свои первые программы на Scheme и пытаюсь запрограммировать следующую функцию:
Функция должна принимать в качестве аргумента другую функцию и возвращать функцию с одним аргументом, который вычисляетнулевое значение заданной функции для заданного x.
Алгоритм, который я пытаюсь выразить, таков: Xn+1 = Xn - f(Xn) / f'(Xn)
Функция должна повторяться до X - Xn < 0.0001
.Я уже написал функцию, которая вычисляет f'(x)
(diff
).
Мой текущий код выглядит так:
(define (make-nf f)
(lambda (x)
(let ((fn (diff f 0.1))
((innerfunc x xn)
(if (< (- x xn) 0.0001)
xn
(innerfunc (- x (/ (f x) (fn x))))
))))
(innerfunc 0 x)))
Моя настоящая проблема - это итерационная часть.Я не знаю, как заставить итерацию возвращаемой функции вызывать себя или внутреннюю функцию.Как вы можете видеть выше, я попытался определить именованную внутреннюю функцию, которая будет вызываться, пока не будет достигнута определенная точность.Я также знаю, что начало итерации с 0 x
будет неправильным.