Assignment 1 Scripts and Functions

For P2...
x = -20;
sum = 1; k = 1; term = x; next = sum + term;
while next~=sum
   sum = next; k = k+1; term = x*term/k; next = sum + term;
end
format long
sum = next
exact = exp(x)


Recover
  function v = Recover(A,v0,k)
% A is an n-by-n nonsingular matrix, v0 is a column n-vector, and
% k is a positive integer.
% Multiplies v0 by A a total of k times and then attempts to recover
% v0 by solving a sequence of k linear systems involving A.

for j=1:k
   v0 = A*v0;
end

for j=1:k
   v0 = A\v0;
end
v = v0;
P4
% P4 The Effect of Condition

n = 100;
% Generate a random Markov matrix...
rand('seed',0)  % ensures that we all solve the same problem
A = rand(n,n);

% Normalize the columns...
for k=1:n 
    A(:,k) = A(:,k)/sum(A(:,k));
end

% Initial vector
v0 = rand(n,1);
v0 = v0/sum(v0);

kappa = cond(A);

clc
disp(sprintf('cond(A) = %10.3e',kappa))
disp('   ')
disp(' k   norm(v0-v1)/norm(v0)')
disp('------------------------------')
for k=1:6
    v1 = Recover(A,v0,k);
    err = norm(v1-v0)/norm(v0);
    disp(sprintf(' %2d     %10.3e',k,err))
end

P5
% P5 Structured Solutions

close all
n = 10;
rand('seed',0)
% Generate a random A...
A = rand(n,n);
for j=1:n
    A(j,j) = 0;
    A(j,j) = -sum(A(:,j));
end

clc
for t=[.5 1 2 4]
    % Plot the error as a function of q...
    F0 = expm(A*t);
    eVec = [];
    for q = 1:16 
        F = Pade(A,t,q);
        AbsErr = norm(F-F0);
        eVec = [eVec AbsErr];
    end
    figure
    semilogy(eVec)
    title(sprintf('Error in Rqq(At) for t = %5.2f',t))
    xlabel('q')
end