TSparseMtx.Inv Method

Overload List

#SignatureDescription
1procedure Inv(const Y: TMtx);The inverse matrix.
2function Inv: TMtxVec;Inverse elements.
└ indexed: function Inv(Index: Integer; Len: Integer): TMtxVec;
3function Inv(const X: TMtxVec): TMtxVec;Calculate the inverse of all X object elements without limiting operating.
└ indexed: function Inv(const X: TMtxVec; XIndex: Integer; Index: Integer; Len: Integer): TMtxVec;
4function Inv(const X: TMtxVec; const Threshold: Double): TMtxVec;Calculate the inverse of all X object elements anmd store the results to calling object elements.
└ indexed: function Inv(const X: TMtxVec; const Threshold: Double; XIndex: Integer; Index: Integer; Len: Integer): TMtxVec;
5function Inv(const Threshold: Double): TMtxVec;Calculate the inverse of all calling object elements in-place. The computation occurs after first limiting the magnitude of each element by the lower bound of Threshold.
└ indexed: function Inv(const Threshold: Double; Index: Integer; Len: Integer): TMtxVec;

Overload 1: procedure Inv(const Y: TMtx);

The inverse matrix.

#NameTypeDescription
1YTMtx

Result: stored in self (calling object)

Remarks:

Calculates the inverse (Mtx^-1) of the calling matrix and stores the result in Y dense matrix. If the calling matrix is not quadratic, an exception is raised.

Overload 2: function Inv: TMtxVec;

Inverse elements.

Result: stored in self (calling object), returns self for chaining

Remarks:

Calculates the inverse of all calling object elements in-place without limiting inverse operation.

Examples
var  A: TMtx;
begin
    CreateIt(A);
    try
        A.SetIt(2,2,False,[1,2,
            2,4]);  // 2x2, real matrix
        A.Inv;
    finally
        FreeIt(A);
    end;
end;

Indexed: function Inv(Index: Integer; Len: Integer): TMtxVec;

Calculate the inverse of calling object elements [Index]..[Index+Len-1] in-place.

#NameTypeDescription
1IndexIntegerstart index
2LenIntegerelement count

Result: stored in self (calling object), returns self for chaining

Remarks:

An exception is raised if array borders are overrun/underrun.

Examples
var a,b: Matrix;
begin
    a.SetIt(2,2,False,[1,2,3,4]);  // a = [1, 2, 3, 4]
    b.Inv(a,0.01); // b = [1.0, 0.5, 0.3333, 0.25]
    b := Inv(a,0.01);
end;

Overload 3: function Inv(const X: TMtxVec): TMtxVec;

Calculate the inverse of all X object elements without limiting operating.

#NameTypeDescription
1XTMtxVecsource TVec or TMtx

Result: stored in self (calling object), returns self for chaining

Remarks:

Store the results in calling object. Size and TMtxVec.Complex property of calling object are adjusted automatically.

Indexed: function Inv(const X: TMtxVec; XIndex: Integer; Index: Integer; Len: Integer): TMtxVec;

Calculate the inverse of X object elements [XIndex]..[XIndex+Len-1] without limiting operating.

#NameTypeDescription
1XTMtxVecsource TVec or TMtx
2XIndexIntegerX start index
3IndexIntegerstart index
4LenIntegerelement count

Result: stored in self (calling object), returns self for chaining

Remarks:

Store the results in calling object elements [Index]..[Index+Len-1]. An exception is raised if X and calling object TMtxVec.Complex property does not match or array borders are overrun/underrun.

Overload 4: function Inv(const X: TMtxVec; const Threshold: Double): TMtxVec;

Calculate the inverse of all X object elements anmd store the results to calling object elements.

#NameTypeDescription
1XTMtxVecsource TVec or TMtx
2ThresholdDoublescalar

Result: stored in self (calling object), returns self for chaining

Remarks:

Size and TMtxVec.Complex property of calling obhect are adjusted automatically. The computation occurs after first limiting the magnitude of each element by the lower bound of Threshold. The limiting operation is performed to avoid division by zero. Since Threshold represents a magnitude, it is always real and must always be positive.

For complex versions, the magnitude of the input is limited, but the phase remains unchanged. Zero-valued input is assumed to have zero phase.

Indexed: function Inv(const X: TMtxVec; const Threshold: Double; XIndex: Integer; Index: Integer; Len: Integer): TMtxVec;

Calculate the inverse of X object elements [XIndex]..[XIndex+Len-1] after limiting the magnitude of each element by the lower bound of Threshold.

#NameTypeDescription
1XTMtxVecsource TVec or TMtx
2ThresholdDoublescalar
3XIndexIntegerX start index
4IndexIntegerstart index
5LenIntegerelement count

Result: stored in self (calling object), returns self for chaining

Remarks:

Store the results in calling object elements [Index]..[Index+Len-1]. An exception is raised if X and calling object TMtxVec.Complex property do not match or array borders are overrun/underrun.

Overload 5: function Inv(const Threshold: Double): TMtxVec;

Calculate the inverse of all calling object elements in-place. The computation occurs after first limiting the magnitude of each element by the lower bound of Threshold.

#NameTypeDescription
1ThresholdDoublescalar

Result: stored in self (calling object), returns self for chaining

Remarks:

The limiting operation is performed to avoid division by zero. Since Threshold represents a magnitude, it is always real and must always be positive.

For complex versions, the magnitude of the input is limited, but the phase remains unchanged. Zero-valued input is assumed to have zero phase.

Indexed: function Inv(const Threshold: Double; Index: Integer; Len: Integer): TMtxVec;

Calculate the inverse of calling object elements [Index]..[Index+Len-1] in-place after limiting the magnitude of each element by the lower bound of Threshold.

#NameTypeDescription
1ThresholdDoublescalar
2IndexIntegerstart index
3LenIntegerelement count

Result: stored in self (calling object), returns self for chaining

Remarks:

An exception is raised if array borders are overrun/underrun.