MATLAB Answers

3x3 matrix with while loop

10 views (last 30 days)
Benjamin Trivers
Benjamin Trivers on 21 Jan 2020
Commented: Jeremy Marcyoniak on 21 Jan 2020
Produce a random 3x3 matrix A that is invertible and display it. Hint: Use a while-loop until you get one with non-zero determinant. To create a random matrix with N rows and M columns,use the MATLAB command rand(N,M).
I know how to produce the 3x3 matrix and how to display it. I am just a little confused on how to use the while-loop. Can someone please help me?

  2 Comments

Alex Mcaulley
Alex Mcaulley on 21 Jan 2020
determinant = 0;
while determinant == 0
%Generate the random matrix
%Calculate the determinant of that matrix
end
Benjamin Trivers
Benjamin Trivers on 21 Jan 2020
I made a script for this one, and it just ran forever
I need it to stop if the determinate = 0

Sign in to comment.

Answers (1)

Jeremy Marcyoniak
Jeremy Marcyoniak on 21 Jan 2020
n = 3; m = 3;
A = zeros(n,m);
while det(A) == 0
A = rand(n,m);
end

  4 Comments

Show 1 older comment
Jeremy Marcyoniak
Jeremy Marcyoniak on 21 Jan 2020
"Use a while-loop until you get one with non-zero determinant"
The problem asks for an invertible matrix, meaning that the inverse exists. You are looking for a determinant that is not equal to zero.
A zero determinant would not be an invertible matrix (i.e., the inverse does not exist because the determinant is zero).
Benjamin Trivers
Benjamin Trivers on 21 Jan 2020
just a little confused. the end of the question stated "Use disp to print matrices" so i thought i was looking for more than one matrix
sorry just confused
Jeremy Marcyoniak
Jeremy Marcyoniak on 21 Jan 2020
Using rand, it's fairly unlikely that you'll create a matrix whose determinant is 0. It'd probably be easier to get a 0 determinant with randi
That being said, maybe running this will help you see what's going on
n = 3; m = 3;
A = zeros(n,m);
k = 0;
while det(A) == 0
A = rand(n,m);
k = k + 1;
fprintf(1,'\nIteration Number %i \n',k)
fprintf(1,' Matrix A = \n\n')
disp(A)
fprintf(1,'The Determinant of Matrix A is: \n')
disp(det(A))
end
And if you wanted an (approximately) zero determinant:
n = 3; m = 3;
A = eye(n,m);
k = 0;
while abs(det(A)) > 0.001
A = rand(n,m);
k = k + 1;
fprintf(1,'\nIteration Number %i \n',k)
fprintf(1,' Matrix A = \n\n')
disp(A)
fprintf(1,'The Determinant of Matrix A is: \n')
disp(det(A))
end
Using randi instead:
n = 3; m = 3;
A = eye(n,m);
k = 0;
while det(A) ~= 0
A = randi([0 10],n,m);
k = k + 1;
fprintf(1,'\nIteration Number %i \n',k)
fprintf(1,' Matrix A = \n\n')
disp(A)
fprintf(1,'The Determinant of Matrix A is: \n')
disp(det(A))
end
I hope this helps

Sign in to comment.

Sign in to answer this question.