Guest User

Untitled

a guest
May 27th, 2018
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.55 KB | None | 0 0
  1. a_n = a * r_{n − 1}
  2.  
  3. a_n = r * a_{n − 1} for every integer n ≥ 1.
  4.  
  5. #lang racket
  6. ;; a - initial value
  7. ;; r - common ratio
  8. ;; n - number of terms in the sequence
  9.  
  10.  
  11. (define py-range ; Returns the pythonic `range()`.
  12. (lambda (start stop (step 1))
  13. (cond ((>= start stop) '())
  14. (else (cons (+ (- start 1) step)
  15. (py-range (+ start step) stop step))))))
  16.  
  17. (define geometric-sequence-with-map
  18. (lambda (a r n)
  19. (let ((nth-term-geo-seq-closure ; explicite formula
  20. (lambda (k) (* a (expt r (- k 1)))))) ; for kth term
  21. (map nth-term-geo-seq-closure (py-range 1 (+ n 1))))))
  22.  
  23. (geometric-sequence-with-map 1/2 1/2 10)
  24. ;; '(1/2 1/4 1/8 1/16 1/32 1/64 1/128 1/256 1/512 1/1024)
  25.  
  26. (define (geometric-sequence a r n)
  27. (letrec ((k -1)
  28. (geo-seq (lambda (a r k)
  29. (cond ((zero? (- n k)) '())
  30. (else (cons (* a (expt r (+ k 1)))
  31. (geo-seq a r (+ k 1))))))))
  32. (geo-seq a r k)))
  33.  
  34. (geometric-sequence 1/2 1/2 10)
  35. ;; '(1/2 1/4 1/8 1/16 1/32 1/64 1/128 1/256 1/512 1/1024 1/2048)
  36.  
  37. (defun py-range (start stop &optional (step 1))
  38. (loop for x from start below stop by step
  39. collect x))
  40.  
  41. (defun geometric-sequence-with-map (a r n)
  42. (labels ((nth-term-geometric-sequence-closure (k) ; explicit formula
  43. (* a (expt r (1- k))))) ; for kth term
  44. (mapcar #'nth-term-geometric-sequence-closure (py-range 1 (1+ n)))))
  45.  
  46. (geometric-sequence-with-map 1/2 1/2 10)
  47. ;; (1/2 1/4 1/8 1/16 1/32 1/64 1/128 1/256 1/512 1/1024)
  48.  
  49. (defun geometric-sequence (a r n)
  50. (let ((last-element (* a (expt r (- n 1)))))
  51. (labels ((geo-seq (a r n &optional (acc-l (list last-element)))
  52. (cond ((zerop n) acc-l)
  53. (t (geo-seq a r (- n 1) (cons (* a (expt r (1- n)))
  54. acc-l))))))
  55. (geo-seq a r n))))
  56.  
  57. (defun geometric-sequence (a r n)
  58. (let ((k -1))
  59. (labels ((geo-seq (a r k &optional acc-l)
  60. (cond ((zerop (- n k)) acc-l)
  61. (t (geo-seq a r (1+ k) (cons (* a (expt r (1+ k)))
  62. acc-l))))))
  63. (geo-seq a r k '()))))
  64.  
  65. (defun geometric-sequence (a r n)
  66. (let ((k -1))
  67. (labels ((geo-seq (a r k)
  68. (cond ((zerop (- n k)) '())
  69. (t (cons (* a (expt r (1+ k)))
  70. (geo-seq a r (1+ k)))))))
  71. (geo-seq a r k))))
  72.  
  73. (geometric-sequence 1/2 1/2 10)
  74. ;; (1/2 1/4 1/8 1/16 1/32 1/64 1/128 1/256 1/512 1/1024 1/2048)
Add Comment
Please, Sign In to add comment