我目前正在编写我的第一个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
开始迭代是错误的。