function [R,err,lambda_n] = implQR_shift_defl(A,m) % explicit QR-algorithm % Input: A - matrix % m - number of iterations % Output: R - upper triangular matrix % err - velikosti prvku A(n,n-1) % lambda_n - aproximace nejmensiho vl.c. R=A; err = []; lambda_n = A; n = size(A,1); if n == 1 return; end err = [abs(A(n,n-1))]; lambda_n = A(n,n); for i=1:m, A = createbulge(A, lambda_n(end)); A = bulgechasing(A); err = [err,abs(A(n,n-1))]; if err(end) < 1e-12 % deflace [Rin, errIn, lambda_nIn] = implQR_shift(A(1:end-1, 1:end-1),m); err = [err, errIn]; lambda_n = [lambda_n, lambda_nIn]; A(1:end-1, 1:end-1) = Rin; break; end lambda_n = [lambda_n, A(n,n)]; end R=A;