Write a function in Matlab that takes as input the number n

Write a function in Matlab that takes as input the number n, the size of matrices and vectors; m, the number of nonzero elements of a sparse matrix; and the sparse matrix whose nonzeros are given in m-component column vectors r, c, and v: the rk row, ck column entry of the matrix is nonzero with value vk, for k = 1, . . . , m. Finish the program in the following way:

(a) Have the function output the actual n × n matrix A represented. Write out or print out your function.

(b) Have the function accept also the input of x, an n-component vector, and, working directly with the r, c, and v, output the matrix-vector multiplication between the sparse matrix and the vector x, and the number of flops involved. Write out or print out your function.

(c) Assuming the sparse matrix is lower triangular and c is in non-decreasing order, have the function accept also the input of b, an n-component vector, and, working directly with the r, c, and v, output column-oriented forward substitution solving for A1 b, and the number of flops involved. Write out or print out your function.

Solution

Part a)

function A = GenerateMatrix(n,m,r,c,v) % the function
   A = zeros(n); % Creating the zero entries
   for i = 1:m
       A(r(i),c(i)) = v(i); % adding the nonzero entries
   end
end

FUNCTION TESTING

>> n=4;
>> m=6;
>> r=[1 1 2 3 4 4];
>> c=[2 3 3 1 2 4];
>> v=[1 2 2 1 1 1];
>> A = GenerateMatrix(n,m,r,c,v)

A =

     0     1     2     0
     0     0     2     0
     1     0     0     0
     0     1     0     1

Part b)

function [A,fl] = GenerateMatrix(x,n,m,r,c,v) % the function
   A = zeros(n,1); % initial value
   fl = 0;
   for i =1:m
       A(r(i)) = A(r(i))+v(i)*x(c(i)); % computing the product
       fl = fl+2; % tow operation per loop +,*
   end
end

Checking the function

>> x=[1;2;3;4];
>> n=4;
>> m=6;
>> r=[1 1 2 3 4 4];
>> c=[2 3 3 1 2 4];
>> v=[1 2 2 1 1 1];
>> [A,fl] = GenerateMatrix(x,n,m,r,c,v);
>> A

A =

     8
     6
     1
     6

>> fl

fl =

    12

Part C)

function [x,fl] = GenerateMatrix(b,n,m,r,c,v) % the function
A = zeros(n); % Creating the zero entries
x = zeros(n,1);% solution vector
fl =0;
   for i = 1:m
       A(r(i),c(i)) = v(i); % Matrix
   end
   for j = 1:n % column-oriented forward substitution
       x(j) = b(j)/A(j,j);
       b(j+1:n) = b(j+1:n) - A(j+1:n,j)*(x(j));
       fl = fl + 1 + 2*(n-j-1);
   end
end

Testing the function

>> b = [1;2;3;4];
>> c = [1 1 2 2 3 4];
>> r = [1 3 2 4 3 4];
>> v = [1 2 2 1 1 1];
>> n =4;
>> m =6;
>> [A,fl] = GenerateMatrix(b,n,m,r,c,v);
>> A

A =

     1
     1
     1
     3

>> fl

fl =

     8

Write a function in Matlab that takes as input the number n, the size of matrices and vectors; m, the number of nonzero elements of a sparse matrix; and the spa
Write a function in Matlab that takes as input the number n, the size of matrices and vectors; m, the number of nonzero elements of a sparse matrix; and the spa

Get Help Now

Submit a Take Down Notice

Tutor
Tutor: Dr Jack
Most rated tutor on our site