使用定点显示平方根
Using fixed point to show square root
在完成 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)。换句话说,求一个常数的平方根和求函数的不动点有什么关系?
当计算一个数的平方根时,比如 a
,您基本上有一个形式为 x^2 - a = 0
的方程。也就是说,要找到 a
的平方根,您必须找到 x
使得 x^2 = a
或 x^2 - a = 0
—— 将后一个方程称为 (1)。 (1) 中给出的形式是 g(x) = 0
形式的方程式,其中 g(x) := x^2 - a
.
要使用定点法计算此方程的根,您必须对现有方程进行一些细微修改,并将其变为[=18]形式=].一种方法是将 (1) 重写为 x = a/x —— 称之为 (2)。现在(2)中,得到了用不动点法求解方程所需的形式:f(x)为a/x.
观察到这种方法要求等式两边都有一个'x'项; sqrt(a) = x
形式的方程不符合规范,因此无法使用定点方法(迭代)求解。
The thing I don't understand is how a square root of, say, 9 has anything to do with that.
For example, if I have F(x) = sqrt(9), obviously x=3. Yet, how does that relate to doing: F(F(F(x))) --> sqrt(sqrt(sqrt(9)))
这些是非线性方程根的数值计算的标准方法,它本身是一个相当复杂的主题,通常在工程课程中涵盖。因此,如果您没有掌握“诀窍”,请不要担心,作者可能认为这是迭代解决问题的一个很好的例子。
在完成 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)。换句话说,求一个常数的平方根和求函数的不动点有什么关系?
当计算一个数的平方根时,比如 a
,您基本上有一个形式为 x^2 - a = 0
的方程。也就是说,要找到 a
的平方根,您必须找到 x
使得 x^2 = a
或 x^2 - a = 0
—— 将后一个方程称为 (1)。 (1) 中给出的形式是 g(x) = 0
形式的方程式,其中 g(x) := x^2 - a
.
要使用定点法计算此方程的根,您必须对现有方程进行一些细微修改,并将其变为[=18]形式=].一种方法是将 (1) 重写为 x = a/x —— 称之为 (2)。现在(2)中,得到了用不动点法求解方程所需的形式:f(x)为a/x.
观察到这种方法要求等式两边都有一个'x'项; sqrt(a) = x
形式的方程不符合规范,因此无法使用定点方法(迭代)求解。
The thing I don't understand is how a square root of, say, 9 has anything to do with that.
For example, if I have F(x) = sqrt(9), obviously x=3. Yet, how does that relate to doing: F(F(F(x))) --> sqrt(sqrt(sqrt(9)))
这些是非线性方程根的数值计算的标准方法,它本身是一个相当复杂的主题,通常在工程课程中涵盖。因此,如果您没有掌握“诀窍”,请不要担心,作者可能认为这是迭代解决问题的一个很好的例子。