Open in the MATLAB editor: f08wj_example
function f08wj_example fprintf('f08wj example results\n\n'); n = 5; a = [ 1.0 1.0 1.0 1.0 1.0; 2.0 4.0 8.0 16.0 32.0; 3.0 9.0 27.0 81.0 243.0; 4.0 16.0 64.0 256.0 1024.0; 5.0 25.0 125.0 625.0 3125.0]; b = a'; %' Balance A and B job = 'B'; [a, b, ilo, ihi, lscale, rscale, info] = ... f08wh(job, a, b); bbal = b(ilo:ihi,ilo:ihi); abal = a(ilo:ihi,ilo:ihi); % QR factorize balanced B [QR, tau, info] = f08ae(bbal); % Perform C = Q^T*A side = 'Left'; trans = 'Transpose'; [c, info] = f08ag( ... side, trans, QR, tau, abal); % Generalized Hessenberg form (C,R) -> (H,T) % Form Q explicitly and let Z = I. [q, info] = f08af(QR, tau); z = eye(n); jlo = int64(1); jhi = int64(ihi-ilo+1); compq = 'Vectors Q'; compz = 'Vectors Z'; [H, T, q, z, info] = ... f08we( ... compq, compz, jlo, jhi, c, QR, q, z); % Find eigenvalues of generalized Hessenberg form % = eigenvalues of (A,B). % and return Schur form for computing eigenvectors job = 'Schur form'; [HS, TS, alphar, alphai, beta, q, z, info] = ... f08xe( ... job, compq, compz, jlo, jhi, H, T, q, z); disp('Generalized eigenvalues of (A,B):'); w = complex(alphar+i*alphai); disp(w./beta); % Obtain scaled eigenvectors from Schur form side = 'Both sides'; howmny = 'Backtransformed using Q and Z'; select = [false]; [q, z, m, info] = f08yk( ... side, howmny, select, HS, TS, q, z, jhi); % rescale to obtain left and right eigenvectors of (A,B) job = 'Back scale'; side = 'Left'; [VL, info] = f08wj( ... job, side, jlo, jhi, lscale, rscale, q); side = 'Right'; [VR, info] = f08wj( ... job, side, jlo, jhi, lscale, rscale, z); disp('Left Eigenvectors'); disp(VL); disp('Right Eigenvectors'); disp(VR);
f08wj example results Generalized eigenvalues of (A,B): -2.4367 + 0.0000i 0.6069 + 0.7948i 0.6069 - 0.7948i 1.0000 + 0.0000i -0.4104 + 0.0000i Left Eigenvectors -0.0695 -0.2092 -0.0053 -0.0741 0.0494 0.1361 0.1635 0.1137 0.1354 -0.1061 -0.1000 -0.0463 -0.0537 -0.1000 0.1000 0.0319 0.0059 0.0148 0.0265 -0.0438 -0.0036 -0.0002 -0.0021 -0.0037 0.0070 Right Eigenvectors -0.0494 -0.2077 0.0257 -0.0741 -0.0695 0.1061 0.1785 0.0883 0.1354 0.1361 -0.1000 -0.0537 -0.0463 -0.1000 -0.1000 0.0438 0.0080 0.0138 0.0265 0.0319 -0.0070 -0.0006 -0.0021 -0.0037 -0.0036