This project consists of several numerical analysis exercises implemented in Python. It covers root-finding methods, solving linear systems of equations, and a PageRank-inspired algorithm for calculating the importance of pages within a network.
The project is divided into four main exercises:
- Root-Finding Methods: Implements Bisection, Newton-Raphson, and Secant methods to approximate the roots of a given function.
- Modified Root-Finding Methods: Adjusts the standard root-finding algorithms to increase precision and solve more complex root scenarios.
- Solving Linear Systems: Uses LU decomposition to solve systems of equations in the form (Ax = b).
- PageRank-inspired Algorithm: Calculates page importance based on adjacency matrices and applies the power method to approximate eigenvalues and eigenvectors.
For a detailed explanation of the mathematical methods and results, refer to the full report (PDF in Greek).
- Python: The project was implemented and tested in Python using basic libraries and no external dependencies.
- Markdown: Used for documentation and project presentation on GitHub.
- Clone this repository:
git clone https://github.com/theodougalis/Numerical-Analysis-Project---Root-Finding--System-Solving--and-PageRank-Algorithm.git
- Make sure Python 3 is installed on your machine.
- Navigate to the project directory and open the Python file
NumericalAnalysis.pyin your preferred Python environment.
- Bisection Method: Approximates roots by iteratively narrowing down an interval.
- Newton-Raphson Method: Uses the derivative to converge quickly to a root.
- Secant Method: Similar to Newton-Raphson but does not require the derivative.
- Customized Bisection, Newton-Raphson, and Secant methods for enhanced accuracy and performance on complex root types.
- Implements LU decomposition with pivoting to solve systems of linear equations.
- Uses the power method to calculate page importance based on connectivity, inspired by Google's PageRank algorithm.
- Analyzes the effect of probability (q) on the importance of randomly accessing pages.
-
Run Root-Finding Methods:
- To test the root-finding methods, execute:
python NumericalAnalysis.py
- Use functions like
dixotomisif(),NRf(), andSecantf()with appropriate parameters to find roots.
- To test the root-finding methods, execute:
-
Solve Linear Systems:
- To solve linear systems, use the function
axb()for specific matrix and vector inputs.
- To solve linear systems, use the function
-
Calculate Page Importance:
- Run the
task1()throughtask6()functions for different setups to simulate page importance under varying conditions.
- Run the
- Project Report (PDF) - Contains detailed explanations of the methods, calculations, and results in Greek.