Метод Гаусса с выбором главного элемента

Выделение главного элемента необходимо в тех случаях, когда элементы матрицы близки к нулю, так как при делении на такое число получаются большие числа, а арифметические операции с такими числами может привести к потере точности вычисления, особенно для матриц больших размеров, либо система имеет какой-нибудь из главных миноров матрицы А равным 0.

Рассмотрим модифицированный метод Гаусса с выбором главного элемента. Основная идея метода состоит в том, чтобы на очередном шаге исключать не следующее по номеру неизвестное, а то неизвестное, коэффициент при котором является наибольшим по модулю, при этом возможно три вида выбора:

1) по строке,

2) по столбцу,

3) по главным минорам.

В первом случае на каждом k -м шаге ищем максимальный по модулю элемент | ak,j | в k -й строке. И если j ≠ k, то переставляем местами k -й и j -й столбцы матрицы коэффициентов A и k -й и j -й индекс (а не значения) вектора неизвестных x (определите вначале вектор индексов как index(i)=i, i=1,…,n, и для него уже делайте перестановку k -го и j -го элемента).

Во втором случае на каждом k -м шаге ищем максимальный по модулю элемент | al,k | в k -м столбце. И если l ≠ k, то переставляем местами k -ю и l -ю строки матрицы коэффициентов A и k -й и l -й элемент вектора f.

В третьем случае на каждом k -м шаге ищем максимальный по модулю элемент | al,j | в матрице A, исключая следующие (k-1) -й столбец и (k-1) -ю строку (т. е. по оставшемуся минору). И ставим этот элемент на k -е место, делая аналогичные перестановки, как сказано выше.

А далее, по алгоритму метода Гаусса проводим исключение переменной xk из матрицы, образованной после одной из перечисленных выше перестановок.

Решение xi ищем с теми индексами i, в каком порядке они были переставлены (если использовали первый и третий вид выбора главного элемента). Например, перестановка 1-го и 2-го столбцов в матрице A, даст следующий порядок для нахождения решения: сначала xn, потом xn-1,…, x3, x1, x2 (в формулах метода Гаусса в обратном ходе для вектора x примените вместо его порядкового номера i соответствующий элемент вектора индексов index (i)).


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: