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));