summaryrefslogtreecommitdiff
path: root/coding-exercises/1/40.rkt
blob: 8e69ab88bb143c84a496f5691afd30af04e3d3bd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#lang racket
(require "../../shared/chapter1.rkt")
(require sicp)

(define deriv (deriver 0.00001))

(define (newtons-method g guess)
  (define (newton-transform f)
    (lambda (x)
      (- x (/ (f x) ((deriv f) x)))))

  (fixed-point (newton-transform g) guess))

(define (cubic a b c)
  (lambda (x)
    (+ (cube x) (* a (square x)) (* b x) c)))

(define (cube-root a b c guess)
  (newtons-method (cubic a b c) guess))

(cube-root 1 1 1 1)