A6 Scripts

P1

% P1

clc
randn('seed',0)
format long

% Check normalSchur2...

disp('Check normalSchur2...')
A = [ 1  2; -5 3]
[Q,T] = normalSchur2(A)
disp('Q''*A*Q - T ='); disp(' '); disp(Q'*A*Q - T); 
disp('Q''*Q - I =');     disp(' '); disp(Q'*Q-eye(2,2))

% Check normalSchur...

n = 9;
disp('------------------------------------- ')
disp(' ')
disp('Check normalSchur on an n = 9 example...')
disp(' '); disp(' '); disp('T = '); disp(' ')
A = randn(n,n); [Q,T] = normalSchur(A);
for k=1:n
   disp(sprintf('   %5.2f',T(k,:)))
end
disp(' ')
disp(sprintf('|| Q''*Q - I ||   = %10.3e',norm(Q'*Q-eye(n,n))))
disp(' ')
disp(sprintf('|| Q''*A*Q - T || = %10.3e',norm(Q'*A*Q - T)))

P2

% P2
% Checks MyExpM

clc

T = [-1  2; -8 -1]
F = MyExpM(T)
F0 = expm(T)

disp('------------------------')
disp(' '); disp('An n = 9 example...'); disp(' ')
disp('MyExpM(T) = '); disp(' ')
randn('seed',0);
n = 9;
A = randn(n,n);
[Q,T] = normalSchur(A);

F = MyExpM(T);
for k=1:n
   disp(sprintf('   %5.2f',F(k,:)))
end

F0 = expm(T);
error = norm(F - F0)/norm(F0);
disp(' ')
disp(sprintf('||MyExpM(T) - expm(T)||/ || expm(T)|| = %10.3e',error))

P3

%P3
% Checks Swap3

clc

T0 = [ 2 3 4 ; 0 2 1 ; 0 -10 3]
disp('Eigenvalues ='); disp(' '); disp(eig(T0))

[Q,T] = Swap3(T0);

disp('T = Q''*T0*Q ='); disp(' '); disp(Q'*T0*Q)
disp('Eigenvalues ='); disp(' '); disp(eig(T)); disp(' ')
disp(sprintf('|| Q''*Q - I ||    = %10.3e',norm(Q'*Q - eye(3,3))))

P4

% P4
% Checks OrderedSchur

clc
randn('seed',0)

n = 9;
A = randn(n,n);
[Q,T] = OrderedSchur(A);

disp('T = '); disp(' ')
for k=1:n
   disp(sprintf('   %5.2f',T(k,:)))
end

disp(' ')
disp(sprintf('|| Q''*Q - I ||   = %10.3e', norm(Q'*Q - eye(n,n))))
disp(sprintf('|| Q''*A*Q - T || = %10.3e',norm(Q'*A*Q - T)))

% Count the number of 2-by-2 blocks
p = sum(abs(diag(T,-1))>norm(T,1)*eps);
Complex_Eigenvalues = eig(Q(:,1:2*p)'*A*Q(:,1:2*p))
Real_Eigenvalues = eig(T(2*p+1:n,2*p+1:n))
A_eigenvalues = eig(A)