-
Notifications
You must be signed in to change notification settings - Fork 106
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
COCG and COCR #288
Comments
Since such a PR would strictly improve IterativeSolvers.jl by adding new methods, I'm pretty sure it will be accepted (if everything is in order). |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
If I generate pull requests for the conjugate orthogonal conjugate gradient (COCG) method and conjugate A-orthogonal conjugate residual (COCR) method, will they be accepted? I notice that COCG and COCR are not in the roadmap, but these are useful methods.
COCG is a modification of CG for non-Hermitian, complex symmetric matrices. In fact, COCG is equivalent to BiCG for complex symmetric matrices: BiCG uses two matrix-vector multiplications (a.k.a. mat-vecs), A x and Aᵀ x, per iteration, but for complex symmetric A we need only one mat-vec because Aᵀ = A, and this simplification is basically what COCG is. Therefore, COCG produces the same convergence curve as BiCG for complex symmetric A, but it is twice as fast as BiCG in time. BiCGStab(l) also uses two mat-vecs per iteration, so for some problems COCG converges faster than BiCGStab(l).
Similarly, COCR is a modification of the conjugate residual (CR) method for complex symmetric matrices. (CR is a simplification of GMRES for Hermitian matrices.) COCR also uses one mat-vec per iteration, and it is known to produce less oscillatory convergence curves than COCG.
A good overview of the two methods can be found in this freely available journal article. The implementation of these two methods is as simple as CG. I need these methods for my research, so I would be happy to create pull requests implementing them, if the requests will be accepted even though they are not in the roadmap.
The text was updated successfully, but these errors were encountered: