# Advanced Matrix Operations

SingularValueList[m] | the list of nonzero singular values of m |

SingularValueList[m,k] | the k largest singular values of m |

SingularValueList[{m,a}] | the generalized singular values of m with respect to a |

Norm[m,p] | the p-norm of m |

Norm[m,"Frobenius"] | the Frobenius norm of m |

Finding singular values and norms of matrices.

The *singular values* of a matrix are the square roots of the eigenvalues of , where denotes Hermitian transpose. The number of such singular values is the smaller dimension of the matrix. SingularValueList sorts the singular values from largest to smallest. Very small singular values are usually numerically meaningless. With the option setting Tolerance->t, SingularValueList drops singular values that are less than a fraction t of the largest singular value. For approximate numerical matrices, the tolerance is by default slightly greater than zero.

If you multiply the vector for each point in a unit sphere in -dimensional space by an × matrix , then you get an -dimensional ellipsoid, whose principal axes have lengths given by the singular values of .

The *2-norm* of a matrix Norm[m, 2] is the largest principal axis of the ellipsoid, equal to the largest singular value of the matrix. This is also the maximum 2-norm length of for any possible unit vector .

The *-norm* of a matrix Norm[m, p] is in general the maximum -norm length of that can be attained. The cases most often considered are , , and . Also sometimes considered is the Frobenius norm Norm[m, "Frobenius"], which is the square root of the trace of .

LUDecomposition[m] | the LU decomposition |

CholeskyDecomposition[m] | the Cholesky decomposition |

Decomposing square matrices into triangular forms.

When you create a LinearSolveFunction using LinearSolve[m], this often works by decomposing the matrix m into triangular forms, and sometimes it is useful to be able to get such forms explicitly.

*LU decomposition* effectively factors any square matrix into a product of lower- and upper-triangular matrices. *Cholesky decomposition* effectively factors any Hermitian positive-definite matrix into a product of a lower-triangular matrix and its Hermitian conjugate, which can be viewed as the analog of finding a square root of a matrix.

PseudoInverse[m] | the pseudoinverse |

QRDecomposition[m] | the QR decomposition |

SingularValueDecomposition[m] | the singular value decomposition |

SingularValueDecomposition[{m,a}] | the generalized singular value decomposition |

Orthogonal decompositions of matrices.

The standard definition for the inverse of a matrix fails if the matrix is not square or is singular. The *pseudoinverse* of a matrix can however still be defined. It is set up to minimize the sum of the squares of all entries in , where is the identity matrix. The pseudoinverse is sometimes known as the generalized inverse, or the Moore-Penrose inverse. It is particularly used for problems related to least-squares fitting.

*QR decomposition* writes any matrix as a product , where is an orthonormal matrix, denotes Hermitian transpose, and is a triangular matrix, in which all entries below the leading diagonal are zero.

*Singular value decomposition*, or *SVD*, is an underlying element in many numerical matrix algorithms. The basic idea is to write any matrix in the form , where is a matrix with the singular values of on its diagonal, and are orthonormal matrices, and is the Hermitian transpose of .

JordanDecomposition[m] | the Jordan decomposition |

SchurDecomposition[m] | the Schur decomposition |

SchurDecomposition[{m,a}] | the generalized Schur decomposition |

HessenbergDecomposition[m] | the Hessenberg decomposition |

Functions related to eigenvalue problems.

Most square matrices can be reduced to a diagonal matrix of eigenvalues by applying a matrix of their eigenvectors as a similarity transformation. But even when there are not enough eigenvectors to do this, one can still reduce a matrix to a *Jordan form* in which there are both eigenvalues and Jordan blocks on the diagonal. *Jordan decomposition* in general writes any square matrix in the form as .

Numerically more stable is the *Schur decomposition*, which writes any square matrix in the form , where is an orthonormal matrix, and is block upper-triangular. Also related is the *Hessenberg decomposition*, which writes a square matrix in the form , where is an orthonormal matrix, and can have nonzero elements down to the diagonal below the leading diagonal.