文責: | @naoiwata |
---|
\(x \mapsto \frac{log 1000}{log x}\) の不動点を探索する.
(define (fixed-point f first-guess)
(define (close-enough? v1 v2)
(< (abs (- v1 v2)) tolerance))
(define (try guess)
(display guess)
(newline)
(let ((next (f guess)))
(if (close-enough? guess next)
next
(try next))))
(try first-guess))
(define (fixed-point f first-guess)
(define (close-enough? v1 v2)
(< (abs (- v1 v2)) tolerance))
(define (try guess)
(display guess)
(newline)
(let ((next (f guess)))
(if (close-enough? guess next)
next
(try next))))
(try first-guess))
(define (close-enough? x y)
(< (abs (- x y)) 0.001))
(define tolerance 0.00001)
(define (average a b)
(/ (+ a b) 2))
;; 平均緩和法を未使用
(fixed-point
(lambda (x) (/ (log 1000) (log x)))
1.5)
;; 1.5
;; 17.036620761802716
;; 2.436284152826871
;; 7.7573914048784065
;; 3.3718636013068974
;; 5.683217478018266
;; 3.97564638093712
;; 5.004940305230897
;; 4.2893976408423535
;; 4.743860707684508
;; 4.437003894526853
;; 4.6361416205906485
;; 4.503444951269147
;; 4.590350549476868
;; 4.532777517802648
;; 4.570631779772813
;; 4.545618222336422
;; 4.562092653795064
;; 4.551218723744055
;; 4.558385805707352
;; 4.553657479516671
;; 4.55677495241968
;; 4.554718702465183
;; 4.556074615314888
;; 4.555180352768613
;; 4.555770074687025
;; 4.555381152108018
;; 4.555637634081652
;; 4.555468486740348
;; 4.555580035270157
;; 4.555506470667713
;; 4.555554984963888
;; 4.5555229906097905
;; 4.555544090254035
;; 4.555530175417048
;; 4.555539351985717
;; 平均緩和法を使用
(fixed-point
(lambda (x) (average x (/ (log 1000) (log x))))
1.5)
;; 1.5
;; 9.268310380901358
;; 6.185343522487719
;; 4.988133688461795
;; 4.643254620420954
;; 4.571101497091747
;; 4.5582061760763715
;; 4.555990975858476
;; 4.555613236666653
;; 4.555548906156018
;; 4.555537952796512
;; 4.555536087870658
平均緩和法を使うことでステップ数を 35 回から 11 回に減らすことが出来た.
;; 平均緩和法を未使用
(/ (log 1000)
(log
(fixed-point
(lambda (x) (/ (log 1000) (log x)))
1.5)))
;; => 4.555533300207017
;; 平均緩和法を未使用
(/ (log 1000)
(log
(fixed-point
(lambda (x) (average x (/ (log 1000) (log x))))
1.5)))
;; => 4.555533300207017