我正在重新观看SICP的一些早期讲座。固定点的概念有点令我困惑。固定点过程:我应该这样考虑它,“这是找到给定函数的固定点的方法。”那么,如果给定
另外,在this lecture中为什么要声明一个将映射到
f(2)= 2
呢?另外,在this lecture中为什么要声明一个将映射到
x / y
的新函数y
是一个固定点?f(2)= 2
呢?x / y
的新函数y
是一个固定点?f(2) = 2
表明 2
是函数 f
的一个不动点。x
和y
应该是常数吗? - Joshua Tayloriter
在初始值和应用于初始值的函数上循环。因此,新/旧值序列为(1,2),(2,1),(1,2),...√x=x/√x
映射到自身,从而进入无限循环(即我们将无法通过替换得到√x
的定义,因为√x
包含在定义中)。但我很难理解(1,2),(2,1),(1,2),…
来自哪里。 - user8554766g(y) = x / y
并通过重复应用 g
来计算值的处理过程,从 1
开始; 在情况 x = 2
的情况下,我们得到:g(1) = 2; g(2) = 1; g(1) = 2 再次循环,整个过程只是“振荡”-在这两个值之间循环。而“do-until”过程则使用它们的一对 - g
的参数和其结果。 - Will Nessx = f(x) = f( f(x)) = f( f( f(x))) = f( f( f( f(x)))) = ....
f(y) = (y + n/y)/2
的数字示例。n=25; f(1.0)=13.0; f(13.0)=7.4615383; f(7.4615383)=5.406027;
f(5.406027)=5.0152473, f(5.0152473)=5.0152473; f(5.0152473)=5.0
[1.0,13.0,7.4615383,5.406027,5.0152473,5.000023,5.0,5.0,5.0 ...]
。g(h,n) = n<2 -> 1 ; else -> n*h(h,n-1)
,那么g(error)
是一个柯里化的单参数函数,仅在n < 2
时定义,因为对于任何其他参数,它都会发散(引起错误)。但是g(g(error))
对于所有的n < 3
是有定义的;g(g(g(error)))
对于所有的n < 4
是有定义的,以此类推。我们又一次有了越来越多被定义的数值序列……因此,该序列的极限值,即“最终值”,函数g
的不动点是这样一个函数f
,满足f = g(f)
,可以为任何的n
进行定义,无论其大小。巧合的是,这是一个阶乘函数,没有使用递归定义。