2016-11-02 5 views
1

アルゴリズムの最初のステップは次のようになりますか?このGauss-elimination擬似コードの最初のステップは正しいですか?

// find the element with largest absolute value in col p and below row p-1 

だから、すべてのcolpの代わりに、その一部だけです。

アルゴリズム:

for p = 1 to n do 
    // find the element with largest absolute value in col p <-first step 
    // if max is zero, stop! 
    // if max element not in row p, swap rows 
    // set pivot element to 1 
    multiply row p by 1/A[p][p] 
    // clear lower column entries 
    for r = p+1 to n do 
     subtract row p times A[r,p] from current row, 
     so that element in pivot column becomes 0 
     // do backwards substitution 
    for row = n-1 to 1 
     for col = row+1 to n 
      // subtract out known quantities 
      b[row] = b[row] - A[row][col]*b[col] 

EDIT:

我々は、行列Aのアルゴリズムは、p = 3の最初のステップから始まる有します。私の質問は、{5,3,2、-1}(すべての要素od col p)または{2、-1}(行p-1の下にあるcol pの要素のみ)から最大の要素を選択する必要がありますか?

[1 2 3 5]

[0 1 3 4]

[0 0 2 2]

を= [0 0 -1 1]

+1

"行' p-1'の下の列 'p'で(ゼロでないもの)を検索します。はい、それはガウス消去の一歩です。それはあなたの実際の質問ですか?または、あなたのアルゴリズムがそれを正しく実装しているかどうかを知りたいですか? (その場合、コメント行を実装したいと思っています) – Teepeemm

+0

ガウス消去のすべてのステップを知っています。私はプログラムとしてアルゴリズムを実装したいので、performaceの問題のためにいくつかのトリックが必要です。だから、アルゴリズムはcol pから最大の要素を選ぶのです。この場合、アルゴリズムは前のステップでピボット要素を選択して行を入れ替えることができるため、正しいかどうかはわかりません。私はより具体的な質問を追加します。英語は私の母国語ではないので、ごめんなさい。 – ldurniat

答えて

0

はい、このステップは正しい。最初のp - 1行には既にピボット変数があります。新しいピボットは、ガウス消去アルゴリズムに従って異なる行になければなりません。

簡単な例:

あなたは2x2の行列を持っている場合は、最初の行がすでに処理され、行列が

[1, 2] 
[0, 1] 

のように見えますが、はっきりと(2、2)を選択する必要があり要素は、(1,2)ではなく、2番目の列のピボットとして使用します。

+0

あなたの答えと時間をありがとう。良い一日を:) – ldurniat

関連する問題