Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
turka.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
2.67 Mб
Скачать

1. Решение линейных уравнений методом треугольного разложения. Принципы учёта разряженности матриц.

Эффективным методом решения системы линейных алгебраических уравнений является метод разложения на треугольные матрицы, или метод LU-факторизации (метод_LU~разложений). Алгоритмы этого метода близки к методу исключения Гаусса, хотя вычисления могут производится в различной последовательности. Главным преимуществом метода LU-факторизации в сравнении с методом исключения Гаусса является возможность более простого получения решений для различных векторов b в правой части системы (1.1), а также для транспонированной системы уравнений, Пусть имеется система линейных алгебраических уравнений (CЛАУ)

АХ = В, (1.1)

где А - матрица размера (n, n) с постоянными коэффициентами; В - n-мерный вектор известных констант и Х - n-мерный вектор искомых неизвестных.

Допустим, что матрицу А можно разложить на два сомножителя:

А = LU , (1.2)

г де

здесь матрица L является нижней треугольной, а матрица U - верхней треугольной. Заметим, что на главной диагонали матрицы U стоят 1. Это означает, что определитель матрицы A равен произведению диагональных элементов Lii матрицы L.

Рассмотрим алгоритм определения матриц L и U ниже, а сейчас допустим, что такое разложение осуществлено. Перепишем систему уравнений в следующем виде

LUХ = В (1.3)

Определим вспомогательный вектор Z как

UX = Z (1.4)

Из этого уравнения вектор Z найти невозможно, поскольку неизвестен вектор X . Однако, подставив Z в (1.3), получим

LZ = B (1.5)

Благодаря специальной форме матрицы L вектор Z можно легко определить. Для этого запишем (1.5) в виде системы уравнений

l11 z1 = b1

l21z1 + l22z2 = b2

l31z1 + l32z2 + l33 z3 = b3

. . . . . . . . . . . . . ..

ln1z1 + ln2z2 + ... + lnnzn = bn

Откуда получаем

z1 = b1/ l11

z2 = ( b2 - l21z1)/ l22

z3 = ( b3 - l31z1 - l32z2)/ l33

. . . . . . . . . . . . . . .

Или в общем виде

z1 =b1/ l11

i=2,3,...,n . (1.6)

Этот процесс называется прямым исключением (прямой подстановкой или прямым ходом). Чтобы уравнение (1.6) имело смысл, диагональные элементы матрицы L должны быть ненулевыми. Теперь вернемся к уравнению (1.4) и найдем вектор неизвестных X. Для этого запишем (1.4) в координатной форме

x1 + U12x2 + U13x3 + ... + U1nxn = z1

x2 + U23x3 + ... + U2nxn = z2

. . . . . . . . . . . . . . . . . . .

xn-1 + Un-1,n xn = zn-1

xn = zn

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

xn = zn ,

i=n-1,n-2,...,1 . (1.7)

Этот процесс называют обратной подстановкой или обратным ходом. Число операций, требуемых для выполнения как прямой, так и обратной подстановок, равно примерно n2/2, а в сумме для решения требуется n2 операций. Из уравнений (1.6) и (1.7) следует, что при такой системе расчетов векторы B, Z и X могут быть размещены в одних и тех же ячейках памяти ЭВМ.

Займемся выводом алгоритма LU-разложения. С этой целью рассмотрим матрицу А размера (4х4). Предположим, что разложение существует, запишем произведение матриц L и U

Сравним это произведение с матрицей А. Видно, что первый столбец разложения остается неизменным и li1 = ai1, i=1,2,3,4. Заметим также, что первая строка произведения может быть использована для определения элементов первой строки матрицы U из решения уравнений l11U1j=a1j, j=2,3,4. Поскольку во втором столбце элементы U12 и li1 известны, li2 = ai2-li1U12, i=2,3,4. Так как теперь известны l21, l22 и U1j, можно использовать вторую строку матрицы для расчета U2j, j=3,4:

U2j = ( a2j - l21U1j)/ l22 , j=3,4.

Далее, чередуя строки и столбцы, можно аналогичным образом найти остальные элементы матриц L и U. В общем случае элементы матрицы L находятся из соотношения:

(1.8)

с оответственно для элементов матрицы U:

(1.9)

Уравнения (1.8) и (1.9) описывают алгоритм разложения на треугольные матрицы, называемый алгоритмом Краута. Его выполнение осуществляется при задании k=1,2,...,n и использовании формул (1.8) и (1.9). Заметим, что требуемые в этих соотношениях значения элементов матриц L и U рассчитываются на предыдущих этапах процесса. Далее, каждый элемент aij матрицы А требуется для вычисления только соответствующих элементов матриц L и U. Так как нулевые элементы матриц L и U, а также единичную диагональ матрицы U запоминать не нужно, в процессе вычислений матрицы L и U могут быть записаны на месте матрицы А, причем L расположена в нижнем треугольнике (i j), а U - соответственно в верхнем треугольнике (i<j) матрицы А. Обобщив выше изложенное, опишем алгоритм LU-разложения следующим образом:

Шаг 1. Положим k=1 и перейдем к шагу 3.

Шаг 2. Используя (3.1.8), рассчитываем k-й столбец матрицы L. Если k=n, закончим процедуру разложения.

Шаг 3. Используя (3.1.9), рассчитываем k-ю строку матрицы U.

Шаг 4. Положим k=k+1 и перейдем к шагу 2.

Можно получить другую форму алгоритма разложения, если последовательно строку за строкой рассматривать произведение матриц L и U. Вначале определим первую строку матрицы U, а затем элементы l21 и l22 и вторую строку матрицы U и т.д. При таком алгоритме матрице А рассматривается построчно. Преимущества такого подхода особенно проявляется при матрицах большого размера. Этот алгоритм называется декомпозиция строка за строкой. Аналогичный алгоритм можно построить при последовательном пере выборе столбцов матрицы А.

Н аряду с рассмотренными выше в [2] приведем еще один метод, имеющий название LU-Гаусса. Однако последний менее предпочтительный по сравнению с методами Краута и декомпозиции.

Важные черты метода LU-разложения состоят в следующем:

1. Легко вычисляется определитель матрицы А

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