examples/ex-128.rkt
#lang racket
(require (planet wcy/mpost-wrapper))
(provide main)
(define (main)
  (let* ((u '5mm))
    (define (f x)
      (op- (op** x 2 ) 0.1))
    (define (my-draw x)
      (draw (scale u x)))
    (define (f-x x)
      (point x (f x)))
    (define (axes xmin xmax ymin ymax)
      (my-draw  (op-- (point xmin 0) (point xmax 0)))
      (my-draw  (op-- (point 0 ymin) (point 0 ymax))))
    (define (courbe f xmin xmax M)
      (let ((x-range (in-range xmin xmax (/ (- xmax xmin) M))))
        (my-draw (apply op-- (map f-x (stream->list x-range))))))
    (define (newton f y h M)
      (define (diff-f x)
        (op/ (op- (f (op+ x h)) (f x)) h))
      (define (newton-helper x)
        (op- x (op/ (f x) (diff-f x))))
      (for/fold ((x y)
                 (t (newton-helper y)))
          ((i (in-range M)))
        (my-draw (op-- (f-x x) (point t 0) (f-x t)))
        (values t (newton-helper x))))
    (axes -0.5 2 -0.5 4)
    (courbe f -0.5 2 100)
    (newton f 2 0.01 10)))