私は、任意の行列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]
私は欲しいものではありません取得します。 2列目の最初の列に0.5
を処理する別のループを追加する必要がありますか?
は単に 'RREF(A)'あなたが望んでいないとは何ですか? –
はい、実際にループを理解するためのプログラムを書いています。 – ILoveMath
ピボットがゼロであるかどうかを判断する前に、列ループを終了する必要があります。そのため、スワップするときに、ループの現在のインデックスの後ろに0以外の値がないようにします。列ジャグリングの代わりに置換行列を掛けるだけでスワップが簡単になります – percusse