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

Решение систем линейных уравнений итерационными методами.

Помимо прямых методов решения систем линейных алгебраических уравнений MATLAB обладает мощными современными итерационными методами решения больших систем уравнений. К итерационным методам относятся те, решение которых получается в ходе ряда шагов – итераций, постепенно ведущих к получению результата с заданной погрешностью.

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

Построим матрицу системы с три диагональной структурой и размером 10x10:

n = 10;

on = ones(n, 1);

A = spdiags([-2*on 4*on -on],-1:1, n, n);

В качестве элементов вектора правой части возьмем сумму элементов матрицы A в соответствующих строках:

b = sum(A, 2);

Для решения системы Ax=b применим один из одиннадцати существующих форматов вызова функции bigcg:

x = bicg(A, b);

bicg converged at iteration 10 to a solution with relative residual 8.6e-014

В результате система выдает сообщение о сходимости итерационного процесса и приводит относительную погрешность.

Обратная матрица и определитель.

Определитель квадратной матрицы находится с помощью функции det:

det(A)

ans =

1

Обратная матрица находится с помощью функции inv:

inv(A)

ans =

3 -3 1

-3 5 -2

1 -2 1

Факторизация Холецкого.

Если матрица системы является симметричной (или эрмитовой) и положительно определенной, то ее можно представить в виде произведения двух треугольных матриц: A=R’R, где R – верхняя треугольная матрица, R’ – транспонированная. Факторизация Холецкого выполняется с помощью функции chol:

R = chol(A)

R =

1 1 1

0 1 2

0 0 1

Легко проверить, что произведение R’R дает исходную матрицу Паскаля. Факторизация Холецкого приводит систему Ax=u к виду R’Rx=u. Поскольку оператор ‘\’ распознает системы с треугольными матрицами, приведенную систему можно решить очень быстро:

x = R\(R'\u)

x =

10

-12

5

Lu факторизация.

LU факторизация, или гауссово исключение, выражает любую квадратную матрицу A как произведение перестановки нижней треугольной матрицы L и верхней треугольной матрицы U, где матрица L имеет единичную главную диагональ. Перестановки важны как с теоретической, так и с практической точки зрения. Так, матрицу невозможно представить в виде произведения двух треугольных матриц без перестановки двух строк. С другой стороны, хотя матрицу можно представить в виде произведения двух треугольных матриц, при малом значении элементы матриц-сомножителей будут очень большими, что приведет к большой численной погрешности. Для выполнения разложения служит функция lu:

  • [L, U] = lu(X) возвращает верхнюю треугольную матрицу U и нижнюю треугольную матрицу L (точнее, произведение нижней треугольной матрицы и матрицы перестановок), так что X = L*U;

  • [L, U, P] = lu(X) возвращает верхнюю треугольную матрицу U, нижнюю треугольную матрицу L и матрицу перестановок P, так что L*U = P*X;

  • B=lu(X) возвращает матрицу B такую что, B(i, j) = U(i, j) для всех индексов ji и B(i, j) = L(i, j) для всех индексов j<i. Поскольку диагональные элементы матрицы L равны единице, их можно не хранить.

Рассмотрим факторизацию магической матрицы B:

[L U] = lu(B)

L =

1.0000 0 0

0.3750 0.5441 1.0000

0.5000 1.0000 0

U =

8.0000 1.0000 6.0000

0 8.5000 -1.0000

0 0 5.2941

Отметим, что строки матрицы L переставлены местами. Легко проверить, что B = L*U.

LU факторизация матрицы B позволяет очень быстро решить систему Bx=u:

x = U\(L\u)

x =

0.5528

0.2611

-0.2806

Получим представление матрицы перестановок P:

[L, U, P] = lu(B)

L =

1.0000 0 0

0.5000 1.0000 0

0.3750 0.5441 1.0000

U =

8.0000 1.0000 6.0000

0 8.5000 -1.0000

0 0 5.2941

P =

1 0 0

0 0 1

0 1 0

Строки матрицы L стоят на своих местах. Легко проверить, что L*U = P*B. Определитель и обратную матрицу из LU разложения можно найти по формулам:

det(B) = det(L)*det(U) и inv(B) = inv(U)*inv(L).

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