Mercurial > hg > octave-lyh
changeset 17430:7ad3b9ca66f5
fix behaviour of bicgstab for complex matrices (bug #40017)
* scripts/sparse/bicgstab.m: fix computation of complex scalar products.
author | Marco Caliari <marco.caliari@univr.it> |
---|---|
date | Mon, 16 Sep 2013 14:59:25 +0200 |
parents | 577a19afdaf5 |
children | 0b93af1023f6 |
files | scripts/sparse/bicgstab.m |
diffstat | 1 files changed, 7 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/scripts/sparse/bicgstab.m +++ b/scripts/sparse/bicgstab.m @@ -145,7 +145,7 @@ flag = 1; for iter = 1:maxit - rho_1 = res' * rr; + rho_1 = rr' * res; if (iter == 1) p = res; @@ -163,7 +163,7 @@ shat = precon (s); t = Ax (shat); - omega = (t' * s) / (t' * t); + omega = (s' * t) / (t' * t); x = x + alpha * phat + omega * shat; res = s - omega * t; rho_2 = rho_1; @@ -248,3 +248,8 @@ %! [x, flag, relres, iter, resvec] = bicgstab (A, b, tol, [], diag (diag (A))); %! assert (x, ones (size (b)), 1e-7); +%!test +%! A = [1 + 1i, 1 + 1i; 2 - 1i, 2 + 1i]; +%! b = A * [1; 1]; +%! [x, flag, relres, iter, resvec] = bicgstab (A, b); +%! assert (x, [1; 1], 1e-6);