matrixProperties method
Returns a list of all the properties of the matrix.
The list of properties includes:
- Square Matrix
- Null Matrix
- Diagonal Matrix
- Identity Matrix
- Unitary Matrix
- Scalar Matrix
- Row Matrix
- Column Matrix
- Magic Matrix
- Full Rank Matrix
- Horizontal Matrix
- Vertical Matrix
- Upper Triangular Matrix
- Lower Triangular Matrix
- Symmetric Matrix
- Skew Symmetric Matrix
- Orthogonal Matrix
- Singular Matrix
- Non-Singular Matrix
- Nilpotent Matrix
- Involutary Matrix
- Idempotent Matrix
- Bidiagonal Matrix
- Tridiagonal Matrix
- Hermitian Matrix
- Toeplitz Matrix
- Hankel Matrix
- Sparse Matrix
- Circulant Matrix
- Vandermonde Matrix
- Permutation Matrix
- Periodic Matrix
- Positive Definite Matrix
- Negative Definite Matrix
- Derogatory Matrix
- Has Dominant Eigenvalue
- Diagonally Dominant Matrix
- Strictly Diagonally Dominant Matrix
If no specific properties apply, it will return a list containing only the 'General Matrix' property.
@returns A List<String> of all properties that apply to the matrix.
Implementation
List<String> matrixProperties() {
List<String> properties = [];
void safelyAdd(String property, bool Function() check) {
try {
if (check()) properties.add(property);
} catch (_) {
// Ignore errors and continue
}
}
safelyAdd('Square Matrix', isSquareMatrix);
safelyAdd('Null Matrix', isNullMatrix);
safelyAdd('Diagonal Matrix', isDiagonalMatrix);
safelyAdd('Identity Matrix', isIdentityMatrix);
safelyAdd('Scalar Matrix', isScalarMatrix);
safelyAdd('Row Matrix', isRowMatrix);
safelyAdd('Column Matrix', isColumnMatrix);
safelyAdd('Magic Matrix', isMagicMatrix);
safelyAdd('Full Rank Matrix', isFullRank);
safelyAdd('Horizontal Matrix', isHorizontalMatrix);
safelyAdd('Vertical Matrix', isVerticalMatrix);
safelyAdd('Upper Triangular Matrix', isUpperTriangular);
safelyAdd('Lower Triangular Matrix', isLowerTriangular);
safelyAdd('Symmetric Matrix', isSymmetricMatrix);
safelyAdd('Skew Symmetric Matrix', isSkewSymmetricMatrix);
safelyAdd('Orthogonal Matrix', isOrthogonalMatrix);
safelyAdd('Singular Matrix', isSingularMatrix);
safelyAdd('Non-Singular Matrix', isNonSingularMatrix);
safelyAdd('Toeplitz Matrix', isToeplitzMatrix);
safelyAdd('Hankel Matrix', isHankelMatrix);
safelyAdd('Circulant Matrix', isCirculantMatrix);
safelyAdd('Vandermonde Matrix', isVandermondeMatrix);
safelyAdd('Permutation Matrix', isPermutationMatrix);
safelyAdd('Nilpotent Matrix', isNilpotentMatrix);
safelyAdd('Involutary Matrix', isInvolutoryMatrix);
safelyAdd('Idempotent Matrix', isIdempotentMatrix);
safelyAdd('Tridiagonal Matrix', isTridiagonal);
safelyAdd('Hermitian Matrix', isHermitianMatrix);
safelyAdd('Sparse Matrix', isSparseMatrix);
safelyAdd('Periodic Matrix', () => isPeriodicMatrix(findSmallestPeriod()));
safelyAdd('Positive Definite Matrix', isPositiveDefiniteMatrix);
safelyAdd('Negative Definite Matrix', isNegativeDefiniteMatrix);
safelyAdd('Derogatory Matrix', isDerogatoryMatrix);
safelyAdd('Has Dominant Eigenvalue', hasDominantEigenvalue);
safelyAdd('Diagonally Dominant Matrix', isDiagonallyDominantMatrix);
safelyAdd('Strictly Diagonally Dominant Matrix',
isStrictlyDiagonallyDominantMatrix);
if (properties.isEmpty) properties.add('General Matrix');
return properties;
}