Solve A x = b
using the Quasi-Minimal Residual iterative method
(without look-ahead).
min (20, numel (b))
is used.
zeros (size (b))
is used.
A can be passed as a matrix or as a function handle or inline
function f
such that f(x, "notransp") = A*x
and
f(x, "transp") = A'*x
.
The preconditioner P is given as P = M1 * M2
. Both M1
and M2 can be passed as a matrix or as a function handle or inline
function g
such that g(x, "notransp") = M1 \ x
or
g(x, "notransp") = M2 \ x
and g(x, "transp") = M1' \ x
or
g(x, "transp") = M2' \ x
.
If called with more than one output parameter
(the value 2 is unused but skipped for compatibility).
References:
See also: bicg, bicgstab, cgs, gmres, pcg.
The following code
% Solve system of A*x=b A = [5 -1 3;-1 2 -2;3 -2 3]; b = [7;-1;4]; [x, flag, relres, iter, resvec] = qmr (A, b)
Produces the following output
x = 1.00000 1.00000 1.00000 flag = 0 relres = 1.2545e-14 iter = 3 resvec = 8.1240e+00 1.5301e+00 5.8757e-02 1.0192e-13
Package: octave