PasteRack.org
Paste # 34406
2015-01-29 21:02:58

Fork as a new paste.

Paste viewed 8 times.


Embed:

  1. #lang racket
  2.  
  3. ;maps (~/ (d expr) (d x)) -> ((D(x) expr) x)
  4. (define (deriv f)
  5.   (λ(x)(/ (- (f (+ x 0.0001)) (f x)) 0.0001)))
  6.  
  7. (define-syntax-rule (D (var) expr)
  8.   (deriv (λ(var) expr)))
  9.  
  10. (define-syntax (d/d stx)
  11.   (let* ([dat (syntax->datum stx)]
  12.          [expr (cadr dat)]
  13.          [var (caddr dat)])
  14.     (datum->syntax stx `((D (,var) ,expr) ,var))))
  15.  
  16. (define x 3)
  17.  
  18. (d/d (sqr x) x) ;
  19. (d/d (d/d (sqr x) x) x)
  20. (d/d (d/d (d/d (sqr x) x) x) x)

=>

6.000100000012054

1.999999987845058

0.0