lapack-0.3: Numerical Linear Algebra using LAPACK

Safe Haskell None Haskell98

Numeric.LAPACK.Orthogonal

Synopsis

# Documentation

leastSquares :: (C vert, C horiz, C height, Eq height, C width, C nrhs, Floating a) => Full horiz Small height width a -> Full vert horiz height nrhs a -> Full vert horiz width nrhs a Source #

If x = leastSquares a b then x minimizes Vector.norm2 (multiply a x sub b).

Precondition: a must have full rank and height a >= width a.

minimumNorm :: (C vert, C horiz, C height, Eq height, C width, C nrhs, Floating a) => Full Small vert height width a -> Full vert horiz height nrhs a -> Full vert horiz width nrhs a Source #

The vector x with x = minimumNorm a b is the vector with minimal Vector.norm2 x that satisfies multiply a x == b.

Precondition: a must have full rank and height a <= width a.

leastSquaresMinimumNormRCond :: (C vert, C horiz, C height, Eq height, C width, C nrhs, Floating a) => RealOf a -> Full horiz vert height width a -> Full vert horiz height nrhs a -> (Int, Full vert horiz width nrhs a) Source #

If (rank,x) = leastSquaresMinimumNormRCond rcond a b then x is the vector with minimum Vector.norm2 x that minimizes Vector.norm2 (a #*| x sub b).

Matrix a can have any rank but you must specify the reciprocal condition of the rank-truncated matrix.

pseudoInverseRCond :: (C vert, C horiz, C height, Eq height, C width, Eq width, Floating a) => RealOf a -> Full vert horiz height width a -> (Int, Full horiz vert width height a) Source #

determinant :: (C sh, Floating a) => Square sh a -> a Source #

determinantAbsolute :: (C vert, C horiz, C height, C width, Floating a) => Full vert horiz height width a -> RealOf a Source #

Gramian determinant - works also for non-square matrices, but is sensitive to transposition.

determinantAbsolute a = sqrt (Herm.determinant (Herm.gramian a))

complement :: (C height, C width, Floating a) => Tall height width a -> Tall height ZeroInt a Source #

For an m-by-n-matrix a with m>=n this function computes an m-by-(m-n)-matrix b such that Matrix.multiply (adjoint b) a is a zero matrix. The function does not try to compensate a rank deficiency of a. That is, a|||b has full rank if and only if a has full rank.

For full-rank matrices you might also call this kernel or nullspace.

householder :: (C vert, C horiz, C height, C width, Floating a) => Full vert horiz height width a -> (Square height a, Full vert horiz height width a) Source #

householderTall :: (C vert, C height, C width, Floating a) => Full vert Small height width a -> (Full vert Small height width a, Upper width a) Source #