Advertisement
LosPollos

Newton polinomial

Jul 16th, 2017
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Scheme 1.60 KB | None | 0 0
  1. (define (fact n)
  2.     (if (eq? n 0)
  3.         1
  4.         (* (fact (- n 1)) n)
  5.     )
  6. )
  7.  
  8. (define (delta s y)
  9.     (if (eq? s 0)    0)
  10.     (if (eq? s 1)
  11.         (- (car (cdr y)) (car y))
  12.         (- (delta (- s 1) (cdr y))
  13.            (delta (- s 1) y))
  14.     )
  15. )
  16.  
  17. (define (NewtonPolinomial sX sY lastX n x)
  18.     ;; When called need increment n by 1.
  19.     (define (compute_q q n)
  20.         (if (eq? n 0)
  21.             q
  22.             (* (- q n) (compute_q q (- n 1)))
  23.         )
  24.     )
  25.    
  26.     ;; Main function.
  27.     (define (NP sX sY lastX n h q i)
  28.         (cond
  29.             ((or (and (eq? (car sX) lastX)
  30.                       (eq? (cdr sX) '()))
  31.                  (eq? i 0))     (NP sX sY lastX n h q (+ i 1)))
  32.             ((eq? i 1)       (+ (car sY) (* q (delta i sY))))
  33.             (#t              (+ (* (/ (compute_q q (+ n 1))
  34.                                       (fact (+ i 1)))
  35.                                    (delta i sY))
  36.                                 (NP (cdr sX) sY lastX (- n 1) h q (+ i 1))))
  37.         )
  38.     )
  39.  
  40.     (let*
  41.         (
  42.             (h (/ (- lastX (car sX)) n))
  43.             (q (/ (- x (car sX)) h))
  44.         )
  45.  
  46.         (NP sX sY lastX n h q 0)
  47.     )
  48. )
  49.  
  50. ;; (NewtonPolinomial sX sY lastX n)  
  51.  
  52. (define (bust csX csY currX maxX n)
  53.     (display currX)
  54.     (display " ")
  55.     (display (NewtonPolinomial csX csY maxX n currX))
  56.     (display " ")
  57.  
  58.     (cond
  59.         ((> currX maxX)  0)
  60.         (#t              (bust csX csY (+ currX 0.2) maxX 11))
  61.     )
  62. )
  63.  
  64. (let
  65.     (
  66.         (sX '(1 2 3 4 5 6 7))
  67.         (sY '(2 3 4 5 6 7 8))
  68.     )
  69.  
  70.     (bust sX sY 0 15 11)
  71. )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement