Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
учебное пособие_методы решения СЛАУ.doc
Скачиваний:
1
Добавлен:
01.04.2025
Размер:
799.74 Кб
Скачать

1.4 Обращение матриц

Для обращения матрицы A с помощью LU-разложения можно N-кратно использовать формулы (1.6)–(1.7) для получения столбцов матрицы А–1; при этом в качестве bi в (1.6) должны фигурировать только 0 и 1: для нахождения первого столбца полагают b1=1, b2=0, b3=0, … = bN=0, для второго b1=0, b2=1, b3=0, … = bN=0, и тд. В результате после окончания N шагов на месте исходной матрицы A находится ее обратная матрица А–1.

Пример использования метода обращения матриц в системе TALGAT:

- действительный случай: SET "lu_inv" LU_INV_r real_m;

- комплексный случай: SET " lu_inv " LU_INV complex_m.

1.5 Метод исключения Жордана (Гаусса – Жордана)

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

Рассмотрим подробнее данный метод без выбора, ведущего элемента.

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

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

Далее приведен алгоритм метода Гаусса-Жордана.

Алгоритм метода Гаусса - Жордана

Для k = 1, 2,…, N

bk = bk / akk

Для j = N, N – 1, …, k

akj = akj / akk

Увеличить j

Для i = 1, 2,…k – 1, k + 1, …, N

bi = biaik bk

Увеличить i

Для j = N, N – 1, …, k

Для i = 1, 2,…k – 1, k + 1, …, N

aij = aijaik akj

Увеличить i

Увеличить i

Увеличить k

Для повышения точности используют модификацию с частичным или полным выбором ведущего элемента. Для введения частичного упорядочивания необходимо, как и в алгоритме метода Гаусса, сделать вставку, приведенную в разделе 1.1.

Пример использования метода Гаусса - Жордана в системе TALGAT

без упорядочивания по столбцам:

- действительный случай: SET "solve" GJE_r real_m right_r;

- комплексный случай: SET "solve" GJE complex_m right_c;

с частичным упорядочивание по столбцам:

- действительный случай: SET "solve" PGJE_r real_m right_r;

- комплексный случай: SET "solve" PGJE complex_m right_c.

1.6 Контроль точности и уточнение приближенного решения в рамках прямого метода

Как отмечалось во введении, прямые методы приводят к точному решению СЛАУ при точном выполнении предусматриваемых соответствующими алгоритмами арифметических операций (без округлений). Реальные же вычисления базируются на арифметики машинных (т.е. усеченных до определенного количества разрядов) чисел. Как отражается на результате решения системы подмена арифметики действительных чисел машинной арифметикой, зависит от самой решаемой системы, параметров применяемого компьютера, системы представления данных, способов реализации алгоритмов. В любом случае, практически вместо точного решения СЛАУ (1.1) прямой метод дает приближенное решение x0. Метод Гаусса порождает относительную ошибку решения порядка N2lсondA, где l–число двоичных разрядов, выделяемых компьютером под мантиссу вещественного числа, а condA число обусловленности condA=||A||||A–1|||max|/|min|. Подставив x0 в выражение невязки, по малости полученного вектора-значения r0=bAx0 можно с осторожностью судить о близости найденного решения x0 к точному решению x. Если, например, ||r0||2–недостаточно малая величина, то следует искать вектор-поправку p такой, что x0+p=x есть точное решение системы (1.1), т.е.

A(x0+p)=b.

Последнее равносильно векторно-матричному уравнению

Ap=r0.

Как видно, нахождение поправки сводится к решению такой же системы, как и (1.1), где в качестве вектора свободных членов должен быть взят вектор невязок. Поскольку матрица коэффициентов осталась той же, что и у исходной системы, нет надобности в выполнении прямого хода преобразований коэффициентов при неизвестных (иначе, LU-разложения); достаточно выполнить только, действия, касающиеся новых свободных членов (решить две треугольные системы: Lz=r0 и Up=z). Прибавив найденную поправку p=p0 к x0, получаем уточненное приближенное решение x1=x0+p0.В случае, если величина ||p0||2 (или ||p0||2/||x1||2, если контролируется относительная, а не абсолютная погрешность) окажется недостаточно малой, процесс уточнения может быть повторен: ищется поправка p1 как приближенное решение уравнения Ap=r1, где r1=bAx1; тогда более точным должно быть решение x2=x1+p1. Cходимость к нулю невязок в таком процессе уточнения решения может не наблюдаться, т.е. следить нужно за установлением знаков самого решения. Обычно делают не более двух-трех шагов уточнения, причем рекомендуется производить вычисление невязок в режиме накопления. Если в этом процессе не происходит сближения xk при k=2, 3, то это говорит, скорее всего, о том, что данная система плохо обусловлена и ее решение не может быть найдено с требуемой точностью без привлечения дополнительной информации об исходной задаче. В таких случаях закономерно ставить вопрос о том, что понимать под точным решением системы и, возможно, обращаться к методам нахождения ее.

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