X-Git-Url: http://gitweb.michael.orlitzky.com/?a=blobdiff_plain;f=src%2FRoots%2FSimple.hs;h=6e3ff5153b20a7e6ff7589c6b2c77a1914406e02;hb=e73e40c515938df4de629dbc88463c5d88bca7c8;hp=f9b36fad6578733fe8cad0308e573a77aa37640b;hpb=e15cc4256054bfaa60cd7ed167c0448957c85ed2;p=numerical-analysis.git diff --git a/src/Roots/Simple.hs b/src/Roots/Simple.hs index f9b36fa..6e3ff51 100644 --- a/src/Roots/Simple.hs +++ b/src/Roots/Simple.hs @@ -11,7 +11,7 @@ where import Data.List (find) -import Vector +import Normed import qualified Roots.Fast as F @@ -219,7 +219,7 @@ secant_method f epsilon x0 x1 -- at x0. We delegate to the version that returns the number of -- iterations and simply discard the number of iterations. -- -fixed_point :: (Vector a, RealFrac b) +fixed_point :: (Normed a, RealFrac b) => (a -> a) -- ^ The function @f@ to iterate. -> b -- ^ The tolerance, @epsilon@. -> a -- ^ The initial value @x0@. @@ -232,7 +232,7 @@ fixed_point f epsilon x0 = -- the function @f@ with the search starting at x0 and tolerance -- @epsilon@. We delegate to the version that returns the number of -- iterations and simply discard the fixed point. -fixed_point_iteration_count :: (Vector a, RealFrac b) +fixed_point_iteration_count :: (Normed a, RealFrac b) => (a -> a) -- ^ The function @f@ to iterate. -> b -- ^ The tolerance, @epsilon@. -> a -- ^ The initial value @x0@. @@ -250,7 +250,7 @@ fixed_point_iteration_count f epsilon x0 = -- -- This is used to determine the rate of convergence. -- -fixed_point_error_ratios :: (Vector a, RealFrac b) +fixed_point_error_ratios :: (Normed a, RealFrac b) => (a -> a) -- ^ The function @f@ to iterate. -> a -- ^ The initial value @x0@. -> a -- ^ The true solution, @x_star@. @@ -260,6 +260,6 @@ 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_2 (x_star - x)) xn + en = map (\x -> norm (x_star - x)) xn en_plus_one = tail en en_exp = map (^p) en