Метод Гаусса

Система (1) путем последовательного исключения неизвестных приводится к системе с треугольной матрицей, из которой и определяются значения неизвестных.

Процесс исключения неизвестных:

Пусть a11≠0. Разделим первое уравнение на a11. Затем вычтем из каждого i–го (i≥2) уравнения, полученного после деления, первое, умноженное на ai1 . В результате, после преобразований x1 окажется исключенным из всех уравнений кроме первого.

По той же схеме исключается x2 , x3 и т.д.

Получается треугольная матрица с единичной главной диагональю.

Общая формула определения неизвестных

Из последнего уравнения сразу определяется xn, далее, подставляя его в предпоследнее уравнение, получаем xn-1 и т.д.

Процесс нахождения неизвестных по способу Гаусса распадается на два этапа:

- Первый – приведение к треугольному виду – прямой ход.

- Второй – определение неизвестных по полученным формулам – обратный ход.

Процесс исключения k–го неизвестного называется k–м шагом прямого хода.

Элементы называются ведущими.

 

 

Общие формулы пересчета коэффициентов системы на k-м шаге:

В методе Гаусса происходит деление строк на соответствующие ведущие элементы, поэтому, если на каком-то k–м шаге на главной диагонали окажется нулевой элемент , то среди элементов (i=k+1,..n) следует найти ненулевой и перестановкой строк переместить его на главную диагональ, а затем продолжить вычисления.

Для этого следует воспользоваться, например, методом Гаусса выбора главного элемента в столбце.

Суть которого состоит в определении максимального элемента в столбце текущей строки и перестановке строки с максимальным элементом в столбце с текущей строкой, если такой найден.

 

'Задание исходных данных For i = 1 To n For j = 1 To n a1(i, j) = a(i, j) 'коэффициенты при неизвестных Next Next For i = 1 To n x(i) = b(i) 'свободные члены Next flag = False
'прямой ход - исключение i-го неизвестного For i = 1 To n 'поиск главного элемента в i-м столбце k = i r = Abs(a1(i, i)) For j = i + 1 To n If Abs(a1(j, i)) > r Then k = j r = Abs(a1(j, i)) End If Next j If r = 0 Then 'определитель системы равен 0 flag = True Exit For End If If k <> i Then 'перестановка i-го и k-го уравнения r = x(k) : x(k) = x(i) : x(i) = r For j = 1 To n r = a1(k, j) : a1(k, j) = a1(i, j) : a1(i, j) = r Next j End If ' исключение i-го неизвестного r = a1(i, i) x(i) = x(i) / r For j = i To n a1(i, j) = a1(i, j) / r Next j For k = i + 1 To n r = a1(k, i) x(k) = x(k) - r * x(i) For j = i To n a1(k, j) = a1(k, j) - r * a1(i, j) Next j Next k Next i
'обратный ход – определение неизвестных If flag Then Picture3.Print "матрица вырождена" Else For i = n - 1 To 1 Step -1 For j = i + 1 To n x(i) = x(i) - a1(i, j) * x(j) Next Next