diff --git a/src/bicgstab.jl b/src/bicgstab.jl index ab09098bf..c4f16595e 100644 --- a/src/bicgstab.jl +++ b/src/bicgstab.jl @@ -41,15 +41,6 @@ convergence than CGS. If BICGSTAB stagnates, we recommend DQGMRES and BiLQ as alternative methods for unsymmetric square systems. BICGSTAB stops when `itmax` iterations are reached or when `‖rₖ‖ ≤ atol + ‖b‖ * rtol`. -`atol` is an absolute tolerance and `rtol` is a relative tolerance. - -Additional details can be displayed if verbose mode is enabled (verbose > 0). -Information will be displayed every `verbose` iterations. - -This implementation allows a left preconditioner `M` and a right preconditioner `N`. - -The callback is called as `callback(solver)` and should return `true` if the main loop should terminate, -and `false` otherwise. #### Input arguments diff --git a/src/bilq.jl b/src/bilq.jl index aa1766217..12ee40652 100644 --- a/src/bilq.jl +++ b/src/bilq.jl @@ -29,13 +29,7 @@ BiLQ can be warm-started from an initial guess `x0` where `kwargs` are the same Solve the square linear system Ax = b of size n using BiLQ. BiLQ is based on the Lanczos biorthogonalization process and requires two initial vectors `b` and `c`. The relation `bᴴc ≠ 0` must be satisfied and by default `c = b`. -When `A` is symmetric and `b = c`, BiLQ is equivalent to SYMMLQ. - -An option gives the possibility of transferring to the BiCG point, -when it exists. The transfer is based on the residual norm. - -The callback is called as `callback(solver)` and should return `true` if the main loop should terminate, -and `false` otherwise. +When `A` is Hermitian and `b = c`, BiLQ is equivalent to SYMMLQ. #### Input arguments diff --git a/src/bilqr.jl b/src/bilqr.jl index 0d6e2d168..5666f0863 100644 --- a/src/bilqr.jl +++ b/src/bilqr.jl @@ -35,12 +35,6 @@ The relation `bᴴc ≠ 0` must be satisfied. BiLQ is used for solving primal system `Ax = b` of size n. QMR is used for solving dual system `Aᴴy = c` of size n. -An option gives the possibility of transferring from the BiLQ point to the -BiCG point, when it exists. The transfer is based on the residual norm. - -The callback is called as `callback(solver)` and should return `true` if the main loop should terminate, -and `false` otherwise. - #### Input arguments * `A`: a linear operator that models a matrix of dimension n; diff --git a/src/cg.jl b/src/cg.jl index cf155561a..ed9d88cfa 100644 --- a/src/cg.jl +++ b/src/cg.jl @@ -33,16 +33,8 @@ CG can be warm-started from an initial guess `x0` where `kwargs` are the same ke The conjugate gradient method to solve the Hermitian linear system Ax = b of size n. The method does _not_ abort if A is not definite. - -A preconditioner M may be provided in the form of a linear operator and is -assumed to be Hermitian and positive definite. M also indicates the weighted norm in which residuals are measured. -If `itmax=0`, the default number of iterations is set to `2 * n`. - -The callback is called as `callback(solver)` and should return `true` if the main loop should terminate, -and `false` otherwise. - #### Input arguments * `A`: a linear operator that models a Hermitian positive definite matrix of dimension n; diff --git a/src/cg_lanczos.jl b/src/cg_lanczos.jl index eac44e11d..f648eb2a8 100644 --- a/src/cg_lanczos.jl +++ b/src/cg_lanczos.jl @@ -32,12 +32,6 @@ Hermitian linear system Ax = b of size n. The method does _not_ abort if A is not definite. -A preconditioner M may be provided in the form of a linear operator and is -assumed to be Hermitian and positive definite. - -The callback is called as `callback(solver)` and should return `true` if the main loop should terminate, -and `false` otherwise. - #### Input arguments * `A`: a linear operator that models a Hermitian matrix of dimension n; diff --git a/src/cg_lanczos_shift.jl b/src/cg_lanczos_shift.jl index 5b9833484..38001d7e7 100644 --- a/src/cg_lanczos_shift.jl +++ b/src/cg_lanczos_shift.jl @@ -31,12 +31,6 @@ of shifted systems of size n. The method does _not_ abort if A + αI is not definite. -A preconditioner M may be provided in the form of a linear operator and is -assumed to be Hermitian and positive definite. - -The callback is called as `callback(solver)` and should return `true` if the main loop should terminate, -and `false` otherwise. - #### Input arguments * `A`: a linear operator that models a Hermitian matrix of dimension n; diff --git a/src/cgls.jl b/src/cgls.jl index 5fe6449cb..55fe6d0ec 100644 --- a/src/cgls.jl +++ b/src/cgls.jl @@ -53,9 +53,6 @@ CGLS produces monotonic residuals ‖r‖₂ but not optimality residuals ‖A It is formally equivalent to LSQR, though can be slightly less accurate, but simpler to implement. -The callback is called as `callback(solver)` and should return `true` if the main loop should terminate, -and `false` otherwise. - #### Input arguments * `A`: a linear operator that models a matrix of dimension m × n; diff --git a/src/cgne.jl b/src/cgne.jl index e4aff6ddf..f85af32be 100644 --- a/src/cgne.jl +++ b/src/cgne.jl @@ -61,11 +61,6 @@ CGNE produces monotonic errors ‖x-x*‖₂ but not residuals ‖r‖₂. It is formally equivalent to CRAIG, though can be slightly less accurate, but simpler to implement. Only the x-part of the solution is returned. -A preconditioner N may be provided in the form of a linear operator. - -The callback is called as `callback(solver)` and should return `true` if the main loop should terminate, -and `false` otherwise. - #### Input arguments * `A`: a linear operator that models a matrix of dimension m × n; diff --git a/src/cgs.jl b/src/cgs.jl index 336f80e10..cbb3db13b 100644 --- a/src/cgs.jl +++ b/src/cgs.jl @@ -44,11 +44,6 @@ to become inaccurate. TFQMR and BICGSTAB were developed to remedy this difficulty.» -This implementation allows a left preconditioner M and a right preconditioner N. - -The callback is called as `callback(solver)` and should return `true` if the main loop should terminate, -and `false` otherwise. - #### Input arguments * `A`: a linear operator that models a matrix of dimension n; diff --git a/src/cr.jl b/src/cr.jl index 83e1bc10e..26f317385 100644 --- a/src/cr.jl +++ b/src/cr.jl @@ -32,17 +32,8 @@ CR can be warm-started from an initial guess `x0` where `kwargs` are the same ke A truncated version of Stiefel’s Conjugate Residual method to solve the Hermitian linear system Ax = b of size n or the least-squares problem min ‖b - Ax‖ if A is singular. The matrix A must be Hermitian semi-definite. - -A preconditioner M may be provided in the form of a linear operator and is assumed to be Hermitian and positive definite. M also indicates the weighted norm in which residuals are measured. -In a linesearch context, 'linesearch' must be set to 'true'. - -If `itmax=0`, the default number of iterations is set to `2 * n`. - -The callback is called as `callback(solver)` and should return `true` if the main loop should terminate, -and `false` otherwise. - #### Input arguments * `A`: a linear operator that models a Hermitian positive definite matrix of dimension n; diff --git a/src/craig.jl b/src/craig.jl index 72b803724..76afe9d51 100644 --- a/src/craig.jl +++ b/src/craig.jl @@ -88,9 +88,6 @@ In this case, `M` can still be specified and indicates the weighted norm in whic In this implementation, both the x and y-parts of the solution are returned. -The callback is called as `callback(solver)` and should return `true` if the main loop should terminate, -and `false` otherwise. - #### Input arguments * `A`: a linear operator that models a matrix of dimension m × n; diff --git a/src/craigmr.jl b/src/craigmr.jl index ce5087de7..3b64829d6 100644 --- a/src/craigmr.jl +++ b/src/craigmr.jl @@ -83,9 +83,6 @@ It is formally equivalent to CRMR, though can be slightly more accurate, and intricate to implement. Both the x- and y-parts of the solution are returned. -The callback is called as `callback(solver)` and should return `true` if the main loop should terminate, -and `false` otherwise. - #### Input arguments * `A`: a linear operator that models a matrix of dimension m × n; diff --git a/src/crls.jl b/src/crls.jl index cc98fb1be..78615fad6 100644 --- a/src/crls.jl +++ b/src/crls.jl @@ -45,9 +45,6 @@ CRLS produces monotonic residuals ‖r‖₂ and optimality residuals ‖Aᴴr It is formally equivalent to LSMR, though can be substantially less accurate, but simpler to implement. -The callback is called as `callback(solver)` and should return `true` if the main loop should terminate, -and `false` otherwise. - #### Input arguments * `A`: a linear operator that models a matrix of dimension m × n; diff --git a/src/crmr.jl b/src/crmr.jl index bd4fd81f0..621ba5ef3 100644 --- a/src/crmr.jl +++ b/src/crmr.jl @@ -59,11 +59,6 @@ CRMR produces monotonic residuals ‖r‖₂. It is formally equivalent to CRAIG-MR, though can be slightly less accurate, but simpler to implement. Only the x-part of the solution is returned. -A preconditioner N may be provided. - -The callback is called as `callback(solver)` and should return `true` if the main loop should terminate, -and `false` otherwise. - #### Input arguments * `A`: a linear operator that models a matrix of dimension m × n; diff --git a/src/diom.jl b/src/diom.jl index 9c61e513b..7bf23e355 100644 --- a/src/diom.jl +++ b/src/diom.jl @@ -32,16 +32,9 @@ If CG is well defined on `Ax = b` and `memory = 2`, DIOM is theoretically equiva If `k ≤ memory` where `k` is the number of iterations, DIOM is theoretically equivalent to FOM. Otherwise, DIOM interpolates between CG and FOM and is similar to CG with partial reorthogonalization. -Partial reorthogonalization is available with the `reorthogonalization` option. - -An advantage of DIOM is that nonsymmetric or symmetric indefinite or both nonsymmetric +An advantage of DIOM is that non-Hermitian or Hermitian indefinite or both non-Hermitian and indefinite systems of linear equations can be handled by this single algorithm. -This implementation allows a left preconditioner M and a right preconditioner N. - -The callback is called as `callback(solver)` and should return `true` if the main loop should terminate, -and `false` otherwise. - #### Input arguments * `A`: a linear operator that models a matrix of dimension n; diff --git a/src/dqgmres.jl b/src/dqgmres.jl index d0fe6ffaf..025016304 100644 --- a/src/dqgmres.jl +++ b/src/dqgmres.jl @@ -35,13 +35,6 @@ If MINRES is well defined on `Ax = b` and `memory = 2`, DQGMRES is theoretically If `k ≤ memory` where `k` is the number of iterations, DQGMRES is theoretically equivalent to GMRES. Otherwise, DQGMRES interpolates between MINRES and GMRES and is similar to MINRES with partial reorthogonalization. -Partial reorthogonalization is available with the `reorthogonalization` option. - -This implementation allows a left preconditioner M and a right preconditioner N. - -The callback is called as `callback(solver)` and should return `true` if the main loop should terminate, -and `false` otherwise. - #### Input arguments * `A`: a linear operator that models a matrix of dimension n; diff --git a/src/fgmres.jl b/src/fgmres.jl index b25131736..fa536af23 100644 --- a/src/fgmres.jl +++ b/src/fgmres.jl @@ -36,15 +36,6 @@ a Chebyshev iteration or another Krylov subspace method is used as a preconditio Compared to GMRES, there is no additional cost incurred in the arithmetic but the memory requirement almost doubles. Thus, GMRES is recommended if the right preconditioner N is constant. -Full reorthogonalization is available with the `reorthogonalization` option. - -If `restart = true`, the restarted version FGMRES(k) is used with `k = memory`. -If `restart = false`, the parameter `memory` should be used as a hint of the number of iterations to limit dynamic memory allocations. -More storage will be allocated only if the number of iterations exceeds `memory`. - -The callback is called as `callback(solver)` and should return `true` if the main loop should terminate, -and `false` otherwise. - #### Input arguments * `A`: a linear operator that models a matrix of dimension n; diff --git a/src/fom.jl b/src/fom.jl index b6d057998..6aabb33f5 100644 --- a/src/fom.jl +++ b/src/fom.jl @@ -29,16 +29,6 @@ Solve the linear system Ax = b of size n using FOM. FOM algorithm is based on the Arnoldi process and a Galerkin condition. -This implementation allows a left preconditioner M and a right preconditioner N. -Full reorthogonalization is available with the `reorthogonalization` option. - -If `restart = true`, the restarted version FOM(k) is used with `k = memory`. -If `restart = false`, the parameter `memory` should be used as a hint of the number of iterations to limit dynamic memory allocations. -More storage will be allocated only if the number of iterations exceeds `memory`. - -The callback is called as `callback(solver)` and should return `true` if the main loop should terminate, -and `false` otherwise. - #### Input arguments * `A`: a linear operator that models a matrix of dimension n; diff --git a/src/gmres.jl b/src/gmres.jl index 4a238f2a6..d475198b5 100644 --- a/src/gmres.jl +++ b/src/gmres.jl @@ -29,16 +29,6 @@ Solve the linear system Ax = b of size n using GMRES. GMRES algorithm is based on the Arnoldi process and computes a sequence of approximate solutions with the minimum residual. -This implementation allows a left preconditioner M and a right preconditioner N. -Full reorthogonalization is available with the `reorthogonalization` option. - -If `restart = true`, the restarted version GMRES(k) is used with `k = memory`. -If `restart = false`, the parameter `memory` should be used as a hint of the number of iterations to limit dynamic memory allocations. -More storage will be allocated only if the number of iterations exceeds `memory`. - -The callback is called as `callback(solver)` and should return `true` if the main loop should terminate, -and `false` otherwise. - #### Input arguments * `A`: a linear operator that models a matrix of dimension n; diff --git a/src/gpmr.jl b/src/gpmr.jl index 75cbcac26..958d2977c 100644 --- a/src/gpmr.jl +++ b/src/gpmr.jl @@ -29,7 +29,7 @@ export gpmr, gpmr! GPMR can be warm-started from initial guesses `x0` and `y0` where `kwargs` are the same keyword arguments as above. Given matrices `A` of dimension m × n and `B` of dimension n × m, -GPMR solves the unsymmetric partitioned linear system +GPMR solves the non-Hermitian partitioned linear system [ λIₘ A ] [ x ] = [ b ] [ B μIₙ ] [ y ] [ c ], @@ -51,8 +51,6 @@ and can solve when `CE = M⁻¹` and `DF = N⁻¹`. By default, GPMR solves unsymmetric linear systems with `λ = 1` and `μ = 1`. -If `gsp = true`, `λ = 1`, `μ = 0` and the associated generalized saddle point system is solved. -`λ` and `μ` are also keyword arguments that can be directly modified for more specific problems. GPMR is based on the orthogonal Hessenberg reduction process and its relations with the block-Arnoldi process. The residual norm ‖rₖ‖ is monotonically decreasing in GPMR. @@ -60,14 +58,6 @@ The residual norm ‖rₖ‖ is monotonically decreasing in GPMR. GPMR stops when `itmax` iterations are reached or when `‖rₖ‖ ≤ atol + ‖r₀‖ * rtol`. `atol` is an absolute tolerance and `rtol` is a relative tolerance. -Full reorthogonalization is available with the `reorthogonalization` option. - -Additional details can be displayed if verbose mode is enabled (verbose > 0). -Information will be displayed every `verbose` iterations. - -The callback is called as `callback(solver)` and should return `true` if the main loop should terminate, -and `false` otherwise. - #### Input arguments * `A`: a linear operator that models a matrix of dimension m × n; diff --git a/src/lnlq.jl b/src/lnlq.jl index e2d4f89bc..deda7336f 100644 --- a/src/lnlq.jl +++ b/src/lnlq.jl @@ -83,9 +83,6 @@ In this implementation, both the x and y-parts of the solution are returned. The bound is valid if λ>0 or σ>0 where σ should be strictly smaller than the smallest positive singular value. For instance σ:=(1-1e-7)σₘᵢₙ . -The callback is called as `callback(solver)` and should return `true` if the main loop should terminate, -and `false` otherwise. - #### Input arguments * `A`: a linear operator that models a matrix of dimension m × n; diff --git a/src/lslq.jl b/src/lslq.jl index a3b4307b2..420c8a1cb 100644 --- a/src/lslq.jl +++ b/src/lslq.jl @@ -47,14 +47,6 @@ LSLQ is formally equivalent to applying SYMMLQ to the normal equations but is more stable. -#### Main features - -* the solution estimate is updated along orthogonal directions -* the norm of the solution estimate ‖xᴸₖ‖₂ is increasing -* the error ‖eₖ‖₂ := ‖xᴸₖ - x*‖₂ is decreasing -* it is possible to transition cheaply from the LSLQ iterate to the LSQR iterate if there is an advantage (there always is in terms of error) -* if `A` is rank deficient, identify the minimum least-squares solution - If `λ > 0`, we solve the symmetric and quasi-definite system [ E A ] [ r ] [ b ] @@ -83,6 +75,14 @@ The system above represents the optimality conditions of In this case, `N` can still be specified and indicates the weighted norm in which `x` and `Aᴴr` should be measured. `r` can be recovered by computing `E⁻¹(b - Ax)`. +#### Main features + +* the solution estimate is updated along orthogonal directions +* the norm of the solution estimate ‖xᴸₖ‖₂ is increasing +* the error ‖eₖ‖₂ := ‖xᴸₖ - x*‖₂ is decreasing +* it is possible to transition cheaply from the LSLQ iterate to the LSQR iterate if there is an advantage (there always is in terms of error) +* if `A` is rank deficient, identify the minimum least-squares solution + #### Input arguments * `A`: a linear operator that models a matrix of dimension m × n; @@ -136,9 +136,6 @@ The iterations stop as soon as one of the following conditions holds true: * the lower bound on the LQ forward error is less than etol * ‖xᴸ‖ * the upper bound on the CG forward error is less than utol * ‖xᶜ‖ -The callback is called as `callback(solver)` and should return `true` if the main loop should terminate, -and `false` otherwise. - #### References * R. Estrin, D. Orban and M. A. Saunders, [*Euclidean-norm error bounds for SYMMLQ and CG*](https://doi.org/10.1137/16M1094816), SIAM Journal on Matrix Analysis and Applications, 40(1), pp. 235--253, 2019. diff --git a/src/lsmr.jl b/src/lsmr.jl index b9efa6237..781d9448a 100644 --- a/src/lsmr.jl +++ b/src/lsmr.jl @@ -84,9 +84,6 @@ The system above represents the optimality conditions of In this case, `N` can still be specified and indicates the weighted norm in which `x` and `Aᴴr` should be measured. `r` can be recovered by computing `E⁻¹(b - Ax)`. -The callback is called as `callback(solver)` and should return `true` if the main loop should terminate, -and `false` otherwise. - #### Input arguments * `A`: a linear operator that models a matrix of dimension m × n; diff --git a/src/lsqr.jl b/src/lsqr.jl index 39a044deb..36e5a8ef9 100644 --- a/src/lsqr.jl +++ b/src/lsqr.jl @@ -80,9 +80,6 @@ The system above represents the optimality conditions of In this case, `N` can still be specified and indicates the weighted norm in which `x` and `Aᴴr` should be measured. `r` can be recovered by computing `E⁻¹(b - Ax)`. -The callback is called as `callback(solver)` and should return `true` if the main loop should terminate, -and `false` otherwise. - #### Input arguments * `A`: a linear operator that models a matrix of dimension m × n; diff --git a/src/minres.jl b/src/minres.jl index 7f4dcd7b9..718a754be 100644 --- a/src/minres.jl +++ b/src/minres.jl @@ -54,12 +54,6 @@ A is indefinite. MINRES produces monotonic residuals ‖r‖₂ and optimality residuals ‖Aᴴr‖₂. -A preconditioner M may be provided in the form of a linear operator and is -assumed to be Hermitian and positive definite. - -The callback is called as `callback(solver)` and should return `true` if the main loop should terminate, -and `false` otherwise. - #### Input arguments * `A`: a linear operator that models a Hermitian matrix of dimension n; diff --git a/src/minres_qlp.jl b/src/minres_qlp.jl index 5f96a9616..d4d63266f 100644 --- a/src/minres_qlp.jl +++ b/src/minres_qlp.jl @@ -35,13 +35,8 @@ MINRES-QLP is the only method based on the Lanczos process that returns the mini solution on singular inconsistent systems (A + λI)x = b of size n, where λ is a shift parameter. It is significantly more complex but can be more reliable than MINRES when A is ill-conditioned. -A preconditioner M may be provided in the form of a linear operator and is -assumed to be Hermitian and positive definite. M also indicates the weighted norm in which residuals are measured. -The callback is called as `callback(solver)` and should return `true` if the main loop should terminate, -and `false` otherwise. - #### Input arguments * `A`: a linear operator that models a Hermitian matrix of dimension n; diff --git a/src/qmr.jl b/src/qmr.jl index c23a829f5..e24fba79a 100644 --- a/src/qmr.jl +++ b/src/qmr.jl @@ -37,10 +37,7 @@ Solve the square linear system Ax = b of size n using QMR. QMR is based on the Lanczos biorthogonalization process and requires two initial vectors `b` and `c`. The relation `bᴴc ≠ 0` must be satisfied and by default `c = b`. -When `A` is symmetric and `b = c`, QMR is equivalent to MINRES. - -The callback is called as `callback(solver)` and should return `true` if the main loop should terminate, -and `false` otherwise. +When `A` is Hermitian and `b = c`, QMR is equivalent to MINRES. #### Input arguments diff --git a/src/symmlq.jl b/src/symmlq.jl index 175082268..1da2c02f6 100644 --- a/src/symmlq.jl +++ b/src/symmlq.jl @@ -32,17 +32,10 @@ Solve the shifted linear system (A + λI) x = b -of size n using the SYMMLQ method, where λ is a shift parameter, -and A is Hermitian. +of size n using the SYMMLQ method, where λ is a shift parameter, and A is Hermitian. SYMMLQ produces monotonic errors ‖x* - x‖₂. -A preconditioner M may be provided in the form of a linear operator and is -assumed to be Hermitian and positive definite. - -The callback is called as `callback(solver)` and should return `true` if the main loop should terminate, -and `false` otherwise. - #### Input arguments * `A`: a linear operator that models a Hermitian matrix of dimension n; diff --git a/src/tricg.jl b/src/tricg.jl index 61f3389c8..4096a9ffe 100644 --- a/src/tricg.jl +++ b/src/tricg.jl @@ -28,7 +28,7 @@ export tricg, tricg! TriCG can be warm-started from initial guesses `x0` and `y0` where `kwargs` are the same keyword arguments as above. -Given a matrix `A` of dimension m × n, TriCG solves the symmetric linear system +Given a matrix `A` of dimension m × n, TriCG solves the Hermitian linear system [ τE A ] [ x ] = [ b ] [ Aᴴ νF ] [ y ] [ c ], @@ -38,11 +38,7 @@ of size (n+m) × (n+m) where τ and ν are real numbers, E = M⁻¹ ≻ 0 and F TriCG could breakdown if `τ = 0` or `ν = 0`. It's recommended to use TriMR in these cases. -By default, TriCG solves symmetric and quasi-definite linear systems with τ = 1 and ν = -1. -If `flip = true`, TriCG solves another known variant of SQD systems where τ = -1 and ν = 1. -If `spd = true`, τ = ν = 1 and the associated symmetric and positive definite linear system is solved. -If `snd = true`, τ = ν = -1 and the associated symmetric and negative definite linear system is solved. -`τ` and `ν` are also keyword arguments that can be directly modified for more specific problems. +By default, TriCG solves Hermitian and quasi-definite linear systems with τ = 1 and ν = -1. TriCG is based on the preconditioned orthogonal tridiagonalization process and its relation with the preconditioned block-Lanczos process. @@ -56,12 +52,6 @@ It's the Euclidean norm when `M` and `N` are identity operators. TriCG stops when `itmax` iterations are reached or when `‖rₖ‖ ≤ atol + ‖r₀‖ * rtol`. `atol` is an absolute tolerance and `rtol` is a relative tolerance. -Additional details can be displayed if verbose mode is enabled (verbose > 0). -Information will be displayed every `verbose` iterations. - -The callback is called as `callback(solver)` and should return `true` if the main loop should terminate, -and `false` otherwise. - #### Input arguments * `A`: a linear operator that models a matrix of dimension m × n; diff --git a/src/trilqr.jl b/src/trilqr.jl index 4fb2d6cce..e11a8a6c6 100644 --- a/src/trilqr.jl +++ b/src/trilqr.jl @@ -34,12 +34,6 @@ Combine USYMLQ and USYMQR to solve adjoint systems. USYMLQ is used for solving primal system `Ax = b` of size m × n. USYMQR is used for solving dual system `Aᴴy = c` of size n × m. -An option gives the possibility of transferring from the USYMLQ point to the -USYMCG point, when it exists. The transfer is based on the residual norm. - -The callback is called as `callback(solver)` and should return `true` if the main loop should terminate, -and `false` otherwise. - #### Input arguments * `A`: a linear operator that models a matrix of dimension m × n; diff --git a/src/trimr.jl b/src/trimr.jl index 4be1eb444..9da4dfa92 100644 --- a/src/trimr.jl +++ b/src/trimr.jl @@ -38,11 +38,6 @@ of size (n+m) × (n+m) where τ and ν are real numbers, E = M⁻¹ ≻ 0, F = N TriMR handles saddle-point systems (`τ = 0` or `ν = 0`) and adjoint systems (`τ = 0` and `ν = 0`) without any risk of breakdown. By default, TriMR solves symmetric and quasi-definite linear systems with τ = 1 and ν = -1. -If `flip = true`, TriMR solves another known variant of SQD systems where τ = -1 and ν = 1. -If `spd = true`, τ = ν = 1 and the associated symmetric and positive definite linear system is solved. -If `snd = true`, τ = ν = -1 and the associated symmetric and negative definite linear system is solved. -If `sp = true`, τ = 1, ν = 0 and the associated saddle-point linear system is solved. -`τ` and `ν` are also keyword arguments that can be directly modified for more specific problems. TriMR is based on the preconditioned orthogonal tridiagonalization process and its relation with the preconditioned block-Lanczos process. @@ -56,12 +51,6 @@ It's the Euclidean norm when `M` and `N` are identity operators. TriMR stops when `itmax` iterations are reached or when `‖rₖ‖ ≤ atol + ‖r₀‖ * rtol`. `atol` is an absolute tolerance and `rtol` is a relative tolerance. -Additional details can be displayed if verbose mode is enabled (verbose > 0). -Information will be displayed every `verbose` iterations. - -The callback is called as `callback(solver)` and should return `true` if the main loop should terminate, -and `false` otherwise. - #### Input arguments * `A`: a linear operator that models a matrix of dimension m × n; diff --git a/src/usymlq.jl b/src/usymlq.jl index db092c5a2..53aef51a3 100644 --- a/src/usymlq.jl +++ b/src/usymlq.jl @@ -43,12 +43,6 @@ It's considered as a generalization of SYMMLQ. It can also be applied to under-determined and over-determined problems. In all cases, problems must be consistent. -An option gives the possibility of transferring to the USYMCG point, -when it exists. The transfer is based on the residual norm. - -The callback is called as `callback(solver)` and should return `true` if the main loop should terminate, -and `false` otherwise. - #### Input arguments * `A`: a linear operator that models a matrix of dimension m × n; diff --git a/src/usymqr.jl b/src/usymqr.jl index 471fa5313..3876499b5 100644 --- a/src/usymqr.jl +++ b/src/usymqr.jl @@ -43,9 +43,6 @@ It's considered as a generalization of MINRES. It can also be applied to under-determined and over-determined problems. USYMQR finds the minimum-norm solution if problems are inconsistent. -The callback is called as `callback(solver)` and should return `true` if the main loop should terminate, -and `false` otherwise. - #### Input arguments * `A`: a linear operator that models a matrix of dimension m × n;