#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)))