2016-12-18 17 views
0

下三角行列のガウス消去に関する問題がありますが、ここでループがどのように機能するのか想像できません。私はループを後方に走ろうとしたが、それは役に立たなかった。今のところは、上三角行列のガウス消去です。下三角行列のガウス消去

For[k = 1, k <= size - 1, k++, 
    For[i = k + 1, i <= size, i++, 
     If[tab[[k]][[k]] != 0, 
     help = tab[[i]][[k]]/tab[[k]][[k]]; 
     For[j = k, j <= size, j++, 
     tab[[i]][[j]] = tab[[i]][[j]] - help*tab[[k]][[j]]; 
     identity[[i]][[j]] = identity[[i]][[j]] - help*tab[[k]][[j]] 
     ] 
     ] 
     ] 
    ] 

誰かが私を助けてくれますか?

@edit

私はその

For[k = size, k > 1, k--, 
For[i = k - 1, i >= 1, i--, 

のようなループを作り、それが動作するように思えるが、これら二つのループが正則行列を与えるものではありませんので、今、私は、問題を持っています。

例マトリックス:アイデンティティ・マトリックスのための上位対角

[3 4 2 ] 
[0 -5/3 5/3 ] 
[0 0 6 ] 

出力

[1 0  0 ] 
    [-5 -17/3 -10/3 ] 
    [-1 -5 -4 ] 

そして今の

[ 3 4 2 ] 
[ 5 5 5 ] 
[ 1 5 3 ] 

出力、私は下の対角のためのループを実行し、その出力は正しくありません。メインの対角線を分割しない

+0

あなたは['RowReduce'](http://reference.wolfram.com/language/ref/RowReduce.html)を見たことがありますか?他の多くの線形代数ガイドにリンクしている[行列と線形代数](http://reference.wolfram.com/language/guide/MatricesAndLinearAlgebra.html)ガイドをご覧ください。 – Edmund

+0

mathematicaの 'For'ループはCと少し違うことに注意してください。C/C++では、インデックスのインクリメントはループ演算後に実行されます。 –

+0

は、いくつかの小さな行列と期待される結果を示しています。コーディングの問題や線形代数に問題があるかどうかは不明です(上三角行列のガウス消去は何もしません)。 – agentp

答えて

0

実際、私はこの問題を発見しましたが、どのように解決できるかわかりません - 上三角マトリックスループはうまく動作しますが、問題は下三角それは対角要素を分割しません。

関連する問題