这个高斯消除伪代码的第一步是否正确?

时间:2016-11-02 19:22:33

标签: algorithm math equation-solving

算法的第一步应该如下所示吗?

// 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行下面)?< / p>

[1 2 5 3]

[0 1 3 4]

[0 0 2 2] = A

[0 0 -1 1]

1 个答案:

答案 0 :(得分:0)

是的,这一步是正确的。第一个p - 1行中已包含透视变量。根据高斯消元算法,新的轴必须在不同的行中。

一个简单的例子:

如果您有2x2矩阵,则第一行已经处理,矩阵看起来像是

[1, 2] 
[0, 1]

你显然需要选择(2,2)元素作为第二列的枢轴,而不是(1,2)。