2016-11-02 5 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] 

РЕДАКТИРОВАТЬ:

Мы имеем матрицы А. Алгоритм начинается с первого шага с р = 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 »ниже строки' p-1' ». Да, это шаг в устранении Гаусса. Это ваш реальный вопрос? Или вы хотите выяснить, правильно ли ваш алгоритм реализует его? (В этом случае вам нужно реализовать прокомментированные строки.) – Teepeemm

+0

Я знаю все этапы устранения Гаусса. Поскольку я хочу реализовать алгоритм в качестве программы, ему нужен какой-то трюк из-за проблемы с производительностью. Вот почему алгоритм выбирает самый большой элемент из col p. Я не уверен, что это правильно, потому что в этом случае алгоритм может поменять местами с помощью элемента pivot на предыдущем шаге. Я добавляю более конкретный вопрос. Английский не мой родной язык, так извините за это :) – ldurniat

ответ

0

Да, шаг правильный. В первых рядах p - 1 в них есть сводные переменные. Новый опорный элемент должен находиться в другой строке в соответствии с алгоритмом исключения Гаусса.

Простой пример:

Если у вас есть матрица 2х2, первая строка уже обработана и матрица выглядит

[1, 2] 
[0, 1] 

вам явно нужно выбрать (2, 2) элемент как опорный элемент для второго столбца, а не (1, 2).

+0

Спасибо за ваш ответ и время. Хорошего дня:) – ldurniat