You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
35 lines
710 B
35 lines
710 B
(define (square x) |
|
(* x x)) |
|
|
|
(define tolerance 0.00001) |
|
|
|
(define (fixed-point f first-guess) |
|
(define (close-enough? v1 v2) |
|
(< (abs (- v1 v2)) |
|
tolerance)) |
|
(define (try guess) |
|
(let ((next (f guess))) |
|
(if (close-enough? guess next) |
|
next |
|
(try next)))) |
|
(try first-guess)) |
|
|
|
(define dx 0.00001) |
|
|
|
(define (deriv g) |
|
(lambda (x) (/ (- (g (+ x dx)) (g x)) dx))) |
|
|
|
(define (cube x) |
|
(* x x x)) |
|
|
|
(define (newton-transform g) |
|
(lambda (x) (- x (/ (g x) ((deriv g) x))))) |
|
|
|
(define (newtons-method g guess) |
|
(fixed-point (newton-transform g) guess)) |
|
|
|
(define (cubic a b c) |
|
(lambda (x) (+ (cube x) |
|
(* a (square x)) |
|
(* b x) |
|
c)))
|
|
|