# HG changeset patch # User "Vladimir Polishchuk" # Date 1377198755 -10800 # Node ID 5eb40babc4a93f81ac8092c334b7dada23c944f0 # Parent 3abed16370adc301fcfd0146747e81f6fa4f8ec5 add test krylov diff -r 3abed16370ad -r 5eb40babc4a9 scripts/linear-algebra/krylov.m --- a/scripts/linear-algebra/krylov.m Thu Aug 22 18:03:09 2013 +0200 +++ b/scripts/linear-algebra/krylov.m Thu Aug 22 22:12:35 2013 +0300 @@ -244,3 +244,36 @@ b1 = a; endfunction + +%!test +%! n = 10; +%! k = 7; +%! A = rand (n, n); +%! v = rand (n, 1); +%! [U, H, nu] = krylov (A, v, k); +%! Utest = v; +%! if k >= 2 +%! for i = 1:(k-1) +%! Utest = [v, A * Utest]; +%! endfor +%! for i = 1:k +%! nor = norm(Utest(:,i),inf); +%! if nor != 0 +%! Utest(:,i)/=nor; +%! endif +%! endfor +%! endif +%! UtestO = orth (Utest); +%! [~, s] = size (U); +%! [~, s1] = size(UtestO); +%! [s2, s3] = size(H); +%! assert(s1, s); +%! assert(nu, s); +%! assert(s2, s3); +%! assert(s2, s); +%! assert(subspace (U, Utest), 0, 1e-11); +%! assert(U'*U, eye (s), 100 * eps); +%! ek = [zeros(1,k-1),1]; +%! rk = A*U(:,k)-U*H(:,k); +%! assert(A * U, U * H + rk * ek, 10 * eps); +