21.2 Creating Ordinary Least Squares Objects (.NET, C#, CSharp, VB, Visual Basic, F#)
NMath provides ordinary least squares classes for four datatypes: single and doubleprecision floating point numbers, and single and doubleprecision complex numbers. The classnames are shown in Table 18.
Least Squares Method 
Classes 
Cholesky 

QR Decomposition 

SVD 
Instances of the least squares classes are constructed from general matrices of the appropriate datatype. For example, this code creates a FloatCholeskyLeastSq from a FloatMatrix:
Code Example – C# least squares
FloatMatrix A = new FloatMatrix( "4x2[ 1 0 0 1 0 0 0 0 ]" );
FloatCholeskyLeastSq lsq = new FloatCholeskyLeastSq( A );
Code Example – VB least squares
Dim A As New FloatMatrix("4x2[ 1 0 0 1 0 0 0 0]")
Dim LSQ As New FloatCholeskyLeastSq(A)
QR and SVD least squares classes also provide constructor overloads that accept a tolerance value. The specified tolerance is used in computing the numerical rank of the matrix. For example, if is the QR factorization of a matrix A, then elements on the main diagonal of R are considered to be zero if their absolute value is less than or equal to the tolerance. Similarly, in singular value decomposition, all singular values of the matrix A less than the tolerance are set to zero. Thus, this code sets all singular values less than 10^{13} to zero:
Code Example – C# least squares
DoubleMatrix A = new DoubleMatrix( "4x2[ 1 0 0 1 0 0 0 0 ]" );
DoubleSVDLeastSq lsq = new DoubleSVDLeastSq( A, 1e13 );
Code Example – VB least squares
Dim A As New DoubleMatrix( "4x2[1 0 0 1 0 0 0 0 ]" )
Dim LSQ As New DoubleSVDLeastSq( A, "1e13" )