我对某事感到困惑。我想生成一个示例(在 Clojure 中),演示如何使用定点组合器来评估序列的定点,该序列在无限数量的应用程序后数学上收敛,但实际上会在有限数量的步骤后收敛浮点数的有限精度。我显然在这里遗漏了一些东西。
(defn Y [r]
((fn [f] (f f))
(fn [f]
(r (fn [x] ((f f) x))))))
(defn simple-convergent [func]
(fn [x]
(if (zero? x)
0.0
(* 0.5 (func x)))))
然后我可以得到
user=> ((Y simple-convergent) 0.)
0.0
user=> ((Y simple-convergent) 0.2)
java.lang.StackOverflowError (NO_SOURCE_FILE:0)
我不明白这个堆栈溢出。更一般地说,与我之前的帖子相关,我想知道是否有人可以提出一个“正确”版本的定点组合器,它可以用来以这种方式逼近序列的定点。