This project aims to implement various numerical methods for solving linear systems of equations. The initial focus is on the Jacobi method, with plans to extend to other methods such as Gauss-Seidel and Successive Over-Relaxation (SOR). The project will also explore parallelization using the Rayon library for improved performance.
The project is intended for educational purposes and to provide a foundation for further exploration of numerical methods in Rust. It is not intended for production use.
This project is developed by myself, Amartya Yadav, as part of a personal exploration into numerical methods and Rust programming. The project is open for contributions and feedback. Feel free to reach out for collaboration or suggestions.
Implemented Features:
- Jacobi method (sequential version)
- Diagonally dominant matrix generator
- L2 norm-based convergence checking
- Modular project structure with solver and utils modules
Not Yet Implemented:
- Parallelized Jacobi method (Rayon-based)
- Additional solvers (Gauss-Seidel, SOR)
- CLI argument parsing
- Benchmarking tools
- File-based input/output
⸻
The following features are planned to expand the project into a full-fledged numerical solver with parallel capabilities:
Short-Term Goals
- Add Rayon-based parallel Jacobi implementation
- Add CLI interface using clap to configure matrix size, tolerance, and iterations
- Refactor matrix storage into a flat Vec for performance
Medium-Term Goals
- Implement Gauss-Seidel and SOR methods
- Benchmark different methods and visualize convergence performance
- Add support for matrix and vector file input/output (e.g., CSV, JSON) ⸻
This project is licensed under the MIT License. See the LICENSE file for details.
Amartya Yadav MSc High Performance Computing EPCC, University of Edinburgh