X-Git-Url: http://gitweb.michael.orlitzky.com/?a=blobdiff_plain;f=src%2FLinear%2FSystem.hs;h=2d75f611de1dc85825677ce59e72fe008bdbd21d;hb=9fa2506d30661e984ff74313c3884007067387cb;hp=f49c652e494d769ed4be5e69db9d468abbef8d72;hpb=4a1589178a2928710f13e0cb18efb34ed8c0d883;p=numerical-analysis.git diff --git a/src/Linear/System.hs b/src/Linear/System.hs index f49c652..2d75f61 100644 --- a/src/Linear/System.hs +++ b/src/Linear/System.hs @@ -2,16 +2,17 @@ {-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE TypeFamilies #-} -module Linear.System +module Linear.System ( + backward_substitute, + forward_substitute ) where -import Data.Vector.Fixed (Arity, N1) +import Data.Vector.Fixed ( Arity, N1 ) +import NumericPrelude hiding ( (*), abs ) +import qualified NumericPrelude as NP ( (*) ) +import qualified Algebra.Field as Field ( C ) -import Linear.Matrix - -import NumericPrelude hiding ((*), abs) -import qualified NumericPrelude as NP ((*)) -import qualified Algebra.Field as Field +import Linear.Matrix ( Mat(..), (!!!), construct, transpose ) -- | Solve the system m' * x = b', where m' is upper-triangular. Will @@ -19,6 +20,8 @@ import qualified Algebra.Field as Field -- -- Examples: -- +-- >>> import Linear.Matrix ( Mat2, Mat3, fromList, vec2d, vec3d ) +-- -- >>> let identity = fromList [[1,0,0],[0,1,0],[0,0,1]] :: Mat3 Double -- >>> let b = vec3d (1, 2, 3::Double) -- >>> forward_substitute identity b @@ -69,6 +72,8 @@ forward_substitute m' b' = x' -- -- Examples: -- +-- >>> import Linear.Matrix ( Mat3, fromList, vec3d ) +-- -- >>> let identity = fromList [[1,0,0],[0,1,0],[0,0,1]] :: Mat3 Double -- >>> let b = vec3d (1, 2, 3::Double) -- >>> backward_substitute identity b @@ -80,8 +85,8 @@ backward_substitute :: (Field.C a, Arity m) => Mat m m a -> Mat m N1 a -> Mat m N1 a -backward_substitute m b = - forward_substitute (transpose m) b +backward_substitute m = + forward_substitute (transpose m) -- | Solve the linear system m*x = b where m is positive definite.