Sparse QR example
This example shows how to create a sparse QR factorization:
using CSparse; using CSparse.Double; using CSparse.Double.Factorization; using CSparse.IO; public static class Example { public static bool Solve(string filePath) { // Load matrix from a file. var A = MatrixMarketReader.ReadMatrix<double>(filePath); int m = A.RowCount; int n = A.ColumnCount; // Create test data. var x = Vector.Create(n, 1.0); var b = new double[m]; // Compute right hand side vector b. A.Multiply(1.0, x, 0.0, b); // Apply column ordering to A to reduce fill-in. var order = ColumnOrdering.MinimumDegreeAtA; var qr = SparseQR.Create(A, order); // Solve Ax = b (overwrite x). qr.Solve(b, x); // Compute residual b - Ax (overwrite b). A.Multiply(-1.0, x, 1.0, b); return true; } }