MACM 316 Computing Assignment 2 1 of 2 Due Date: June 2nd, at 11pm. You must upload both your code (to Assignment 2 scripts/codes) and your report (to Assignments 2 computing report). The assignment is due at 11:00pm. I have set the due time in Canvas to 11.05pm and if Canvas indicates that you submitted late, you will be given 0 on the assignment. Your computing report must be exactly 1 page. Assignments that are longer than a single page will automatically receive zero. Please read the Guidelines for Assignments first. Keep in mind that Canvas discussions are open forums. Acknowledge any collaborations and assistance from colleagues/TAs/instructor. Computing Assignment Gaussian Elimination on a large random matrix Required submission: 1 page PDF document and Matlab code uploaded to Canvas. To complete this assignment, I suggest you download in class demo LSRandom.m from Canvas (lecutre notes page). You will need to modify this script suitably in order to complete the assign- ment. Also, you may find the following Matlab commands useful: 1. A spdiags(rand(N.3), -1:1, N,N); which creates a tridiagonal matrix with random entries along each diagonal. 2. log log(N.it, Err, ‘r which plots the error versus N in a loglog plot. 3. p polyfit(log10(Nit), log10(Err), 1); which fits a straight line to the loglog data. In class we saw that finite precision computations with Gaussian Elimination, implemented via Matlab’s backslash command, leads to small errors for small matrices but possibly larger errors for larger matrices. The purpose of this assignment is to quantify the growth of this error for tridiagonal matrices. A tridiagonal matrix is a matrix with non-zero entries only on the main diagonal, as well as the diagonals above and below the main diagonal. a1,1 a2,1 0 a1.2 2,2 a2,3 an-1 n-2 an-1, an,n-1 Let A be a random N xN tridiagonal matrix, (1,1 1)T be an N-vector of ones and b Az be the right-hand side vector. As in class, let (2) e RN be the resulting vector Alb,
Expert Answer
Editable code:
%part a
clc;clear all;
n = 10 ; %Values
Mat = 100; % trials
for p = 1:n % loop
N(p) = 2^p; % matrix
x = ones(N(p),1);
for k = 1:Mat % loop
Aval = spdiags(rand(N(p),3),-1:1,N(p),N(p));
bval = Aval*x; %b value
z = Avalbval; % gauss elimination
delval(k) = max(abs(x-z)); % Error
end
ENval(p) = sum(delval)/Mat; % Computing the average error
end
loglog(log10(N),log10(ENval),’r*’);% Plot
xlabel(‘log10(N)’);
ylabel(‘log10(Error)’);
title(‘Plot of log(Enval) VS log(N)’);
a = polyfit(log10(N),log10(ENval),1); % fit
fun = @(x) a(1)*x+a(2); % data
hold on;
loglog(log10(10.^(1:12)),fun(log10(10.^(1:12))),’k’); %Fit
figure(2)
loglog(N,ENval,’r*’);% Plot
xlabel(‘N’);
ylabel(‘Error’);
title(‘Plot of En VS N’);
estimate = (1-a(2))/a(1); %star
star = 10^(-a(2)/a(1));
fprintf(‘The estimate value of N* = %f, corresponding Error = %fn’,star,fun(estimate));