计算机程序的构造和解释 练习题1.45

我们首先理解解平方根的公式是怎么来的,以及不动点的几何含义,这有助于我们写出过程
首先我们要求平方根有公式:
y = x y 2 = x y = x y 也 就 是 以 下 变 化 式 : y = > x / y x 就 是 我 们 的 被 开 方 数 , 我 们 把 他 换 成 a , 把 换 成 x 变 量 x = > a / x y=\sqrt{x}\\ y^2 = x\\ y=\frac{x}{y}\\ 也就是以下变化式:\\ y=>x/y\\ x就是我们的被开方数,我们把他换成a,把换成x变量\\ x=>a/x\\ y=x y2=xy=yxy=>x/yxa,xx=>a/x
求不动点的几何意义其实就是求y=a/x和y=x两个函数的相交点,下图是当a=2时y=a/x的函数和y=x函数曲线图,可以看到两个函数的相交点刚好是1.414,也就是根2的值。
在这里插入图片描述
另外不动点还可以理解为求x=a/x方程的解,也就是方程x-a/x=0的根。如果我们设g(x)=x-a/x,也就是求g(x)=0时的x值,几何意义就是函数g(x)与x轴的焦点,下图为g(x)的曲线。
在这里插入图片描述
同样的立方根和四次方根的变换式,我们就能得到
x = > a / x 2 x = > a / x 3 x=>a/x^2\\ x=>a/x^3\\ x=>a/x2x=>a/x3
我们用同样的方式看他们两个的函数图形,与y=x的相交点是1.26和1.189,是2的立方根和四次方根。
在这里插入图片描述
但是为什么我们不能直接用这个变换找到不动点呢?因为这个迭代是不收敛的,也就是说,收敛是集合的概念,也就是下面的数列不收敛的。
{ f ( x ) , f ( f ( x ) ) , f ( f ( f ( x ) ) ) , f ( f ( f ( f ( x ) ) ) ) , f ( f ( f ( f ( f ( x ) ) ) ) ) , . . . . . . . } 我 们 用 x i 简 化 数 列 { f ( x 1 ) , f ( x 2 ) , f ( x 3 ) , f ( x 4 ) , f ( x 5 ) , f ( x 6 ) , . . . . . . . , f ( x n ) } 我 们 只 要 证 明 ∣ f ( x 1 ) − f ( x 2 ) ∣ < ∣ f ( x 2 ) − f ( x 3 ) ∣ ∣ f ( x 2 ) − f ( x 3 ) ∣ < ∣ f ( x 3 ) − f ( x 4 ) ∣ ∣ f ( x 3 ) − f ( x 4 ) ∣ < ∣ f ( x 4 ) − f ( x 5 ) ∣ . . . . ∣ f ( x n − 1 ) − f ( x n ) ∣ < ∣ f ( x n ) − f ( x n + 1 ) ∣ 就 能 证 明 数 列 是 收 敛 的 , 但 是 f ( x ) = a / x 的 这 个 函 数 ∣ f ( x n − 1 ) − f ( x n ) ∣ = ∣ f ( x n ) − f ( x n + 1 ) ∣ 因 此 它 是 不 收 敛 的 , 也 就 是 发 散 的 。 \{f(x),f(f(x)),f(f(f(x))),f(f(f(f(x)))),f(f(f(f(f(x))))),.......\}\\ 我们用x_i简化数列\\ \{f(x_1),f(x_2),f(x_3),f(x_4),f(x_5),f(x_6),.......,f(x_n)\}\\ 我们只要证明\\ |f(x_1)-f(x_2)|<|f(x_2)-f(x_3)|\\ |f(x_2)-f(x_3)|<|f(x_3)-f(x_4)|\\ |f(x_3)-f(x_4)|<|f(x_4)-f(x_5)|\\ ....\\ |f(x_{n-1})-f(x_{n})|<|f(x_n)-f(x_{n+1})|\\ 就能证明数列是收敛的,但是f(x)=a/x的这个函数\\ |f(x_{n-1})-f(x_{n})|=|f(x_n)-f(x_{n+1})|\\ 因此它是不收敛的,也就是发散的。 {f(x),f(f(x)),f(f(f(x))),f(f(f(f(x)))),f(f(f(f(f(x))))),.......}xi{f(x1),f(x2),f(x3),f(x4),f(x5),f(x6),.......,f(xn)}f(x1)f(x2)<f(x2)f(x3)f(x2)f(x3)<f(x3)f(x4)f(x3)f(x4)<f(x4)f(x5)....f(xn1)f(xn)<f(xn)f(xn+1)f(x)=a/xf(xn1)f(xn)=f(xn)f(xn+1)
现在我们按照题目整理过程

#lang racket


(define (fixed-point f first-guess)
  (define (close-enough? v1 v2)
    (< (abs (- v1 v2)) 0.00001))
  (define (convergence? v0 v1 v2)
     (>= (/ (abs (- v1 v2)) (abs (- v0 v1))) 0.999999))
  (define (try guess)
    (let ((next (f guess)))
      (if (or (close-enough? guess next) (convergence? guess next (f next))) 
           (convergence? guess next (f next))
          (try next ))))
  (try first-guess))

(define (compose f g)
  (lambda (x)
    (f (g x))))

(define (repeated f n)
  (if (= n 1) 
       f 
      (compose f (repeated f (- n 1)))))

(define (average x y) (/ (+ x y) 2))

(define (average-damp f)
  (lambda (x) (average x (f x))))

(define (average-damp-n-times f n)
  ((repeated average-damp n) f))

(define (expt x n)
  (if (= n 1) x 
  ((repeated (lambda(y) (* y x)) (- n 1)) x)))

(define (n-th-root x n damp-n)
  (fixed-point (average-damp-n-times 
                (lambda (y) (/ x (expt y (- n 1)))) 
                damp-n) 1.0))
(define (find-damp-n x n)
  (define (iter m)
    (if (n-th-root x n m)
        (iter (+ m 1))
        (begin
          (display n)
          (display "-th-root,need ")
          (display m)
          (display " times average damp")
               m )))
  (iter 1))
        
(find-damp-n 2 4)
(find-damp-n 2 5)
(find-damp-n 2 6)
(find-damp-n 2 7)
(find-damp-n 2 8)
(find-damp-n 2 9)
(find-damp-n 2 10)
(find-damp-n 2 11)

运行结果

4-th-root,need 2 times average damp2
5-th-root,need 2 times average damp2
6-th-root,need 2 times average damp2
7-th-root,need 2 times average damp2
8-th-root,need 3 times average damp3
9-th-root,need 3 times average damp3
10-th-root,need 3 times average damp3
11-th-root,need 3 times average damp3

根据结果可以推测,应该是需要log(n)次平均阻尼才能收敛
4次方根,需进行2次平均阻尼才能收敛
5次方根,需进行2次平均阻尼才能收敛
6次方根,需进行2次平均阻尼才能收敛
7次方根,需进行2次平均阻尼才能收敛
8次方根,需进行3次平均阻尼才能收敛
9次方根,需进行3次平均阻尼才能收敛
10次方根,需进行3次平均阻尼才能收敛
11次方根,需进行3次平均阻尼才能收敛

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值