X-Git-Url: http://gitweb.michael.orlitzky.com/?a=blobdiff_plain;f=src%2FLinear%2FQR.hs;h=4c1c56446f836c348b1b7e65ad138fb650dd9ed3;hb=5c0366134e8e1c12772cb685ac14b70d22d6ffed;hp=043b17256e6af341dbe1fe3a34f18dff649a20a7;hpb=2a2db25a6667b2b078390e9ddfadad8c367839ee;p=numerical-analysis.git diff --git a/src/Linear/QR.hs b/src/Linear/QR.hs index 043b172..4c1c564 100644 --- a/src/Linear/QR.hs +++ b/src/Linear/QR.hs @@ -140,7 +140,8 @@ givens_rotator i j xi xj = -- True -- qr :: forall m n a. (Arity m, Arity n, Eq a, Algebraic.C a, Ring.C a) - => Mat m n a -> (Mat m m a, Mat m n a) + => Mat (S m) (S n) a + -> (Mat (S m) (S m) a, Mat (S m) (S n) a) qr matrix = ifoldl col_function initial_qr columns where @@ -162,7 +163,7 @@ qr matrix = | otherwise = (q*rotator, (transpose rotator)*r) where y = r !!! (idx, col_idx) - rotator :: Mat m m a + rotator :: Mat (S m) (S m) a rotator = givens_rotator col_idx idx (r !!! (col_idx, col_idx)) y @@ -231,7 +232,7 @@ eigenvalues iterations matrix -- Examples: -- -- >>> import Linear.Matrix ( Col2, Col3, Mat2, Mat3 ) --- >>> import Linear.Matrix ( column', frobenius_norm, fromList ) +-- >>> import Linear.Matrix ( column, frobenius_norm, fromList ) -- >>> import Linear.Matrix ( identity_matrix, vec3d ) -- >>> import Normed ( Normed(..) ) -- @@ -253,11 +254,11 @@ eigenvalues iterations matrix -- >>> let v1 = (1 / (norm v1') :: Double) *> v1' -- >>> let v2' = vec3d (-4, -2, 5) :: Col3 Double -- >>> let v2 = (1 / (norm v2') :: Double) *> v2' --- >>> frobenius_norm ((column' vecs 0) - v0) < 1e-12 +-- >>> frobenius_norm ((column vecs 0) - v0) < 1e-12 -- True --- >>> frobenius_norm ((column' vecs 1) - v1) < 1e-12 +-- >>> frobenius_norm ((column vecs 1) - v1) < 1e-12 -- True --- >>> frobenius_norm ((column' vecs 2) - v2) < 1e-12 +-- >>> frobenius_norm ((column vecs 2) - v2) < 1e-12 -- True -- eigenvectors_symmetric :: forall m a. (Arity m, Algebraic.C a, Eq a)