matrixProperties method

List<String> matrixProperties()

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;
}