248 views (last 30 days)

Show older comments

I have to produce a random 3x3 matrix A that is invertible and display it. I have a couple questions:

- How do I know when a matrix is invertible? I used the command (inv) on the random 3x3 matrix that I had created and I got a 3x3 matrix with different numbers. Does this mean that the matrix is invertible?
- I also got a hint with the question: Use a while-loop until you get one with non-zero determinant. I am confused by this because I used the determinants command (det) on my 3x3 matrix and got a nonzero determinant. I feel like I might be missing something here.

Meg Noah
on 10 Jan 2020

Edited: Meg Noah
on 11 Jan 2020

Back to your question, I have to produce a random 3x3 matrix A that is invertible and display it. One way could be to start with a matrix that you know will have a determinant of zero and then add random noise to each element. It worked for me to generate random matrices that are invertable.

for MC = 1:10000

% first create a matrix that you know has a low rcond value:

A = double(uint32(1000.*rand(3,1)).*uint32(1000.*rand(1,3)));

% then add noise

C = A + 100.0*rand(3,3);

if (rcond(C)<1e-20)

disp('algorithm fails');

C

inv(C)

end

end

There were objections to this suggestion about checking the determinant value. I had said: If the determinant of a square matrix is 0, it can't be inverted. I'd suggestion to test with - using your tolerance on the last argument. See comments below.

Meg Noah
on 11 Jan 2020

But that wasn't the question. He has a task to produce a matrix that can be inverted.

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!