Why is my own echelon function printing incorrect matrix

1 visualización (últimos 30 días)
I am trying to create an echelon function, however, I am having trouble debugging my error. It works for almost all matrices but for the following matrix it gives an incorrect result:
A=[1 2 3 ; 1 2 4 ; 1 2 4]
echelon(A)
function x = echelon(A)
[m,n]= (size(A)); % m= rows , %n= columns
j=1;
i=1;
while( i <m )
for k=i+1:m
if (A(i,j)==0)
C = A(i,:); %Let C be the ith first row of the matrix
A(i,:)= A(i+1,:);%Exchange the row with the one below it
A(i+1,:) = C %Let C be the row that was above now (This code swaps rows)
end
if ~all(A(k,:)==0) %check to see if row of zeros or not
A(k,:)=A(k,:)-((A(k,j)/A(i,j))*A(i,:)) %zero out corresponding row
end
end
j=j+1;
i=i+1;
end
x=A
end
It gives the following incorrect result:
1 2 3
0 0 1
0 0 1
Also for the following matrix:
A=[1 2 3 ; 1 2 5]
gives the following incorrect result:
1 2 3
0 0 2
  2 comentarios
James Tursa
James Tursa el 24 de Sept. de 2019
Are you trying to produce any row echelon form, or the reduced row echelon form?
Natalie Murawski
Natalie Murawski el 24 de Sept. de 2019
Just echelon form, not reduced echelon form, so just with 1 as pivots.

Iniciar sesión para comentar.

Respuesta aceptada

James Tursa
James Tursa el 24 de Sept. de 2019
I haven't checked all of your code, but I assume this:
if ~all(A(k,:))==0 %check to see if row of zeros or not
was meant to be this instead:
if ~all(A(k,:)==0) %check to see if row of zeros or not
Also, you divide by A(i,j) before checking to see if it is 0.
  3 comentarios
James Tursa
James Tursa el 24 de Sept. de 2019
Editada: James Tursa el 24 de Sept. de 2019
Best way to debug at this point is to step through your code line by line and see what is happening to A at each step. Then you can easily find where that divide by 0 is happening and correct it. If you still have problems, post your current code and ask more questions.
What algorithm are you using to ensure you are not dividing by 0? Looks like you may need to rethink how you are doing your row swapping.
Natalie Murawski
Natalie Murawski el 24 de Sept. de 2019
Alright, thank you!

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Get Started with MATLAB en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by