/* LinearSolverExample.cpp By Matthew Fisher Example of LinearSolver and sparse matrix classes */ #include #include using namespace std; typedef unsigned int UINT; #include "ArrayVector.h" #include "SparseMatrix.h" #include "LinearSolver.h" #include "SparseMatrix.cpp" #include "LinearSolver.cpp" /* This will demonstrate the use of the LinearSolver class to find the solution to Ax = b, A = ( 1 2 6 0 ) ( 0 6 0 5 ) ( 9 3 2 1 ) ( 6 0 7 0 ) b = ( 1 ) ( -5 ) ( 0 ) ( 2 ) For which the solution, by Mathematica, is x = ( 0.0972763 ) ( -0.155642 ) ( 0.202335 ) ( -0.81323 ) */ void main() { LinearSolver S; S.Init(4); //initalize the solver as a 4x4 sparse matrix //fill in the matrix, row by row S.PushElement(0, 0, 1.0); S.PushElement(0, 1, 2.0); S.PushElement(0, 2, 6.0); S.PushElement(1, 1, 6.0); S.PushElement(1, 3, 5.0); S.PushElement(2, 0, 9.0); S.PushElement(2, 1, 3.0); S.PushElement(2, 2, 2.0); S.PushElement(2, 3, 1.0); S.PushElement(3, 0, 6.0); S.PushElement(3, 2, 7.0); //fill in the b-vector S.b[0] = 1.0; S.b[1] = -5.0; S.b[2] = 0.0; S.b[3] = 2.0; //solve the system Ax = b. The result will be in S.x S.BiCGradSolve(); cout << "x = " << endl; cout << S.x[0] << endl; cout << S.x[1] << endl; cout << S.x[2] << endl; cout << S.x[3] << endl; cin.get(); }