Matrix::DetectMtxType Method

TMtxType DetectMtxType(bool CheckPosDef = false) const;

Determines type of the matrix.

#NameTypeDescription
1CheckPosDef = falsebool
Remarks:

Tests the calling matrix and returns the TMtxType of the calling of matrix. The following types are supported:

  • mtSymmPosDef = symmetric positive definite matrix
  • mtSymmetric = symmetric matrix
  • mtHermPosDef = Hermitian positive definite matrix
  • mtHermitian = Hermitian matrix
  • mtTriangle = triangular matrix, with unit or non unit main diagonal
  • mtGeneral = general matrix (none of the above)

Checking for positive definite matrix can be very expensive (O(n) = 1/3*n^3). Therefore the ChekPosDef parameter is False by default, unless the user specifies otherwise. The method will not detect banded matrix storage.

Examples
#include "MtxExpr.h"

using namespace Dew;
using namespace Dew::Math;

void Example()
{
    Vector X, B;
    Matrix A;
    TMtxType at;

    B.SetIt(false, DewArray<double>{0, 2});
    A.SetIt(2, 2, false, DewArray<double>{1, 2,
        2, 4});  // 2x2 real matrix

    at = A.DetectMtxType();
    A.LUSolve(B, X, at);
    // This is the same for this example (except slower)
    A.LUSolve(B, X, TMtxType::mtSymmetric);
    // You could also specify
    A.AutoMtxType = true;
    A.LUSolve(B, X);  // the type is autodetected
}
Declared in Dew::Math::Matrix · Dew.Math/MtxExpr.h · Cross-compiler