@@ -6,26 +6,28 @@ using LinearAlgebra
66using KrylovSubspaceMethods
77
88function parse_commandline ()
9- s = ArgParseSettings (description= " Solve a linear system Ax = b using iterative methods." )
9+ s = ArgParseSettings (
10+ description = " Solve a linear system Ax = b using iterative methods." ,
11+ )
1012
1113 @add_arg_table! s begin
1214 " matrix"
13- help = " Path to .mtx matrix file"
14- required = true
15+ help = " Path to .mtx matrix file"
16+ required = true
1517 " --method" , " -m"
16- help = " cg, cgw, minres, gmres"
17- default = " cg"
18+ help = " cg, cgw, minres, gmres"
19+ default = " cg"
1820 " --tol"
19- help = " Convergence tolerance"
20- arg_type = Float64
21- default = 1e-6
21+ help = " Convergence tolerance"
22+ arg_type = Float64
23+ default = 1e-6
2224 " --maxiter"
23- help = " Maximum iterations"
24- arg_type = Int
25- default = 1000
25+ help = " Maximum iterations"
26+ arg_type = Int
27+ default = 1000
2628 " --rhs"
27- help = " Path to b (one number per line). If empty: synthetic b with x_exact=1"
28- default = " "
29+ help = " Path to b (one number per line). If empty: synthetic b with x_exact=1"
30+ default = " "
2931 end
3032
3133 return parse_args (s)
4446function main ()
4547 args = parse_commandline ()
4648
47- println (" Reading matrix: $(args[" matrix" ]) " )
49+ println (" Reading matrix: $(args[" matrix" ]) " )
4850 A = MatrixMarket. mmread (args[" matrix" ])
4951 n = size (A, 1 )
5052
5153 x_exact, b = load_rhs (args[" rhs" ], n)
5254 if b === nothing
5355 b = A * x_exact
54- println (" No b specified — synthetic system with x_exact = 1 generated." )
56+ println (" No b specified — synthetic system with x_exact = 1 generated." )
5557 end
5658
5759 x0 = zeros (n)
@@ -60,29 +62,29 @@ function main()
6062 tol = args[" tol" ]
6163 maxiter = args[" maxiter" ]
6264
63- println (" Solving with method: $method (tol=$tol , maxiter=$maxiter )" )
65+ println (" Solving with method: $method (tol=$tol , maxiter=$maxiter )" )
6466
6567 result = if method == " cg"
66- cg (A, b, x0; tol= tol, maxiter= maxiter)
68+ cg (A, b, x0; tol = tol, maxiter = maxiter)
6769 elseif method == " cgw"
68- cgw (A, b, x0; tol= tol, maxiter= maxiter)
70+ cgw (A, b, x0; tol = tol, maxiter = maxiter)
6971 elseif method == " minres"
70- minres (A, b, x0; tol= tol, maxiter= maxiter)
72+ minres (A, b, x0; tol = tol, maxiter = maxiter)
7173 elseif method == " gmres"
72- gmres (A, b, x0; tol= tol, maxiter= maxiter)
74+ gmres (A, b, x0; tol = tol, maxiter = maxiter)
7375 else
74- error (" Unknown method: $method " )
76+ error (" Unknown method: $method " )
7577 end
7678
7779 println ()
78- println (" Converged: $(result. converged) " )
79- println (" Iterations: $(result. iterations) " )
80- println (" Final residual: $(result. residuals[end ]) " )
81- println (" Final solution vector x: $(result. x) " )
80+ println (" Converged: $(result. converged) " )
81+ println (" Iterations: $(result. iterations) " )
82+ println (" Final residual: $(result. residuals[end ]) " )
83+ println (" Final solution vector x: $(result. x) " )
8284
8385 if x_exact != = nothing
8486 err = norm (result. x - x_exact)
85- println (" Error ‖x - x_exact‖: $err " )
87+ println (" Error ‖x - x_exact‖: $err " )
8688 end
8789end
8890
0 commit comments