Поиск…


Синтаксис

  1. R = chol (A);
  2. [L, U] = lu (A);
  3. R = qr (A);
  4. T = schur (A);
  5. [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');

для выполнения разложения особых величин с экономичным размером.



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow