Рассмотрим СЛАУ
.
Формируем матрицу расширенной системы.
C=[A B]
C =
1 0 4 1
-5 3 -3 1
2 -2 0 1
Находим главный элемент в первом столбце
first=C(1:3,1) % первый столбец (строки с текущей по третью)
[fake,m]=max(abs(first)); % m – индекс главного элемента
ind = m;
Делаем главный элемент диагональным с помощью перестановки строк
r=C(1,:);
C(1,:)=C(ind,:);
C(ind,:)=r
C =
-5 3 -3 1
1 0 4 1
2 -2 0 1
Путем элементарных преобразований над строками (умножение строки на число
и сложение строк), получаем нулевые элементы под главной диагональю.
if C(2,1)~=0
mu_21=C(1,1)/C(2,1);
C(2,:)=C(1,:)-mu_21*C(2,:);
end
if C(3,1)~=0
mu_31=C(1,1)/C(3,1);
C(3,:)=C(1,:)-mu_31*C(3,:);
end
C =
-5.0000 3.0000 -3.0000 1.0000
0 3.0000 17.0000 6.0000
0 -2.0000 -3.0000 3.5000
Далее переходим ко второму столбцу.
Находим главный элемент второго столбца путем сравнения элементов из второй и третьей строки и выбора максимального по модулю элемента
second=C(2:3,2) % элементы текущего столбца со второго по третий
[fake,m]=max(abs(second)); % индекс максимального элемента из двух
ind=m+1; % индекс главного элемента во втором столбце матрицы системы
Делаем главный элемент диагональным.
r=C(2,:);
C(2,:)=C(ind,:);
C(ind,:)=r
C =
-5.0000 3.0000 -3.0000 1.0000
0 3.0000 17.0000 6.0000
0 -2.0000 -3.0000 3.5000
Путем элементарных преобразований над строками (умножение строки на число
и сложение строк), получаем нулевые элементы под главной диагональю.
if C(3,2)~=0
mu_32=C(2,2)/C(3,2);
C(3,:)=C(2,:)-mu_32*C(3,:);
end
C =
-5.0000 3.0000 -3.0000 1.0000
0 3.0000 17.0000 6.0000
0 0 12.5000 11.2500
Получена верхняя треугольная матрицы. Все элементы главной диагонали отличны от нуля, поэтому матрица системы невырождена.
Прямой ход метода Гаусса закончен.