From 194f00d6448219fe1208ad59af136fbf67c863b5 Mon Sep 17 00:00:00 2001 From: Michael Orlitzky Date: Tue, 25 Sep 2012 10:25:52 -0400 Subject: [PATCH] Add Newton's method tests. --- src/Roots/Simple.hs | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/Roots/Simple.hs b/src/Roots/Simple.hs index 2689163..0b0b93d 100644 --- a/src/Roots/Simple.hs +++ b/src/Roots/Simple.hs @@ -77,6 +77,15 @@ bisect f a b epsilon = -- | The sequence x_{n} of values obtained by applying Newton's method -- on the function @f@ and initial guess @x0@. +-- +-- Examples: +-- +-- Atkinson, p. 60. +-- >>> let f x = x^6 - x - 1 +-- >>> let f' x = 6*x^5 - 1 +-- >>> tail $ take 4 $ newton_iterations f f' 2 +-- [1.6806282722513088,1.4307389882390624,1.2549709561094362] +-- newton_iterations :: (Fractional a, Ord a) => (a -> a) -- ^ The function @f@ whose root we seek -> (a -> a) -- ^ The derivative of @f@ @@ -92,6 +101,19 @@ newton_iterations f f' x0 = -- | Use Newton's method to find a root of @f@ near the initial guess -- @x0@. If your guess is bad, this will recurse forever! +-- +-- Examples: +-- +-- Atkinson, p. 60. +-- +-- >>> let f x = x^6 - x - 1 +-- >>> let f' x = 6*x^5 - 1 +-- >>> let Just root = newtons_method f f' (1/1000000) 2 +-- >>> root +-- 1.1347241385002211 +-- >>> abs (f root) < 1/100000 +-- True +-- newtons_method :: (Fractional a, Ord a) => (a -> a) -- ^ The function @f@ whose root we seek -> (a -> a) -- ^ The derivative of @f@ -- 2.43.2