행렬 A
의 에셜론 양식을 계산하면 프로그램을 작성하려고합니다. 여기 내 코드는 다음과 같습니다.행 에셜론의 행 바꾸기
function A = myrref(A)
[m,n]=size(A);
for j=1:min(m,n)
A(j,:) = A(j,:)/A(j,j);
for i = j+1:m
A(i,:)= A(i,:)- A(j,:)*A(i,j);
if A(i,i) == 0
row1=A(i,:);
A(i,:)=A(i+1,:);
A(i+1,:)=row1;
end
end
end
거의 제대로 작동하는 것처럼 보이지만 행을 바꿀 때 여전히 문제가 있습니다. 예를 들어, 행렬의 형식을 얻으 려 할 때 A=[1 1 1; 2 2 1; 1 2 2]
을 얻으면 나는 내가 원하는 바가 아닌 [1 1 1; 0.5 1 1; 0 0 -1]
을 얻습니다. 두 번째 행의 첫 번째 열에 0.5
을 처리하는 다른 루프를 추가해야합니까? @percusse 당신은 또한 당신의 피벗은 m-1
편집에 가야 루프를 완료 할 필요가 말했다 것처럼
단순히'RREF (A)가'당신이 원하지 않는 무엇? –
네,하지만 실제로 루프를 더 잘 이해할 수있는 프로그램을 작성하고 싶습니다. – ILoveMath
피벗이 0인지 결정하기 전에 열 루프를 마무리해야합니다. 그래서 당신이 교환 할 때 루프의 현재 인덱스 뒤에서 0이 아닌 값이 나오지 않도록하십시오. Row Juggling 대신에 순열 행렬을 곱하면 스왑이 더 쉽습니다. – percusse