Homework 5
Section 6.3: 1d, 2c, 5b, 9c, 11b
Section 6.4: 1b, 6, 8, 10
Section 6.5: 4a, 5a, 6a
Contents
Computer Assignment 5
Due Thursday, Nov 3 at 11:59pm
Use the pseudocode given below to implement a function GEcp() that performs Gaussian elimination with complete pivoting. This is very involved so it is suggested that you look at this early.
function [A,X] = GEcp(A)
INPUT: A is an n x m matrix
OUTPUT: A an n x m upper-triangular matrix and a vector X that tracks the reordering of the unknowns, or a message of failure
STEP 1: Set X = [1,2,3,...,n]^T;
STEP 2: For i = 1,2,...,n-1 do STEPS 3-10
STEP 3: Set MAX to be the maximum of max(abs(A(j,i:n)) for j =
i,i+1,..,n
STEP 4: If MAX = 0 then
DISPLAY('Method failed: matrix is rank deficient')
OUTPUT(A);
STOP.
STEP 5: Let p be the smallest number such that MAX = max(abs(A(p,i:n));
STEP 6: Let q be the smallest number such that MAX = max(abs(A(p,q)));
STEP 7: Do Ri <--> Rp on A;
STEP 8: Do Ci <--> Cq on A;
STEP 9: Do Ri <--> Rq on X;
STEP 10: For j = i+1,i+2,...,n do STEP 6
STEP 11: Do Rj - A(j,i)/A(i,i) Ri --> Rj on A
STEP 12: OUTPUT([A,X]); STOP.The output of this function when called by
[U,X] = GEcp([A,b])
is an upper triangular
matrix U and a vector X that tracks the unknowns after column operations. You can then solve for the permuted unknowns with
y = Backsub(U);
Then you must reverse the swaps via:
x = zeros(n,1);
for i = 1:n
x(X(i)) = y(i);
endFirst confirm that your code works. Then perform the following test (This requires your GE and Backsub code. You may use the solution code, if you like.):
n = 60; errorGE = zeros(100,1); errorGEcp = zeros(100,1); for j = 1:100 A = rand(n); b = rand(n,1); A(1,:) = A(2,:) + 0.000001*A(1,:);
errorGE(j) = max(abs(A*Backsub(GE([A,b]))-b));
[U,X] = GEcp([A,b]);
y = Backsub(U);
x = zeros(n,1);
for i = 1:n
x(X(i)) = y(i);
end
errorGEcp(j) = max(abs((A*x-b));
end
mean(errorGEcp)
mean(errorGE)Comment on what this test doing and what you notice about the output.
Solution
function [A,X] = GEcp(A) % your function here end