Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Write a function in Matlab that takes as input a size n and a tridiagonal matrix

ID: 3799482 • Letter: W

Question

Write a function in Matlab that takes as input a size n and a tridiagonal matrix given as three vectors: n × 1 vector v representing the main diagonal, (n 1) × 1 vector w representing the upper diagonal, and (n 1) × 1 vector z representing the lower diagonal. Have this function output the LU factorization with the U as two vectors and the L as one vector representing the diagonals. Also output the number of flops used. Use only basic programming.

(a) Write out or print out your function.

(b) Run the case with n = 10, v the vector of 2’s, w and z the vector of 1’s, and b the vector of 1’s. Write down your results for the diagonals of L and U.

(c) Run the case with n = 50 and n = 100 with v the vector of 2’s, w and z the vector of 1’s. Write down your results for the number of flops used

Explanation / Answer

Part a) The Matlab function Cholesky_factor.m

function[V,W,flp,sqt]= Cholesky_factor(n,v,w)

    flp = 0;sqt = 0; % initially flp and sqt are zeros

    V(1) = sqrt(v(1));% First element C11

    sqt = 1; % found one sqrt above

    for i = 2:n % for the computation of elements 2 to n-1

        W(i-1) = w(i-1)/V(i-1); % one devision involved

        flp = flp +1; % for the devision

        V(i) = sqrt(v(i)-W(i-1)^2);

       flp = flp+1; % one substraction

       sqt = sqt+1; % one sqrt involved

    end

end

Part b)

>> v =2*ones(10,1);

>> w = -ones(9,1);

>> n =10;

>> [V,W,flp,sqt]= Cholesky_factor(n,v,w)

V =

    1.4142    1.2247    1.1547    1.1180    1.0954    1.0801    1.0690    1.0607    1.0541    1.0488

W =

   -0.7071   -0.8165   -0.8660   -0.8944   -0.9129   -0.9258   -0.9354   -0.9428   -0.9487

flp = 18

sqt = 10

>> A=diag(V)+diag(W,-1);

>> A*A'

ans =

    2.0000   -1.0000         0         0         0         0         0         0         0         0

   -1.0000    2.0000   -1.0000         0         0         0         0         0         0         0

         0   -1.0000    2.0000   -1.0000         0         0         0         0         0         0

         0         0   -1.0000    2.0000   -1.0000         0         0         0         0         0

         0         0         0   -1.0000    2.0000   -1.0000         0         0         0         0

         0         0         0         0   -1.0000    2.0000   -1.0000         0         0         0

         0         0         0         0         0   -1.0000    2.0000   -1.0000         0         0

         0         0         0         0         0         0   -1.0000    2.0000   -1.0000         0

         0         0         0         0         0         0         0   -1.0000    2.0000   -1.0000

         0         0         0         0         0         0         0         0   -1.0000    2.0000

Part c)

>> v =2*ones(100,1);

>> w =-ones(99,1);

>> n =100;

>> [V,W,flp,sqt]= Cholesky_factor(n,v,w);

flp =

   198

sqt =

   100

198-18 = 180 flops are more

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote