Exact solution plot saved to 'problem1_exact_solution.png'

--- Solving for n = 20 ---

Starting iterative solvers...
Running Jacobi...
Running Gauss-Seidel...
Running SOR...
Running Steepest Descent...
Running Conjugate Gradient...

--- Iteration Counts ---
Jacobi              : 2031 iterations (converged, last residual = 5.78e-13)
Gauss-Seidel        : 1018 iterations (converged, last residual = 5.72e-13)
SOR                 : 94 iterations (converged, last residual = 4.52e-13)
Steepest Descent    : 2044 iterations (converged, last residual = 5.74e-13)
Conjugate Gradient  : 20 iterations (converged, last residual = 1.39e-18)

Convergence plot saved to 'problem1_convergence_n20.png'
All solutions comparison plot saved to 'problem1_all_solutions_comparison_n20.png'

--- Solving for n = 40 ---

Starting iterative solvers...
Running Jacobi...
Running Gauss-Seidel...
Running SOR...
Running Steepest Descent...
Running Conjugate Gradient...

--- Iteration Counts ---
Jacobi              : 7758 iterations (converged, last residual = 2.15e-13)
Gauss-Seidel        : 3882 iterations (converged, last residual = 2.16e-13)
SOR                 : 183 iterations (converged, last residual = 2.04e-13)
Steepest Descent    : 7842 iterations (converged, last residual = 2.16e-13)
Conjugate Gradient  : 40 iterations (converged, last residual = 5.40e-19)

Convergence plot saved to 'problem1_convergence_n40.png'
All solutions comparison plot saved to 'problem1_all_solutions_comparison_n40.png'
