TMtx.SVDSolve Method

Overload List

#SignatureDescription
1function SVDSolve(const B: TMtx; const X: TMtx; const S: TVec; Threshold: Double): Integer;Matrix version of SVDSolve. Performs a SVDSolve for each U and V matrices columns in single pass.
2function SVDSolve(const B: TVec; const X: TVec; const S: TVec; Threshold: Double): Integer;Calculates the minimum norm solution to a real linear least squares problem.

Overload 1: function SVDSolve(const B: TMtx; const X: TMtx; const S: TVec; Threshold: Double): Integer;

Matrix version of SVDSolve. Performs a SVDSolve for each U and V matrices columns in single pass.

#NameTypeDescription
1BTMtx
2XTMtx
3STVec
4ThresholdDoublescalar

Returns: Int32

Overload 2: function SVDSolve(const B: TVec; const X: TVec; const S: TVec; Threshold: Double): Integer;

Calculates the minimum norm solution to a real linear least squares problem.

#NameTypeDescription
1BTVec
2XTVec
3STVec
4ThresholdDoublescalar

Returns: Int32

Remarks:

Calculates the minimum norm solution to a real linear least squares problem.

Minimize 2-norm(| b - A*x |).

using the singular value decomposition (SVD) of the calling matrix A. A is an Rows-by-Cols matrix which may be rank-deficient. Several right hand side vectors b and solution vectors x can be handled in a single call. The effective rank of A is determined by treating as zero those singular values which are less than Threshold times the largest singular value and is returned by the function. The S vector holds the singular values on the output.

Examples
var X,B,D: TVec;
    V: TMtx;
begin
    CreateIt(X,B,D);
    CreateIt(V);
    try
        B.SetIt(false,[0,2,3]);
        V.SetIt(3,3,false,[1,2,3,
            3,4,5,
            6,7,7]);

        V.SVDSolve(B,X,D); // matrix V can be non-quadratic
    finally
        FreeIt(X,B,D);
        FreeIt(V);
    end;
end;
See Also: TMtx.SVD