【问题标题】:Using fixed point to show square root使用定点显示平方根
【发布时间】:2021-05-10 22:02:35
【问题描述】:

在SICP的练习中,它定义了一个不动点作为满足方程F(x)=x的函数。并迭代查找函数停止更改的位置,例如F(F(F(x)))

我不明白的是,9 的平方根与它有什么关系。

例如,如果我有F(x) = sqrt(9),显然x=3。然而,这与做事有何关系:

F(F(F(x))) --> sqrt(sqrt(sqrt(9)))

我相信它会收敛到零:

>>> math.sqrt(math.sqrt(math.sqrt(math.sqrt(math.sqrt(math.sqrt(9))))))
1.0349277670798647

因为当 x=1 时 F(x) = sqrt(x)。换句话说,求常数的平方根与求函数的不动点有什么关系?

【问题讨论】:

标签: iteration scheme lisp racket sicp


【解决方案1】:

当计算一个数的平方根时,比如说a,你基本上有一个x^2 - a = 0 形式的方程。也就是说,要找到a 的平方根,你必须找到一个x 使得x^2 = ax^2 - a = 0——将后一个方程称为(1)。 (1) 中给出的形式是一个形式为g(x) = 0 的方程,其中g(x) := x^2 - a

要使用定点法计算该方程的根,您必须对现有方程进行一些细微修改,并将其转化为f(x) = x 的形式。一种方法是将 (1) 重写为 x = a/x——称之为 (2)。现在在(2)中,你已经得到了用不动点法求解方程所需的形式:f(x)是a/x。

请注意,此方法要求等式两边都有一个“x”项; sqrt(a) = x 形式的方程不符合规范,因此无法使用定点法(迭代地)求解。

我不明白的是,9 的平方根与它有什么关系。

例如,如果我有 F(x) = sqrt(9),显然 x=3。然而,这与做什么有什么关系:F(F(F(x))) --> sqrt(sqrt(sqrt(9)))

这些是非线性方程根数值计算的标准方法,它本身就是一个相当复杂的主题,通常在工程课程中涵盖。因此,如果您没有掌握“窍门”,请不要担心,作者可能认为这是迭代问题解决的一个很好的例子。

【讨论】:

    猜你喜欢
    • 2012-03-03
    • 2021-07-04
    • 2013-02-17
    • 2021-12-21
    • 1970-01-01
    • 2014-03-07
    • 2011-12-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多