The BidMatrixD
class stores and operates on bidiagoanl matrices.
The BidMatrixD
class stores and operates on bidiagoanl matrices.
The elements are of type of Double. A matrix is stored as two vectors:
the diagonal vector and the sup-diagonal vector.
The Bidiagonal
class is used to creates a bidiagonal matrix for matrix 'a'.
The Bidiagonal
class is used to creates a bidiagonal matrix for matrix 'a'.
It uses the Householder Bidiagonalization Algorithm to compute orthogonal
matrices 'u' and 'v' such that
u.t * a * v = b a = u * b * v.t
where matrix 'b' is bidiagonal, i.e, it will only have non-zero elements on its main diagonal and its super-diagonal (the diagonal above the main).
The Eigen
trait defines constants used by classes and objects the Eigen group.
The Eigenvalue
class is used to find the eigenvalues of an 'n' by 'n' matrix
'a' using an iterative technique that applies similarity transformations to
convert 'a' into an upper triangular matrix, so that the eigenvalues appear
along the diagonal.
The Eigenvalue
class is used to find the eigenvalues of an 'n' by 'n' matrix
'a' using an iterative technique that applies similarity transformations to
convert 'a' into an upper triangular matrix, so that the eigenvalues appear
along the diagonal. To improve performance, the 'a' matrix is first reduced
to Hessenburg form. During the iterative steps, a shifted QR decomposition
is performed.
Caveats: (i) it will not handle eigenvalues that are complex numbers,
(ii) it uses a simple shifting strategy that may slow convergence.
The EigenvalueSym
class is used to find the eigenvalues of an 'n' by 'n'
symmetric matrix 'a' using an iterative technique, the Symmetric QR Algorithm.
The EigenvalueSym
class is used to find the eigenvalues of an 'n' by 'n'
symmetric matrix 'a' using an iterative technique, the Symmetric QR Algorithm.
Algorithm 8.3.3 in Matrix Computations. Caveats: (i) it will not handle eigenvalues that are complex numbers, (ii) it uses a simple shifting strategy that may slow convergence.
The Eigenvector
class is used to find the eigenvectors of an 'n' by 'n' matrix
'a' by solving equations of the form
The Eigenvector
class is used to find the eigenvectors of an 'n' by 'n' matrix
'a' by solving equations of the form
(a - eI)v = 0
where 'e' is the eigenvalue and 'v' is the eigenvector. Place the eigenvectors in a matrix column-wise.
The Fac_Cholesky
class provides methods to factor an 'n-by-n' symmetric,
positive definite matrix 'a' into the product of two matrices:
The Fac_Cholesky
class provides methods to factor an 'n-by-n' symmetric,
positive definite matrix 'a' into the product of two matrices:
'l' - an 'n-by-n' left lower triangular matrix 'l.t' - an 'n-by-n' right upper triangular matrix - transpose of 'l'
such that 'a = l * l.t'.
The Fac_QR
class provides methods to factor an 'm-by-n' matrix 'a' into the
product of two matrices:
The Fac_QR
class provides methods to factor an 'm-by-n' matrix 'a' into the
product of two matrices:
'q' - an 'm-by-n' orthogonal matrix and 'r' - an 'n-by-n' right upper triangular matrix
such that 'a = q * r'. Note, orthogonal means that 'q.t * q = I'.
http://en.wikipedia.org/wiki/Gram–Schmidt_process (stabilized Gram–Schmidt orthonormalization)
http://www.stat.wisc.edu/~larget/math496/qr.html
The Factorization
trait the template for classes implementing various forms
of matrix factorization.
The Hessenburg
class is used to reduce, via similarity transformations, an
'n' by 'n' matrix 'a' to Hessenburg form 'h', where all elements two below the
main diagonal are zero (or close to zero).
The Hessenburg
class is used to reduce, via similarity transformations, an
'n' by 'n' matrix 'a' to Hessenburg form 'h', where all elements two below the
main diagonal are zero (or close to zero). Note, similarity transformations
do not changes the eigenvalues.
The HouseholderT
class performs a Householder Tridiagonalization on a
symmetric matrix.
The HouseholderT
class performs a Householder Tridiagonalization on a
symmetric matrix.
Algorithm 8.3.1 in Matrix Computations.
The Matric
trait specifies the operations to be defined by three concrete
implemeting classes: MatrixC, SparseMatrixC and SymTriMatrixC.
The Matrii
trait specifies the operations to be defined by four concrete
implemeting classes: MatrixI.
The Matrir
trait specifies the operations to be defined by three concrete
implemeting classes: MatrixR, SparseMatrixR and SymTriMatrixR.
The Matrix
trait specifies the operations to be defined by four concrete
implemeting classes: MatrixD, ParMatrixD, SparseMatrixD and SymTriMatrixD.
The MatrixC
class stores and operates on Numeric Matrices of type Complex.
The MatrixC
class stores and operates on Numeric Matrices of type Complex.
This class follows the MatrixN framework and is provided for efficieny.
The MatrixD
class stores and operates on Numeric Matrices of type Double.
The MatrixD
class stores and operates on Numeric Matrices of type Double.
This class follows the MatrixN framework and is provided for efficieny.
The MatrixI
class stores and operates on Numeric Matrices of type Int.
The MatrixI
class stores and operates on Numeric Matrices of type Int.
This class follows the MatrixN framework and is provided for efficieny.
The MatrixR
class stores and operates on Numeric Matrices of type Rational.
The MatrixR
class stores and operates on Numeric Matrices of type Rational.
This class follows the MatrixN framework and is provided for efficieny.
The Rotation
class is a data structure for holding the results of rotating
by angle a.
The Rotation
class is a data structure for holding the results of rotating
by angle a.
the cos (a)
the sin (a)
the nonzero element of the rotated vector
The SVD
class is used to compute the Singlar Value Decomposition (SVD) of
matrix 'aa' using the Golub-Kahan-Reinsch Algorithm.
The SVD
class is used to compute the Singlar Value Decomposition (SVD) of
matrix 'aa' using the Golub-Kahan-Reinsch Algorithm.
Decompose matrix 'aa' into the product of three matrices:
aa = uu * a * vv.t
where 'uu' is a matrix of orthogonal eigenvectors of 'aa * aa.t' (LEFT SINGULAR VECTORS) 'vv' is a matrix of orthogonal eigenvectors of 'aa.t * aa' (RIGHT SINGULAR VECTORS) and 'a' is a diagonal matrix of square roots of eigenvalues of 'aa.t * aa' &' aa * aa.t' (SINGULAR VALUES).
The SVD2
class performs Single Value Decompositions (SVDs) using the Eigen
class.
The SVD2
class performs Single Value Decompositions (SVDs) using the Eigen
class. For a direct, more robust algorithm that is less sensitive to round-off errors,
the SVD
class.
The SVD3
class is used to solve Singular Value Decomposition for bidiagonal matrices.
The SVD3
class is used to solve Singular Value Decomposition for bidiagonal matrices.
It computes the singular values and, optionally, the right and/or left singular vectors from the singular value decomposition (SVD) of a real n-by-n (upper) bidiagonal matrix B using the implicit zero-shift QR algorithm. The SVD of B has the form
B = Q * S * P.t
where S is the diagonal matrix of singular values, Q is an orthogonal matrix of left singular vectors, and P is an orthogonal matrix of right singular vectors. If left singular vectors are requested, this subroutine actually returns U*Q instead of Q, and, if right singular vectors are requested, this subroutine returns P.t * VT instead of P.T, for given real input matrices U and VT. When U and VT are the orthogonal matrices that reduce a general matrix A to bidiagonal form: A = U*B*VT, as computed by DGEBRD, then
A = (U*Q) * S * (P.t*VT)
is the SVD of the general matrix A. A positve tolerance (TOL) gives relative accurracy; for absolute accurracy negate it.
LAPACK SUBROUTINE DBDSQR (UPLO, N, NCVT, NRU, NCC, D, E, VT, LDVT, U, LDU, C, LDC, WORK, INFO)
fortranwiki.org/fortran/show/svd
"Accurate singular values and differential qd algorithms," B. Parlett and V. Fernando, Technical Report CPAM-554, Mathematics Department, University of California at Berkeley, July 1992
"Computing Small Singular Values of Bidiagonal Matrices With Guaranteed High Relative Accuracy," J. Demmel and W. Kahan, LAPACK Working Note #3 (or SIAM J. Sci. Statist. Comput. 11:5, pp. 873-912, Sept 1990)
The SVD_2by2
is used to solve Singular Value Decomposition for
bidiagonal 2-by-2 matrices.
The SVD_2by2
is used to solve Singular Value Decomposition for
bidiagonal 2-by-2 matrices.
[ f g ] [ 0 h ]
fortranwiki.org/fortran/show/svd
The SVDDecomp
trait specifies the major methods for Singular Value
Decomposition implementations.
The SparseMatrixC
class stores and operates on Matrices of Complex
numbers.
The SparseMatrixC
class stores and operates on Matrices of Complex
numbers.
Rather than storing the matrix as a 2 dimensional array, it is stored as an array
of sorted-linked-maps, which record all the non-zero values for each particular
row, along with their j-index as (j, v) pairs.
Note: _npp versions of methods are not appropriate for sparse matrices
(i.e., always use partial pivoting).
The SparseMatrixD
class stores and operates on Matrices of Doubles.
The SparseMatrixD
class stores and operates on Matrices of Doubles. Rather
than storing the matrix as a 2 dimensional array, it is stored as an array
of sorted-linked-maps, which record all the non-zero values for each particular
row, along with their j-index as (j, v) pairs.
Note: _npp versions of methods are not appropriate for sparse matrices
(i.e., always use partial pivoting).
The SymTriMatrixC
class stores and operates on symmetric tridiagonal matrices.
The SymTriMatrixC
class stores and operates on symmetric tridiagonal matrices.
The elements are of type of Complex. A matrix is stored as two vectors:
the diagonal vector and the sub-diagonal vector.
The SymTriMatrixD
class stores and operates on symmetric tridiagonal matrices.
The SymTriMatrixD
class stores and operates on symmetric tridiagonal matrices.
The elements are of type of Double. A matrix is stored as two vectors:
the diagonal vector and the sub-diagonal vector.
The VectorC
class stores and operates on Numeric Vectors of base type Complex
.
The VectorC
class stores and operates on Numeric Vectors of base type Complex
.
It follows the framework of VectorN [T] and is provided for performance.
The VectorD
class stores and operates on Numeric Vectors of base type Double.
The VectorD
class stores and operates on Numeric Vectors of base type Double.
It follows the framework of VectorN [T] and is provided for performance.
The VectorI
class stores and operates on Numeric Vectors of base type Int.
The VectorI
class stores and operates on Numeric Vectors of base type Int.
It follows the framework of VectorN [T] and is provided for performance.
The VectorR
class stores and operates on Numeric Vectors of base type Rational.
The VectorR
class stores and operates on Numeric Vectors of base type Rational.
It follows the framework of VectorN [T] and is provided for performance.
The BidMatrixDTest
object is used to test the BidMatrixD
class.
The BidiagonalTest
object is used to test the Bidiagonal
class.
The BidiagonalTest
object is used to test the Bidiagonal
class.
bidiagonalization answer = [ (21.8, -.613), (12.8, 2.24, 0.) ]
books.google.com/books?isbn=0801854148 (p. 252)
The EigenTest
object is used to test the all the classes used in computing
Eigenvalues and Eigenvectors for the non-symmetric/general case.
The Eigen_2by2
object provides simple methods for computing eigenvalues and
eigenvectors for 2-by-2 matrices.
The Eigen_2by2Test
is used to test the Eigen_2by2
object.
The Fac_CholeskyTest
object is used to test the Fac_Cholesky
class.
The Fac_CholeskyTest
object is used to test the Fac_Cholesky
class.
ece.uwaterloo.ca/~dwharder/NumericalAnalysis/04LinearAlgebra/cholesky
The Fac_QRTest
object is used to test the Fac_QR
class.
The Fac_QRTest
object is used to test the Fac_QR
class.
http://www.ee.ucla.edu/~vandenbe/103/lectures/qr.pdf
The Givens
objects has methods for determinng values 'c = cos(theta)' and
's = sin(theta) for Givens rotation matrices as well as methods for applying
Givens rotations.
The GivensTest
object tests the Givens
object by using two rotations to
turn matrix 'a' into an upper triangular matrix, clearing positions (1, 0)
and (2, 1).
The GivensTest
object tests the Givens
object by using two rotations to
turn matrix 'a' into an upper triangular matrix, clearing positions (1, 0)
and (2, 1). A third rotation clears position (0, 1) but also puts a non-zero
value at (1, 0).
http://en.wikipedia.org/wiki/Givens_rotation
The Householder
object provides methods to compute Householder vectors and
reflector matrices.
The HouseholderTest
object is used to test Householder
object.
The HouseholderTest
object is used to test Householder
object.
www.math.siu.edu/matlab/tutorial4.pdf
The MatrixC companion object provides operations for MatrixC that don't require 'this' (like static methods in Java).
The MatrixC companion object provides operations for MatrixC that don't require 'this' (like static methods in Java). Typically used to form matrices from vectors.
The MatrixCTest
object tests the operations provided by MatrixC
class.
The MatrixD
companion object provides operations for MatrixD
that don't require
'this' (like static methods in Java).
The MatrixD
companion object provides operations for MatrixD
that don't require
'this' (like static methods in Java). It provides factory methods for building
matrices from files or vectors.
The MatrixDTest
object tests the operations provided by MatrixD
class.
The MatrixI
companion object provides operations for MatrixI
that don't require
'this' (like static methods in Java).
The MatrixI
companion object provides operations for MatrixI
that don't require
'this' (like static methods in Java). It provides factory methods for building
matrices from files or vectors.
The MatrixITest
object tests the operations provided by MatrixI
class.
The MatrixR companion object provides operations for MatrixR that don't require 'this' (like static methods in Java).
The MatrixR companion object provides operations for MatrixR that don't require 'this' (like static methods in Java). Typically used to form matrices from vectors.
The MatrixRTest
object tests the operations provided by MatrixR
class.
The Rotation
object provides methods for rotating in a plane.
The Rotation
object provides methods for rotating in a plane.
[ cs sn ] . [ f ] = [ r ] where cs2 + sn2 = 1 [ -sn cs ] [ g ] [ 0 ]
The RotationTest
object is used to test the Rotation
object,
The SVD
companion object.
The SVD2Test
object is used to test the SVD2
class.
The SVD2Test
object is used to test the SVD2
class.
www.ling.ohio-state.edu/~kbaker/pubs/Singular_Value_Decomposition_Tutorial.pdf
The SVD2Test2
object is used to test the SVD2
class.
The SVD3Test
is used to test the SVD3
class.
The SVD3Test
is used to test the SVD3
class.
Answer: singular values = (2.28825, 0.87403)
http://comnuan.com/cmnn01004/
The SVD3Test2
is used to test the SVD3
class.
The SVD3Test2
is used to test the SVD3
class.
Answer: singular values = (3.82983, 1.91368, 0.81866)
The SVDTest
object is used to test the SVD
class starting with a matrix that
is already bidiagonalized and gives eigenvalues of 28, 18 for the first step.
The SVDTest
object is used to test the SVD
class starting with a matrix that
is already bidiagonalized and gives eigenvalues of 28, 18 for the first step.
http://ocw.mit.edu/ans7870/18/18.06/javademo/SVD/
The SVDTest2
is used to test the SVD
class.
The SVDTest2
is used to test the SVD
class.
Answer: singular values = (3.82983, 1.91368, 0.81866)
The SVDTest3
object is used to test the SVD
class starting with a general
matrix.
The SVDTest3
object is used to test the SVD
class starting with a general
matrix.
www.mathstat.uottawa.ca/~phofstra/MAT2342/SVDproblems.pdf
The SVDTest4
object is used to test the SVD
companion object.
The SVD_2by2Test
is used to test the SVD_2by2
class.
The SparseMatrixC
objecxt is the companion object for the SparseMatrixC
class.
The SparseMatrixCTest
object is used to test the SparseMatrixC
class.
The SparseMatrixD
object is the companion object for the SparseMatrixD
class.
The SparseMatrixDTest
object is used to test the SparseMatrixD
class.
The SymTriMatrixCTest
object is used to test the SymTriMatrixC
class.
The SymTriMatrixDTest
object is used to test the SymTriMatrixD
class.
The SymmetricQRstep
object performs a symmetric QR step with a Wilkinson shift.
The SymmetricQRstep
object performs a symmetric QR step with a Wilkinson shift.
http://people.inf.ethz.ch/arbenz/ewp/Lnotes/chapter3.pdf (Algorithm 3.6)
Algorithm 8.3.2 in Matrix Computations.
The VectorC
object is the companion object for VectorC
class.
The VectorCTest
object tests the operations provided by VectorC
class.
The VectorD
object is the companion object for the VectorD
class.
The VectorDTest
object tests the operations provided by VectorD.
The VectorI
object is the companion object for the VectorI
class.
The VectorITest
object tests the operations provided by VectorI
.
The VectorR
object is the companion object for Vector
class.
The VectorRTest
object tests the operations provided by VectorR
class.
The linalgebra package contains classes, traits and objects for linear algebra, including vectors and matrices for real and complex numbers.