MATLAB Language
Матричные разложения
Поиск…
Синтаксис
- R = chol (A);
- [L, U] = lu (A);
- R = qr (A);
- T = schur (A);
- [U, S, V] = svd (A);
Разложение Холецкого
Разложение Холецкого представляет собой метод разложения гермита, положительно определенной матрицы в верхнюю треугольную матрицу и ее транспонирование. Он может быть использован для решения систем линейных уравнений и примерно в два раза быстрее, чем LU-разложение.
A = [4 12 -16
12 37 -43
-16 -43 98];
R = chol(A);
Это возвращает верхнюю треугольную матрицу. Нижняя получается транспозицией.
L = R';
Наконец, мы можем проверить правильность разложения.
b = (A == L*R);
QR-разложение
Этот метод разложит матрицу в верхнюю треугольную и ортогональную матрицу.
A = [4 12 -16
12 37 -43
-16 -43 98];
R = qr(A);
Это вернет верхнюю треугольную матрицу, а следующее вернет обе матрицы.
[Q,R] = qr(A);
На следующем графике будет отображаться время выполнения qr
зависящее от квадратного корня элементов матрицы.
Разложение LU
Таким образом, матрица будет разложена на верхнюю треугольную и нижнюю треугольную матрицу. Часто он будет использоваться для повышения производительности и стабильности (если он выполняется с перестановкой) устранения Gauß.
Однако довольно часто этот метод не работает или плохо работает, поскольку он нестабилен. Например
A = [8 1 6
3 5 7
4 9 2];
[L,U] = lu(A);
Достаточно добавить матрицу перестановок, для которой PA = LU:
[L,U,P]=lu(A);
Далее мы построим время выполнения `lu ', зависящее от квадратного корня элементов матрицы.
Разложение Шура
Если A - комплексная и квадратичная матрица, то существует унитарная Q такая, что Q * AQ = T = D + N, где D - диагональная матрица, состоящая из собственных значений, а N - строго верхний тридиагональный.
A = [3 6 1
23 13 1
0 3 4];
T = schur(A);
Мы также показываем время выполнения schur
зависящее от квадратного корня из матричных элементов:
Разложение сингулярного значения
Учитывая m раз n матрицу A с n больше m. Разложение сингулярного значения
[U,S,V] = svd(A);
вычисляет матрицы U, S, V.
Матрица U состоит из левых сингулярных собственных векторов, являющихся собственными векторами A*A.'
в то время как V состоит из правых сингулярных собственных значений, являющихся собственными векторами оператора A.'*A
Матрица S
имеет квадратные корни из собственных значений A*A.'
и A.'*A
на его диагонали.
Если m больше n, можно использовать
[U,S,V] = svd(A,'econ');
для выполнения разложения особых величин с экономичным размером.