Working with matrices¶
Simple checks on matrices¶
Let us create a simple matrix:
A = magic(3);
Checking whether the matrix is a square matrix:
spx.matrix.is_square(A)
Checking if it is symmetric:
spx.matrix.is_symmetric(A)
Checking if it is a Hermitian matrix:
spx.matrix.is_hermitian(A)
Checking if it is a positive definite matrix:
spx.matrix.is_positive_definite(A)
Matrix utilities¶
spx.matrix.off_diagonal_elements
returns
the off-diagonal elements of a given matrix
in a column vector arranged in column major order.
A = magic(3);
spx.matrix.off_diagonal_elements(A)'
ans =
3 4 1 9 6 7
spx.matrix.off_diagonal_matrix
zeros out
the diagonal entries of a matrix and
returns the modified matrix:
spx.matrix.off_diagonal_matrix(A)
ans =
0 1 6
3 0 7
4 9 0
spx.matrix.off_diag_upper_tri_matrix
returns
the off diagonal part of the upper triangular part
of a given matrix and zeros out the remaining entries:
spx.matrix.off_diag_upper_tri_matrix(A)
ans =
0 1 6
0 0 7
0 0 0
spx.matrix.off_diag_upper_tri_elements
returns the
elements in the off diagonal part of the upper
triangular part of a matrix arranged in column major
order:
spx.matrix.off_diag_upper_tri_elements(A)'
ans =
1 6 7
spx.matrix.nonzero_density
returns the ratio
of total number of non-zero elements in a matrix
with the size of the matrix:
spx.matrix.nonzero_density(A)
ans = 1
diagonally dominant matrices¶
Checking whether a matrix is diagonally dominant:
spx.matrix.is_diagonally_dominant(A)
Making a matrix diagonally dominant:
A = spx.matrix.make_diagonally_dominant(A)
Both these functions have an extra parameter
named strict
. When set to true, strict
diagonal dominance is considered / enforced.