From: Michael Orlitzky Date: Sun, 9 Dec 2012 09:22:37 +0000 (-0500) Subject: Fix an off-by-one error in Euler's method. X-Git-Url: http://gitweb.michael.orlitzky.com/?p=numerical-analysis.git;a=commitdiff_plain;h=d6f147bb46c47cc5f885b72536f5adbe6039af77 Fix an off-by-one error in Euler's method. --- diff --git a/src/ODE/IVP.hs b/src/ODE/IVP.hs index 5d715a6..233e5f8 100644 --- a/src/ODE/IVP.hs +++ b/src/ODE/IVP.hs @@ -56,6 +56,8 @@ eulers_method1 x0 y0 f h = -- >>> let yN = head $ reverse ys -- >>> abs ((exp 1) - yN) < 1/10^3 -- True +-- >>> head ys == y0 +-- True -- eulers_method :: forall a b c. (RealFrac a, RealFrac b, Integral c) => a -- ^ x0, the initial point @@ -65,7 +67,7 @@ eulers_method :: forall a b c. (RealFrac a, RealFrac b, Integral c) -> c -- ^ n, the number of intervals to use. -> [b] eulers_method x0 y0 xN f n = - go xs y0 f + y0 : go xs y0 f where xs = partition n x0 xN