X-Git-Url: http://gitweb.michael.orlitzky.com/?a=blobdiff_plain;f=src%2FRoots%2FSimple.hs;h=2906d95839c69daab27580863d8d61bb5f14ccc6;hb=5c0366134e8e1c12772cb685ac14b70d22d6ffed;hp=a5924f4658d5c6ca8d15fbba6b10c24ed446566b;hpb=ae914d13235a4582077a5cb2b1edd630d9c6ad62;p=numerical-analysis.git diff --git a/src/Roots/Simple.hs b/src/Roots/Simple.hs index a5924f4..2906d95 100644 --- a/src/Roots/Simple.hs +++ b/src/Roots/Simple.hs @@ -1,4 +1,5 @@ {-# LANGUAGE RebindableSyntax #-} +{-# LANGUAGE ScopedTypeVariables #-} -- | The Roots.Simple module contains root-finding algorithms. That -- is, procedures to (numerically) find solutions to the equation, @@ -172,7 +173,7 @@ fixed_point_iteration_count f epsilon x0 = -- -- This is used to determine the rate of convergence. -- -fixed_point_error_ratios :: (Normed a, +fixed_point_error_ratios :: forall a b. (Normed a, Additive.C a, RealField.C b, Algebraic.C b) @@ -185,7 +186,7 @@ fixed_point_error_ratios f x0 x_star p = zipWith (/) en_plus_one en_exp where xn = F.fixed_point_iterations f x0 - en = map (\x -> norm (x_star - x)) xn + en = map (\x -> norm (x_star - x)) xn :: [b] en_plus_one = tail en en_exp = map (^p) en @@ -197,6 +198,7 @@ fixed_point_error_ratios f x0 x_star p = -- 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 @@ -283,6 +285,7 @@ iterate2 f x0 x1 = -- Examples: -- -- Atkinson, p. 67. +-- -- >>> let f x = x^6 - x - 1 -- >>> take 4 $ secant_iterations f 2 1 -- [2.0,1.0,1.0161290322580645,1.190577768676638] @@ -308,6 +311,7 @@ secant_iterations f = -- Examples: -- -- Atkinson, p. 67. +-- -- >>> let f x = x^6 - x - 1 -- >>> let Just root = secant_method f (1/10^9) 2 1 -- >>> root