|
Numeric.LinearAlgebra.Array.Solve | |
|
|
|
|
Description |
Solution of general multidimensional linear and multilinear systems.
|
|
Synopsis |
|
solve :: (Compat i, Coord t) => NArray i t -> NArray i t -> NArray i t | | solveHomog :: (Compat i, Coord t) => NArray i t -> [Name] -> Either Double Int -> [NArray i t] | | solveHomog1 :: (Compat i, Coord t) => NArray i t -> [Name] -> NArray i t | | solveH :: (Compat i, Coord t) => NArray i t -> [Char] -> NArray i t | | solveP :: Tensor Double -> Tensor Double -> Name -> Tensor Double | | data ALSParam i t = ALSParam {} | | defaultParameters :: ALSParam i t | | mlSolve :: (Compat i, Coord t, Num (NArray i t), Normed (Vector t)) => ALSParam i t -> [NArray i t] -> [NArray i t] -> NArray i t -> ([NArray i t], [Double]) | | mlSolveH :: (Compat i, Coord t, Num (NArray i t), Normed (Vector t)) => ALSParam i t -> [NArray i t] -> [NArray i t] -> ([NArray i t], [Double]) | | mlSolveP :: ALSParam Variant Double -> [Tensor Double] -> [Tensor Double] -> Tensor Double -> Name -> ([Tensor Double], [Double]) | | solveFactors :: (Coord t, Random t, Compat i, Num (NArray i t), Normed (Vector t)) => Int -> ALSParam i t -> [NArray i t] -> String -> NArray i t -> ([NArray i t], [Double]) | | solveFactorsH :: (Coord t, Random t, Compat i, Num (NArray i t), Normed (Vector t)) => Int -> ALSParam i t -> [NArray i t] -> String -> ([NArray i t], [Double]) | | eps :: Double | | eqnorm :: (Coord t, Coord (Complex t), Compat i, Num (NArray i t), Normed (Vector t)) => [NArray i t] -> [NArray i t] | | infoRank :: Field t => Matrix t -> Matrix t | | solve' :: (Coord t, Compat i, Coord t1) => (Matrix t1 -> Matrix t) -> NArray i t1 -> NArray i t -> NArray i t | | solveHomog' :: (Coord t1, Compat i, Coord t) => (Matrix t -> Matrix t1) -> NArray i t -> [Name] -> Either Double Int -> [NArray i t1] | | solveHomog1' :: (Coord t1, Compat i, Coord t) => (Matrix t -> Matrix t1) -> NArray i t -> [Name] -> NArray i t1 | | solveP' :: Coord b => (Matrix Double -> Matrix b) -> NArray Variant Double -> NArray Variant Double -> Name -> NArray Variant b |
|
|
|
Linear systems
|
|
|
:: (Compat i, Coord t) | | => NArray i t | coefficients (a)
| -> NArray i t | target (b)
| -> NArray i t | result (x)
| Solution of the linear system a x = b, where a and b are
general multidimensional arrays. The structure and dimension names
of the result are inferred from the arguments.
|
|
|
|
:: (Compat i, Coord t) | | => NArray i t | coefficients (a)
| -> [Name] | desired dimensions for the result
(a subset selected from the target).
| -> Either Double Int | Left "numeric zero" (e.g. eps), Right "theoretical" rank
| -> [NArray i t] | basis for the solutions (x)
| Solution of the homogeneous linear system a x = 0, where a is a
general multidimensional array.
If the system is overconstrained we may provide the theoretical rank to get a MSE solution.
|
|
|
|
A simpler way to use solveHomog, which returns just one solution.
If the system is overconstrained it returns the MSE solution.
|
|
|
solveHomog1 for single letter index names.
|
|
|
:: Tensor Double | coefficients (a)
| -> Tensor Double | desired result (b)
| -> Name | the homogeneous dimension
| -> Tensor Double | result (x)
| Solution of the linear system a x = b, where a and b are
general multidimensional arrays, with homogeneous equality along a given index.
|
|
|
Multilinear systems
|
|
General
|
|
|
optimization parameters for alternating least squares
| Constructors | ALSParam | | nMax :: Int | maximum number of iterations
| delta :: Double | minimum relative improvement in the optimization (percent, e.g. 0.1)
| epsilon :: Double | maximum relative error. For nonhomogeneous problems it is
the reconstruction error in percent (e.g.
1E-3), and for homogeneous problems is the frobenius norm of the
expected zero structure in the right hand side.
| post :: [NArray i t] -> [NArray i t] | post-processing function after each full iteration (e.g. id)
| postk :: Int -> NArray i t -> NArray i t | post-processing function for the k-th argument (e.g. const id)
| presys :: Matrix t -> Matrix t | preprocessing function for the linear systems (eg. id, or infoRank)
|
|
|
|
|
|
nMax = 20, epsilon = 1E-3, delta = 1, post = id, postk = const id, presys = id
|
|
|
:: (Compat i, Coord t, Num (NArray i t), Normed (Vector t)) | | => ALSParam i t | optimization parameters
| -> [NArray i t] | coefficients (a), given as a list of factors.
| -> [NArray i t] | initial solution [x,y,z...]
| -> NArray i t | target (b)
| -> ([NArray i t], [Double]) | Solution and error history
| Solution of a multilinear system a x y z ... = b based on alternating least squares.
|
|
|
|
:: (Compat i, Coord t, Num (NArray i t), Normed (Vector t)) | | => ALSParam i t | optimization parameters
| -> [NArray i t] | coefficients (a), given as a list of factors.
| -> [NArray i t] | initial solution [x,y,z...]
| -> ([NArray i t], [Double]) | Solution and error history
| Solution of the homogeneous multilinear system a x y z ... = 0 based on alternating least squares.
|
|
|
|
|
|
Factorized
|
|
|
:: (Coord t, Random t, Compat i, Num (NArray i t), Normed (Vector t)) | | => Int | seed for random initialization
| -> ALSParam i t | optimization parameters
| -> [NArray i t] | source (also factorized)
| -> String | index pairs for the factors separated by spaces
| -> NArray i t | target
| -> ([NArray i t], [Double]) | solution and error history
| Given two arrays a (source) and b (target), we try to compute linear transformations x,y,z,... for each dimension, such that product [a,x,y,z,...] == b.
(We can use eqnorm for post processing, or id.)
|
|
|
|
:: (Coord t, Random t, Compat i, Num (NArray i t), Normed (Vector t)) | | => Int | seed for random initialization
| -> ALSParam i t | optimization parameters
| -> [NArray i t] | coefficient array (a), (also factorized)
| -> String | index pairs for the factors separated by spaces
| -> ([NArray i t], [Double]) | solution and error history
| Homogeneous factorized system. Given an array a,
given as a list of factors as, and a list of pairs of indices
["pi","qj", "rk", etc.], we try to compute linear transformations
x!"pi", y!"pi", z!"rk", etc. such that product [a,x,y,z,...] == 0.
|
|
|
Utilities
|
|
|
The machine precision of a Double: eps = 2.22044604925031e-16 (the value used by GNU-Octave).
|
|
|
post processing function that modifies a list of tensors so that they
have equal frobenius norm
|
|
|
debugging function (e.g. for presys), which shows rows, columns and rank of the
coefficient matrix of a linear system.
|
|
|
|
|
|
|
|
|
|
Produced by Haddock version 2.6.1 |