exercise-1.36-x-to-the-power-of-y-equals-1000.rkt 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. #lang racket
  2. (define (Mb-to-B n) (* n 1024 1024))
  3. (define MAX-BYTES (Mb-to-B 64))
  4. (custodian-limit-memory (current-custodian) MAX-BYTES)
  5. (define tolerance 0.0000000001)
  6. (define (fixed-point f guess)
  7. (define (close-enough? value1 value2)
  8. (< (abs (- value1 value2)) tolerance))
  9. (define (try current-guess)
  10. (display current-guess) (newline)
  11. (let
  12. ((next (f current-guess)))
  13. (if
  14. (close-enough? current-guess next)
  15. next
  16. (try next))))
  17. (try guess))
  18. (define (xx x)
  19. (/ (log 1000) (log x)))
  20. ;; defines a value
  21. (define x-power-x-is-1000
  22. (fixed-point xx 2.0))
  23. (define (average a b)
  24. (/ (+ a b) 2))
  25. (define x-power-x-is-1000-avg-damping
  26. (fixed-point
  27. (lambda (x) (average (xx x) x))
  28. 2.0))
  29. ;; prints the value
  30. x-power-x-is-1000
  31. x-power-x-is-1000-avg-damping
  32. ; 2.0
  33. ; 9.965784284662087
  34. ; 3.004472209841214
  35. ; 6.279195757507157
  36. ; 3.759850702401539
  37. ; 5.215843784925895
  38. ; 4.182207192401397
  39. ; 4.8277650983445906
  40. ; 4.387593384662677
  41. ; 4.671250085763899
  42. ; 4.481403616895052
  43. ; 4.6053657460929
  44. ; 4.5230849678718865
  45. ; 4.577114682047341
  46. ; 4.541382480151454
  47. ; 4.564903245230833
  48. ; 4.549372679303342
  49. ; 4.559606491913287
  50. ; 4.552853875788271
  51. ; 4.557305529748263
  52. ; 4.554369064436181
  53. ; 4.556305311532999
  54. ; 4.555028263573554
  55. ; 4.555870396702851
  56. ; 4.555315001192079
  57. ; 4.5556812635433275
  58. ; 4.555439715736846
  59. ; 4.555599009998291
  60. ; 4.555493957531389
  61. ; 4.555563237292884
  62. ; 4.555517548417651
  63. ; 4.555547679306398
  64. ; 4.555527808516254
  65. ; 4.555540912917957
  66. ; 4.555532270803653
  67. ; 4.555537970114198
  68. ; 4.555534211524127
  69. ; 4.555536690243655
  70. ; 4.555535055574168
  71. ; 4.5555361336081
  72. ; 4.555535422664798
  73. ; 4.5555358915186215
  74. ; 4.555535582318266
  75. ; 4.555535786230128
  76. ; 4.555535651754059
  77. ; 4.555535740438517
  78. ; 4.5555356819527715
  79. ; 4.555535720523029
  80. ; 4.555535695086664
  81. ; 4.555535711861472
  82. ; 4.555535700798798
  83. ; 4.555535708094425
  84. ; 4.555535703283096
  85. ; 4.5555357064560775
  86. ; 4.555535704363555
  87. ; 4.555535705743535
  88. ; 4.5555357048334635
  89. ; 4.5555357054336385
  90. ; 4.555535705037834
  91. ; 4.55553570529886
  92. ; 4.555535705126719
  93. ; 4.555535705240242
  94. ; ==> 62 steps
  95. ; 2.0
  96. ; 5.9828921423310435
  97. ; 4.922168721308343
  98. ; 4.628224318195455
  99. ; 4.568346513136242
  100. ; 4.5577305909237005
  101. ; 4.555909809045131
  102. ; 4.555599411610624
  103. ; 4.5555465521473675
  104. ; 4.555537551999825
  105. ; 4.555536019631145
  106. ; 4.555535758730802
  107. ; 4.555535714310077
  108. ; 4.555535706747033
  109. ; 4.555535705459354
  110. ; 4.555535705240114
  111. ; 4.555535705165376
  112. ; 4.555535705202788
  113. ; ==> 18 steps