2016-11-02 35 views
1

算法的第一步應該如下圖所示?此高斯消除僞代碼的第一步是否正確?

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

所以不是所有的col p只是它的一部分。

算法:

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] 

編輯:

我們有矩陣A.算法從其中p = 3的第一步開始。我的問題是:我應該從{5,3,2,-1}(所有元素od col p)還是{2,-1}選擇最大元素(只有來自col p的元素低於行p-1)?

[1 2 5 3]

[0 1 3 4]

[0 0 2 2] = A

[0 0 -1 1]

+1

」在行'p-1'下面的列'p'中查找(不是零的東西)「。是的,這是高斯消除的一個步驟。這是你真正的問題嗎?還是你想弄清楚你的算法是否正確實現了它? (在這種情況下,你想要實現註釋行。) – Teepeemm

+0

我知道高斯消元的所有步驟。因爲我想實現算法作爲程序,由於性能問題,它需要一些技巧。所以這就是算法從col p中選取最大元素的原因。我不確定它是否正確,因爲在這種情況下,算法可以在上一步中選擇與選擇軸元素的行。我添加更具體的問題。英語不是我的母語,所以對不起:) – ldurniat

回答

0

是的,這一步是正確的。第一行p - 1行中已經有pivot變量。根據高斯消除算法,新的支點必須在不同的行中。

一個簡單的例子:

如果你有一個2x2矩陣,第一行已經處理和矩陣看起來像

[1, 2] 
[0, 1] 

你顯然需要選擇(2,2)元素作爲第二列的支點,而不是(1,2)。 「

+0

感謝您的回答和時間。祝你今天愉快:) – ldurniat