A real matrix is symmetric positive definite if it is symmetric ( is equal to its transpose, ) and
By making particular choices of in this definition we can derive the inequalities
Satisfying these inequalities is not sufficient for positive definiteness. For example, the matrix
satisfies all the inequalities but for .
A sufficient condition for a symmetric matrix to be positive definite is that it has positive diagonal elements and is diagonally dominant, that is, for all .
The definition requires the positivity of the quadratic form . Sometimes this condition can be confirmed from the definition of . For example, if and has linearly independent columns then for . Generally, though, this condition is not easy to check.
Two equivalent conditions to being symmetric positive definite are
- every leading principal minor , where the submatrix comprises the intersection of rows and columns to , is positive,
- the eigenvalues of are all positive.
The first condition implies, in particular, that , which also follows from the second condition since the determinant is the product of the eigenvalues.
Here are some other important properties of symmetric positive definite matrices.
- is positive definite.
- has a unique symmetric positive definite square root , where a square root is a matrix such that .
- has a unique Cholesky factorization , where is upper triangular with positive diagonal elements.
Sources of positive definite matrices include statistics, since nonsingular correlation matrices and covariance matrices are symmetric positive definite, and finite element and finite difference discretizations of differential equations.
Examples of symmetric positive definite matrices, of which we display only the instances, are the Hilbert matrix
the Pascal matrix
and minus the second difference matrix, which is the tridiagonal matrix
All three of these matrices have the property that is non-decreasing along the diagonals. However, if is positive definite then so is for any permutation matrix , so any symmetric reordering of the row or columns is possible without changing the definiteness.
A symmetric positive definite matrix that was often used as a test matrix in the early days of digital computing is the Wilson matrix
What is the best way to test numerically whether a symmetric matrix is positive definite? Computing the eigenvalues and checking their positivity is reliable, but slow. The fastest method is to attempt to compute a Cholesky factorization and declare the matrix positivite definite if the factorization succeeds. This is a reliable test even in floating-point arithmetic. If the matrix is not positive definite the factorization typically breaks down in the early stages so and gives a quick negative answer.
Symmetric block matrices
often appear in applications. If is nonsingular then we can write
which shows that is congruent to a block diagonal matrix, which is positive definite when its diagonal blocks are. It follows that is positive definite if and only if both and are positive definite. The matrix is called the Schur complement of in .
We mention two determinantal inequalities. If the block matrix above is positive definite then (Fischer’s inequality). Applying this inequality recursively gives Hadamard’s inequality for a symmetric positive definite :
with equality if and only if is diagonal.
Finally, we note that if for all , so that the quadratic form is allowed to be zero, then the symmetric matrix is called symmetric positive semidefinite. Some, but not all, of the properties above generalize in a natural way. An important difference is that semidefinitness is equivalent to all principal minors, of which there are , being nonnegative; it is not enough to check the leading principal minors. Consider, as an example, the matrix
which has leading principal minors , , and and a negative eigenvalue.
A complex matrix is Hermitian positive definite if it is Hermitian ( is equal to its conjugate transpose, ) and for all nonzero vectors . Everything we have said above generalizes to the complex case.
A=np.array([[1,1,2],[2,2,3],[1,3,1]])
B=A.dot(A.T)
print("Symmetric positive definite Matrix B")
print(B)
x=np.array([1,2,3])
print("x.T A x >0")
print(x.T.dot(B.dot(x)))
eigva,eigv=np.linalg.eig(B)
print("eigen values")
print(eigva)
print("eigen vectors")
print(eigv)
Symmetric positive definite Matrix B [[ 6 10 6] [10 17 11] [ 6 11 11]] x.T A x >0 381 eigen values [30.82496889 0.04141054 3.13362056] eigen vectors [[-0.42376703 -0.82534407 -0.37313358] [-0.73151695 0.55478298 -0.39635691] [-0.53413898 -0.10499055 0.83885191]]
Comments
Post a Comment