R7934/Final_v1.420f20ce9868bmaster
R7934/Final_v1.4
20f20ce9868bmaster
Final_v1.4
Final_v1.4
Readme.txt
Readme.txt
# Linear Systems (PCSC Projects 2018)
Program to solve linear systems of the type Ax=b, where A is a n*n matrix, and b a n*1 vector.
## Getting Started
This program can either be used with an IDE such as cLion, or through the operating system terminal using the Makefile.
For cLion, the CMakelists.txt file is provided
For use through the terminal, the Makefile is provided.
### Prerequisites
If inputs files are given that contain matrix or vector data, the first data value must be the system size. Example for a 3x3 matrix :
3
5 4 7
8 4.3 6.4
-7.2 -8.4 7.5
### Using the program
On terminal :
-------------
Use command make all to generate output files and executables.
User can then run the Linear_System executable with the following number of inputs :
0 : the CLI version of the program is ran (command: ./Linear_System)
User has to follow instructions on terminal
3 : these arguments must be : (command ./Linear_System A_filename b_filename method)
string A_filename : a filename containing properly formatted left hand side data
string b_filename : a filename containing properly formatted right hand side data
string method : a string corresponding to one of the implemented resolution methods below :
LU
Cholesky
Conjugate_gradient
Gauss_Seidel
Jacobi
Richardson
4 : The three previous arguments as well as a string x0_filename : a filename containing properly formatted initial solution guess data. Works for the approximated methods only (Conjugate_gradient, Gauss_Seidel, Jacobi, Richardson)
(command ./Linear_System A_filename b_filename method x0_filename)
5 : The four previous arguments as well as a tolerance floating value
Works for the approximated methods only (Conjugate_gradient, Gauss_Seidel, Jacobi, Richardson)
(command ./Linear_System A_filename b_filename method x0_filename 1e-12)
6 : The five previous arguments as well as the maximum number of iterations allowed until convergence/divergence
Works for the approximated methods only (Conjugate_gradient, Gauss_Seidel, Jacobi, Richardson)
(command ./Linear_System A_filename b_filename method x0_filename 1e-12 5000)
On cLion :
-------------
Build
Launch Linear_System executable to run the cli version of the program
Launch Google_Tests executable to run the google tests
### Features
CLI version of the program (0inputs given )
--------------------------
For exact methods (LU and Cholesky), these commands are available in the CLI version of the program
-U_Matrix : outputs to terminal Upper triangular decomposition of matrix A
-L_Matrix : outputs to terminal Lower triangular decomposition of matrix A
-P_Matrix : outputs to terminal permutation matrix P
-Solve : outputs to terminal solution of system Ax=b
For approximated methods (Conjugate_gradient, Gauss_Seidel, Jacobi, Richardson), these commands are available in the CLI version of the program (0inputs)
-Set_x0 : sets initial guess of solution via terminal
-Set_tol : sets convergence criteria
-Set_max_iter : sets maximum number of iterations
-Solve : outputs to terminal solution of system Ax=b
These command can be ran once Solve has been ran :
-iter : outputs to terminal number of iterations to convergence
-Convergence : outputs to terminal a vector containing the evolution of the error with iterations
Input output version of the program (3,4,5 or 6 inputs given )
--------------------------
For exact methods (LU and Cholesky), these files are generated :
-U.dat : Upper triangular decomposition of matrix A
-L.dat : Lower triangular decomposition of matrix A
-P.dat : Permutation matrix
-x.dat : Solution of system
-b_star.dat : Pivoted right hand side
--------------------------
For approximated methods (Conjugate_gradient, Gauss_Seidel, Jacobi, Richardson), these files are generated :
-x.dat : Solution of system
-Convergence.dat : Error at each iteration
## Running the tests
Build and launch Google_Tests using an IDE such as CLion. (Makefile doesnt contain rules for google tests)
Tests cases :
For all six methods :
Near equality comparison between algorithm results and Matlab results for a 3x3 matrix, and a 2x2 matrix.
For the Vector and Matrix classes :
Equality tests for overloaded * and + matrix operators
Equality tests for overloaded * and + vector operators
## Deleting generated files
Simply use command make clean
## Authors
* **Nabil El Berria** - - (https://c4science.ch/p/Bibs/)
* **Xavier Alexandre Choitel** - - (https://c4science.ch/p/choitel/)
## License
None
## Acknowledgments
* Teaching staff of the pcsc course
* Google
Program to solve linear systems of the type Ax=b, where A is a n*n matrix, and b a n*1 vector.
## Getting Started
This program can either be used with an IDE such as cLion, or through the operating system terminal using the Makefile.
For cLion, the CMakelists.txt file is provided
For use through the terminal, the Makefile is provided.
### Prerequisites
If inputs files are given that contain matrix or vector data, the first data value must be the system size. Example for a 3x3 matrix :
3
5 4 7
8 4.3 6.4
-7.2 -8.4 7.5
### Using the program
On terminal :
-------------
Use command make all to generate output files and executables.
User can then run the Linear_System executable with the following number of inputs :
0 : the CLI version of the program is ran (command: ./Linear_System)
User has to follow instructions on terminal
3 : these arguments must be : (command ./Linear_System A_filename b_filename method)
string A_filename : a filename containing properly formatted left hand side data
string b_filename : a filename containing properly formatted right hand side data
string method : a string corresponding to one of the implemented resolution methods below :
LU
Cholesky
Conjugate_gradient
Gauss_Seidel
Jacobi
Richardson
4 : The three previous arguments as well as a string x0_filename : a filename containing properly formatted initial solution guess data. Works for the approximated methods only (Conjugate_gradient, Gauss_Seidel, Jacobi, Richardson)
(command ./Linear_System A_filename b_filename method x0_filename)
5 : The four previous arguments as well as a tolerance floating value
Works for the approximated methods only (Conjugate_gradient, Gauss_Seidel, Jacobi, Richardson)
(command ./Linear_System A_filename b_filename method x0_filename 1e-12)
6 : The five previous arguments as well as the maximum number of iterations allowed until convergence/divergence
Works for the approximated methods only (Conjugate_gradient, Gauss_Seidel, Jacobi, Richardson)
(command ./Linear_System A_filename b_filename method x0_filename 1e-12 5000)
On cLion :
-------------
Build
Launch Linear_System executable to run the cli version of the program
Launch Google_Tests executable to run the google tests
### Features
CLI version of the program (0inputs given )
--------------------------
For exact methods (LU and Cholesky), these commands are available in the CLI version of the program
-U_Matrix : outputs to terminal Upper triangular decomposition of matrix A
-L_Matrix : outputs to terminal Lower triangular decomposition of matrix A
-P_Matrix : outputs to terminal permutation matrix P
-Solve : outputs to terminal solution of system Ax=b
For approximated methods (Conjugate_gradient, Gauss_Seidel, Jacobi, Richardson), these commands are available in the CLI version of the program (0inputs)
-Set_x0 : sets initial guess of solution via terminal
-Set_tol : sets convergence criteria
-Set_max_iter : sets maximum number of iterations
-Solve : outputs to terminal solution of system Ax=b
These command can be ran once Solve has been ran :
-iter : outputs to terminal number of iterations to convergence
-Convergence : outputs to terminal a vector containing the evolution of the error with iterations
Input output version of the program (3,4,5 or 6 inputs given )
--------------------------
For exact methods (LU and Cholesky), these files are generated :
-U.dat : Upper triangular decomposition of matrix A
-L.dat : Lower triangular decomposition of matrix A
-P.dat : Permutation matrix
-x.dat : Solution of system
-b_star.dat : Pivoted right hand side
--------------------------
For approximated methods (Conjugate_gradient, Gauss_Seidel, Jacobi, Richardson), these files are generated :
-x.dat : Solution of system
-Convergence.dat : Error at each iteration
## Running the tests
Build and launch Google_Tests using an IDE such as CLion. (Makefile doesnt contain rules for google tests)
Tests cases :
For all six methods :
Near equality comparison between algorithm results and Matlab results for a 3x3 matrix, and a 2x2 matrix.
For the Vector and Matrix classes :
Equality tests for overloaded * and + matrix operators
Equality tests for overloaded * and + vector operators
## Deleting generated files
Simply use command make clean
## Authors
* **Nabil El Berria** - - (https://c4science.ch/p/Bibs/)
* **Xavier Alexandre Choitel** - - (https://c4science.ch/p/choitel/)
## License
None
## Acknowledgments
* Teaching staff of the pcsc course
c4science · Help