Vector
)
import qualified Data.Vector.Fixed as V (
- Fun(..),
N1,
and,
- eq,
- foldl,
fromList,
length,
map,
- maximum,
replicate,
toList,
zipWith
)
-import Data.Vector.Fixed.Internal (Arity, arity, S, Dim)
+import Data.Vector.Fixed.Internal (Arity, arity, S)
import Linear.Vector
import Normed
import qualified NumericPrelude as NP ((*))
import qualified Algebra.Algebraic as Algebraic
import Algebra.Algebraic (root)
-import qualified Algebra.Absolute as Absolute
import qualified Algebra.Additive as Additive
import qualified Algebra.Ring as Ring
-import Algebra.Absolute (abs)
-import qualified Algebra.Field as Field
import qualified Algebra.Module as Module
-import qualified Algebra.RealField as RealField
import qualified Algebra.RealRing as RealRing
import qualified Algebra.ToRational as ToRational
import qualified Algebra.Transcendental as Transcendental
=> Ring.C (Mat v w a) where
-- The first * is ring multiplication, the second is matrix
-- multiplication.
- m1 * m2 = m1 * m1
+ m1 * m2 = m1 * m2
instance (Ring.C a,
--
-- >>> import Roots.Simple
-- >>> let h = 0.5 :: Double
--- >>> let g1 (Mat (D2 (D1 x) (D1 y))) = 1.0 + h*exp(-(x^2))/(1.0 + y^2)
--- >>> let g2 (Mat (D2 (D1 x) (D1 y))) = 0.5 + h*atan(x^2 + y^2)
+-- >>> let g1 (Mat (D2 (D1 x) (D1 y))) = 1.0 + h NP.* exp(-(x^2))/(1.0 + y^2)
+-- >>> let g2 (Mat (D2 (D1 x) (D1 y))) = 0.5 + h NP.* atan(x^2 + y^2)
-- >>> let g u = vec2d ((g1 u), (g2 u))
-- >>> let u0 = vec2d (1.0, 1.0)
-- >>> let eps = 1/(10^9)
-- >>> fixed_point g eps u0
--- (1.0728549599342185,1.0820591495686167)
+-- ((1.0728549599342185),(1.0820591495686167))
--
vec2d :: (a,a) -> Mat D2 D1 a
vec2d (x,y) = Mat (D2 (D1 x) (D1 y))