Assignment_2_test_scripts

 

P1

% P1 Examines OrthoDet

n = 10;
nTrials = 1000;
clc
randn('seed',0);
nCorrect = 0;
for eg=1:nTrials
   [U,S,V] = svd(randn(n,n));
   if det(U)*OrthoDet(U) > 0
      nCorrect = nCorrect + 1;
   end
end
disp(sprintf('Number correct in %1d trials = %1d',nTrials,nCorrect))

 

 

P2

% P2 Explores the quality of Cond1Norm

clc
randn('seed',0);
disp('ratio = Cond1Norm(T) / (norm(T,1)*norm(inv(T),1))')
disp(' ')

disp('Approx Cond(T,2)    minRatio        aveRatio')
disp('---------------------------------------------------')
nTrials = 100;
n = 50;
for k=1:12
    % Examine how close the estimated condition number is to the "true"
    % condition number. Report both average and worst case.
    s = 0;
    for m = 1:nTrials
        % Generate a random upper triangular matrix T with 
        % 2-norm condition 10^k
        [U,S,V] = svd(randn(n,n));
        S = diag(linspace(1/10^k,1,n));
        [Q,T] = qr(U*S*V');
        
        ratio = Cond1Norm(T)/cond(T,1);
        s = s + ratio;
        if m==1
            minRatio = ratio;
        else
            minRatio = min(ratio,minRatio);
        end
    end
    aveRatio = s/nTrials;
    disp(sprintf('     10^%2d        %10.3f      %10.3f',k,minRatio,aveRatio))
end




P3

% P3  Tests MarkovSol

randn('seed',0)
rand('seed',0)
format long
n = 15;
q = 3;
f = randn(n,1); g = randn(n,1); 
u = randn(q,1); v = randn(q,1);
b = rand(n,1); 
clc
[x0,X] = MarkovSol(f,g,u,v,b)