From: Michael Orlitzky Date: Tue, 25 Sep 2012 14:25:52 +0000 (-0400) Subject: Add Newton's method tests. X-Git-Url: https://gitweb.michael.orlitzky.com/?a=commitdiff_plain;h=194f00d6448219fe1208ad59af136fbf67c863b5;p=numerical-analysis.git Add Newton's method tests. --- 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@