Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
SC_sem3_2011_VichMat_kw1.doc
Скачиваний:
3
Добавлен:
25.09.2019
Размер:
187.9 Кб
Скачать

1.2 Метод Гаусса

Вообще методом Гаусса называется метод решения системы линейных алгебраических уравнений, которая приводится в этом методе к ступенчатому виду. Поэтому далее под методом Гаусса мы будем понимать приведение матрицы к ступенчатому виду (к верхней треугольной матрице).

Пусть из исходной матрицы получена верхняя треугольная. Нам известно, что определитель треугольной матрицы находится перемножением элементов, лежащих на главной диагонали. Однако эта матрица не является эквивалентом исходной, поэтому их определители не равны. Чтобы получить определитель исходной матрицы, нужно определитель полученной треугольной матрицы поделить на некоторое число, которое бы компенсировало все операции по приведению исходной матрицы к треугольной. Это число мы будем называть коэффициентом K.

Таким образом, представим формулы, по которым вычисляется определитель.

(8)

(9)

(10)

где B – верхняя треугольная матрица, полученная из исходной;

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

Коэффициент K равен произведению всех строковых коэффициентов. Заметим, что строковый коэффициент считается для каждой конкретной строки при текущем столбце один раз.

Выделим основной алгоритм.

Обрабатывать матрицу следует по столбцам, начиная с первого и заканчивая n-1.

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

2 Повторять пункт 1 пока не кончатся строки текущего столбца.

3 Перейти на следующий столбец и повторить действия 1 – 2.

4 Продолжать действия 1 – 3 до n-1 столбца включительно.

5 Найти определитель по формуле (9).

Опять же этот алгоритм легко программируется. Программная реализация в среде Mathcad состоит из одного модуля user_Gause(A). Данный модуль возвращает вектор, первый элемент которого коэффициент K, второй – треугольная матрица и третий – значение определителя матрицы А.

Однако, в процессе отладки этого модуля было обнаружено неочевидное с первого взгляда ограничение данного метода, а именно: треугольная матрица должна быть такой, чтобы на ее главной диагонали не получались нули в моменты ее приведения. Иначе происходит обнуление коэффициента K и возникает ошибка деления на ноль. Такая ошибка как раз произошла с матрицей (3). На рисунке 1 показан перехват обнуления коэффициента K в момент работы модуля (листинг модуля смотрите в следующей главе).

Рисунок 1 Аварийная работа модуля

В процессе расчета определителей матриц (1) и (2) такой ошибки не происходит. К сожалению, от данной ошибки нельзя быть застрахованным.

Одним из способов разрешения данной проблемы это найти эквивалент исходной матрицы, сведение которого к треугольному виду не вызывает данную ошибку.

Так был попробован эквивалент, полученный в методе LU-разложения для матрицы (3). В результате модуль успешно завершил расчет.

Результат работы модуля следует смотреть в следующей главе.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]