exponenta event banner

eig

Собственные значения и собственные векторы

Описание

пример

e = eig(A) возвращает вектор столбца, содержащий собственные значения квадратной матрицы A.

пример

[V,D] = eig(A) возвращает диагональную матрицу D собственных значений и матрицы V столбцы которых являются соответствующими правыми собственными векторами, так что A*V = V*D.

пример

[V,D,W] = eig(A) также возвращает полную матрицу W столбцы которых являются соответствующими левыми собственными векторами, так что W'*A = D*W'.

Задача собственного значения состоит в том, чтобы определить решение уравнения Av = λ v, где A является nоколо-n matrix, v - вектор-столбец длины n, и λ - скаляр. Значения λ, удовлетворяющие уравнению, являются собственными значениями. Соответствующие значения v, удовлетворяющие уравнению, являются правыми собственными векторами. Левые собственные векторы, w, удовлетворяют уравнению w 'A = λ w ".

пример

e = eig(A,B) возвращает вектор столбца, содержащий обобщенные собственные значения квадратных матриц A и B.

пример

[V,D] = eig(A,B) возвращает диагональную матрицу D обобщенных собственных значений и полной матрицы V столбцы которых являются соответствующими правыми собственными векторами, так что A*V = B*V*D.

[V,D,W] = eig(A,B) также возвращает полную матрицу W столбцы которых являются соответствующими левыми собственными векторами, так что W'*A = D*W'*B.

Обобщенная задача собственного значения состоит в том, чтобы определить решение уравнения Av = λ Bv, где A и B равны nоколо-n matrices, v - вектор-столбец длины n, и λ - скаляр. Значения λ, удовлетворяющие уравнению, являются обобщенными собственными значениями. Соответствующие значения v являются обобщенными правыми собственными векторами. Левые собственные векторы, w, удовлетворяют уравнению w 'A = λ w' B.

[___] = eig(A,balanceOption), где balanceOption является 'nobalance', отключает предварительный шаг балансировки в алгоритме. Значение по умолчанию для balanceOption является 'balance', что обеспечивает балансировку. eig функция может возвращать любой из выходных аргументов в предыдущих синтаксисах.

пример

[___] = eig(A,B,algorithm), где algorithm является 'chol', использует факторизацию Холеского B для вычисления обобщенных собственных значений. Значение по умолчанию для algorithm зависит от свойств A и B, но, как правило, 'qz', который использует алгоритм QZ.

Если A является эрмитом и B является эрмитовым положительным определенным, то по умолчанию algorithm является 'chol'.

пример

[___] = eig(___,eigvalOption) возвращает собственные значения в форме, указанной eigvalOption с использованием любого из входных или выходных аргументов в предыдущих синтаксисах. Определить eigvalOption как 'vector' для возврата собственных значений в векторе столбца или в виде 'matrix' для возврата собственных значений в диагональной матрице.

Примеры

свернуть все

Использовать gallery для создания симметричной положительной определенной матрицы.

A = gallery('lehmer',4)
A = 4×4

    1.0000    0.5000    0.3333    0.2500
    0.5000    1.0000    0.6667    0.5000
    0.3333    0.6667    1.0000    0.7500
    0.2500    0.5000    0.7500    1.0000

Вычисление собственных значений A. Результатом является вектор столбца.

e = eig(A)
e = 4×1

    0.2078
    0.4078
    0.8482
    2.5362

В качестве альтернативы можно использовать eigvalOption для возврата собственных значений в диагональной матрице.

D = eig(A,'matrix')
D = 4×4

    0.2078         0         0         0
         0    0.4078         0         0
         0         0    0.8482         0
         0         0         0    2.5362

Использовать gallery для создания циркулирующей матрицы.

A = gallery('circul',3)
A = 3×3

     1     2     3
     3     1     2
     2     3     1

Вычислите собственные значения и правые собственные векторы A.

[V,D] = eig(A)
V = 3×3 complex

  -0.5774 + 0.0000i   0.2887 - 0.5000i   0.2887 + 0.5000i
  -0.5774 + 0.0000i  -0.5774 + 0.0000i  -0.5774 + 0.0000i
  -0.5774 + 0.0000i   0.2887 + 0.5000i   0.2887 - 0.5000i

D = 3×3 complex

   6.0000 + 0.0000i   0.0000 + 0.0000i   0.0000 + 0.0000i
   0.0000 + 0.0000i  -1.5000 + 0.8660i   0.0000 + 0.0000i
   0.0000 + 0.0000i   0.0000 + 0.0000i  -1.5000 - 0.8660i

Убедитесь, что результаты удовлетворяют A*V = V*D.

A*V - V*D
ans = 3×3 complex
10-14 ×

  -0.2665 + 0.0000i  -0.0333 + 0.1110i  -0.0333 - 0.1110i
   0.0888 + 0.0000i   0.0000 + 0.1221i   0.0000 - 0.1221i
  -0.0444 + 0.0000i  -0.0111 + 0.1221i  -0.0111 - 0.1221i

В идеале разложение собственных значений удовлетворяет соотношению. С тех пор eig выполняет декомпозицию с использованием вычислений с плавающей запятой, затем A*V может, в лучшем случае, подойти V*D. Другими словами, A*V - V*D близок, но не совсем, 0.

По умолчанию eig не всегда возвращает собственные значения и собственные векторы в отсортированном порядке. Используйте sort для приведения собственных значений в порядке возрастания и переупорядочения соответствующих собственных векторов.

Вычислите собственные значения и собственные векторы магической квадратной матрицы 5 на 5.

A = magic(5)
A = 5×5

    17    24     1     8    15
    23     5     7    14    16
     4     6    13    20    22
    10    12    19    21     3
    11    18    25     2     9

[V,D] = eig(A)
V = 5×5

   -0.4472    0.0976   -0.6330    0.6780   -0.2619
   -0.4472    0.3525    0.5895    0.3223   -0.1732
   -0.4472    0.5501   -0.3915   -0.5501    0.3915
   -0.4472   -0.3223    0.1732   -0.3525   -0.5895
   -0.4472   -0.6780    0.2619   -0.0976    0.6330

D = 5×5

   65.0000         0         0         0         0
         0  -21.2768         0         0         0
         0         0  -13.1263         0         0
         0         0         0   21.2768         0
         0         0         0         0   13.1263

Собственные значения A находятся на диагонали D. Однако собственные значения не отсортированы.

Извлеките собственные значения из диагонали D использование diag(D), затем сортировать результирующий вектор в порядке возрастания. Второй выход из sort возвращает вектор перестановки индексов.

[d,ind] = sort(diag(D))
d = 5×1

  -21.2768
  -13.1263
   13.1263
   21.2768
   65.0000

ind = 5×1

     2
     3
     5
     4
     1

Использовать ind для изменения порядка диагональных элементов D. Поскольку собственные значения в D соответствуют собственным векторам в столбцах V, также необходимо изменить порядок столбцов V с использованием одних и тех же индексов.

Ds = D(ind,ind)
Ds = 5×5

  -21.2768         0         0         0         0
         0  -13.1263         0         0         0
         0         0   13.1263         0         0
         0         0         0   21.2768         0
         0         0         0         0   65.0000

Vs = V(:,ind)
Vs = 5×5

    0.0976   -0.6330   -0.2619    0.6780   -0.4472
    0.3525    0.5895   -0.1732    0.3223   -0.4472
    0.5501   -0.3915    0.3915   -0.5501   -0.4472
   -0.3223    0.1732   -0.5895   -0.3525   -0.4472
   -0.6780    0.2619    0.6330   -0.0976   -0.4472

Оба (V,D) и (Vs,Ds) получить разложение собственных значений A. Результаты A*V-V*D и A*Vs-Vs*Ds согласен, вплоть до ошибки округления.

e1 = norm(A*V-V*D);
e2 = norm(A*Vs-Vs*Ds);
e = abs(e1 - e2)
e = 1.8933e-29

Создайте матрицу 3 на 3.

 A = [1 7 3; 2 9 12; 5 22 7];

Вычислите правые собственные векторы, V, собственные значения, Dи левые собственные векторы, W.

[V,D,W] = eig(A)
V = 3×3

   -0.2610   -0.9734    0.1891
   -0.5870    0.2281   -0.5816
   -0.7663   -0.0198    0.7912

D = 3×3

   25.5548         0         0
         0   -0.5789         0
         0         0   -7.9759

W = 3×3

   -0.1791   -0.9587   -0.1881
   -0.8127    0.0649   -0.7477
   -0.5545    0.2768    0.6368

Убедитесь, что результаты удовлетворяют W'*A = D*W'.

W'*A - D*W'
ans = 3×3
10-13 ×

    0.1155   -0.0711   -0.0711
   -0.0033   -0.0215   -0.0408
    0.0022    0.0266    0.0178

В идеале разложение собственных значений удовлетворяет соотношению. С тех пор eig выполняет декомпозицию с использованием вычислений с плавающей запятой, затем W'*A может, в лучшем случае, подойти D*W'. Другими словами, W'*A - D*W' близок, но не совсем, 0.

Создайте матрицу 3 на 3.

A = [3 1 0; 0 3 1; 0 0 3];

Вычислите собственные значения и правые собственные векторы A.

[V,D] = eig(A)
V = 3×3

    1.0000   -1.0000    1.0000
         0    0.0000   -0.0000
         0         0    0.0000

D = 3×3

     3     0     0
     0     3     0
     0     0     3

A имеет повторяющиеся собственные значения, и собственные векторы не независимы. Это означает, что A не диагонализуется и, следовательно, является дефектным.

Убедитесь, что V и D удовлетворяют уравнению, A*V = V*D, хотя A неисправен.

A*V - V*D
ans = 3×3
10-15 ×

         0    0.8882   -0.8882
         0         0    0.0000
         0         0         0

В идеале разложение собственных значений удовлетворяет соотношению. С тех пор eig выполняет декомпозицию с использованием вычислений с плавающей запятой, затем A*V может, в лучшем случае, подойти V*D. Другими словами, A*V - V*D близок, но не совсем, 0.

Создайте две матрицы, A и B, затем решить обобщенную задачу собственного значения для собственных значений и правых собственных векторов пары (A,B).

A = [1/sqrt(2) 0; 0 1];
B = [0 1; -1/sqrt(2) 0];
[V,D]=eig(A,B)
V = 2×2 complex

   1.0000 + 0.0000i   1.0000 + 0.0000i
   0.0000 - 0.7071i   0.0000 + 0.7071i

D = 2×2 complex

   0.0000 + 1.0000i   0.0000 + 0.0000i
   0.0000 + 0.0000i   0.0000 - 1.0000i

Убедитесь, что результаты удовлетворяют A*V = B*V*D.

A*V - B*V*D
ans = 2×2

     0     0
     0     0

Остаточная ошибка A*V - B*V*D равно ровно нулю.

Создайте неправильно кондиционированную симметричную матрицу, содержащую значения, близкие к точности обработки.

format long e
A = diag([10^-16, 10^-15])
A = 2×2

     1.000000000000000e-16                         0
                         0     1.000000000000000e-15

Вычислите обобщенные собственные значения и набор правых собственных векторов с помощью алгоритма по умолчанию. В этом случае по умолчанию используется алгоритм 'chol'.

[V1,D1] = eig(A,A)
V1 = 2×2

     1.000000000000000e+08                         0
                         0     3.162277660168380e+07

D1 = 2×2

     9.999999999999999e-01                         0
                         0     1.000000000000000e+00

Теперь вычислите обобщенные собственные значения и набор правых собственных векторов, используя 'qz' алгоритм.

[V2,D2] = eig(A,A,'qz')
V2 = 2×2

     1     0
     0     1

D2 = 2×2

     1     0
     0     1

Проверьте, насколько хорошо 'chol' результат удовлетворяет A*V1 = A*V1*D1.

format short
A*V1 - A*V1*D1
ans = 2×2
10-23 ×

    0.1654         0
         0   -0.6617

Теперь проверьте, насколько хорошо 'qz' результат удовлетворяет A*V2 = A*V2*D2.

A*V2 - A*V2*D2
ans = 2×2

     0     0
     0     0

Когда обе матрицы симметричны, eig использует 'chol' по умолчанию. В этом случае алгоритм QZ возвращает более точные результаты.

Создайте единичную матрицу 2 на 2, Aи сингулярную матрицу, B.

A = eye(2);
B = [3 6; 4 8];

При попытке вычислить обобщенные собственные значения матрицы B-1A с помощью команды [V,D] = eig(B\A), то MATLAB ® возвращает ошибку, посколькуB\A производит Inf значения.

Вместо этого вычислите обобщенные собственные значения и правые собственные векторы, передав обе матрицы в eig функция.

[V,D] = eig(A,B)
V = 2×2

   -0.7500   -1.0000
   -1.0000    0.5000

D = 2×2

    0.0909         0
         0       Inf

Лучше проходить обе матрицы по отдельности, и пусть eig выберите наилучший алгоритм для решения проблемы. В этом случае eig(A,B) возвращает набор собственных векторов и по крайней мере одно вещественное собственное значение, даже если B не является обратимым.

Проверьте Av = λ Bv для первого собственного значения и первого собственного вектора.

eigval = D(1,1);
eigvec = V(:,1);
A*eigvec - eigval*B*eigvec
ans = 2×1
10-15 ×

    0.1110
    0.2220

В идеале разложение собственных значений удовлетворяет соотношению. Так как разложение выполняется с помощью вычислений с плавающей запятой, то A*eigvec может, в лучшем случае, подойти eigval*B*eigvec, как и в данном случае.

Входные аргументы

свернуть все

Входная матрица, заданная как вещественная или комплексная квадратная матрица.

Типы данных: double | single
Поддержка комплексного номера: Да

Обобщенная входная матрица задачи собственного значения, заданная как квадратная матрица вещественных или комплексных значений. B должен быть того же размера, что и A.

Типы данных: double | single
Поддержка комплексного номера: Да

Параметр «Баланс», указанный как: 'balance', что позволяет выполнить предварительный этап балансировки, или 'nobalance' которая отключает его. В большинстве случаев этап балансировки улучшает кондиционирование A получение более точных результатов. Однако есть случаи, когда балансировка приводит к неправильным результатам. Определить 'nobalance' когда A содержит значения, масштаб которых существенно отличается. Например, если A содержит ненулевые целые числа, а также очень маленькие (близкие к нулю) значения, то шаг балансировки может масштабировать малые значения, чтобы сделать их столь же значимыми, как целые числа, и дать неточные результаты.

'balance' является поведением по умолчанию. Дополнительные сведения о балансировке см. в разделе balance.

Обобщенный алгоритм собственных значений, указанный как 'chol' или 'qz', который выбирает алгоритм, используемый для вычисления обобщенных собственных значений пары.

алгоритмОписание
'chol'Вычисляет обобщенные собственные значения A и B используя факторизацию Холеского B.
'qz'Использует алгоритм QZ, также известный как обобщённое разложение Шура. Этот алгоритм игнорирует симметрию A и B.

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

Когда вы опускаете algorithm аргумент, eig функция выбирает алгоритм на основе свойств A и B. Он использует 'chol' алгоритм для симметричного (эрмитова) A и симметричный (эрмитовский) положительный определенный B. В противном случае он использует 'qz' алгоритм.

Независимо от заданного алгоритма, eig функция всегда использует алгоритм QZ, когда A или B не симметричны.

Параметр «Собственное значение», указанный как 'vector' или 'matrix'. Эта опция позволяет указать, возвращаются ли собственные значения в векторе столбца или диагональной матрице. Поведение по умолчанию зависит от указанного количества выходов:

  • Если указан один вывод, например, e = eig(A), то собственные значения по умолчанию возвращаются в виде вектора столбца.

  • При указании двух или трех выходов, например [V,D] = eig(A), то собственные значения возвращаются в виде диагональной матрицы, D, по умолчанию.

Пример: D = eig(A,'matrix') возвращает диагональную матрицу собственных значений с одним синтаксисом вывода.

Выходные аргументы

свернуть все

Собственные значения, возвращаемые как вектор-столбец, содержащий собственные значения (или обобщенные собственные значения пары) с кратностью. Каждое собственное значение e(k) соответствует правому собственному вектору V(:,k) и левый собственный вектор W(:,k).

Правые собственные векторы, возвращаемые в виде квадратной матрицы, столбцы которой являются правыми собственными векторами A или обобщенные правые собственные векторы пары, (A,B). Форма и нормализация V зависит от комбинации входных аргументов:

  • [V,D] = eig(A) возвращает матрицу V, чьи столбцы являются правыми собственными векторами A такой, что A*V = V*D. Собственные векторы в V нормализованы таким образом, что 2-норма каждого равна 1.

    Если A вещественные симметричные, эрмитовы или косые-эрмитовы, затем правые собственные векторы V являются ортонормированными.

  • [V,D] = eig(A,'nobalance') также возвращает матрицу V. Однако 2-норма каждого собственного вектора не обязательно равна 1.

  • [V,D] = eig(A,B) и [V,D] = eig(A,B,algorithm) вернуть V как матрица, столбцы которой являются обобщенными правыми собственными векторами, удовлетворяющими A*V = B*V*D. 2-норма каждого собственного вектора не обязательно равна 1. В этом случае D содержит обобщенные собственные значения пары, (A,B), по главной диагонали.

    Когда eig использует 'chol' алгоритм с симметричным (эрмитовым) A и симметричный (эрмитовский) положительный определенный B, он нормализует собственные векторы в V чтобы B-norm каждого равно 1.

Различные машины и версии MATLAB ® могут создавать различные собственные векторы, которые все еще являются численно точными:

  • Для вещественных собственных векторов знак собственных векторов может изменяться.

  • Для комплексных собственных векторов собственные векторы могут быть умножены на любое комплексное число величины 1.

  • Для множественного собственного значения его собственные векторы могут быть рекомбинированы посредством линейных комбинаций. Например, если Ax = λ x и Ay = λ y, то A (x + y) = λ (x + y), так что x + y также является собственным вектором A.

Собственные значения, возвращаемые в виде диагональной матрицы с собственными значениями A на главной диагонали или собственных значениях пары, (A,B), с кратностью, на главной диагонали. Каждое собственное значение D(k,k) соответствует правому собственному вектору V(:,k) и левый собственный вектор W(:,k).

Левые собственные векторы, возвращаемые в виде квадратной матрицы, столбцы которой являются левыми собственными векторами A или обобщенные левые собственные векторы пары, (A,B). Форма и нормализация W зависит от комбинации входных аргументов:

  • [V,D,W] = eig(A) возвращает матрицу W, чьи столбцы являются левыми собственными векторами A такой, что W'*A = D*W'. Собственные векторы в W нормализованы таким образом, что 2-норма каждого равна 1. Если A симметричен, затем W является таким же, как V.

  • [V,D,W] = eig(A,'nobalance') также возвращает матрицу W. Однако 2-норма каждого собственного вектора не обязательно равна 1.

  • [V,D,W] = eig(A,B) и [V,D,W] = eig(A,B,algorithm) прибыль W как матрица, столбцы которой являются обобщенными левыми собственными векторами, удовлетворяющими W'*A = D*W'*B. 2-норма каждого собственного вектора не обязательно равна 1. В этом случае D содержит обобщенные собственные значения пары, (A,B), по главной диагонали.

    Если A и B симметричны, затем W является таким же, как V.

Различные машины и версии MATLAB могут создавать различные собственные векторы, которые все еще являются численно точными:

  • Для вещественных собственных векторов знак собственных векторов может изменяться.

  • Для комплексных собственных векторов собственные векторы могут быть умножены на любое комплексное число величины 1.

  • Для множественного собственного значения его собственные векторы могут быть рекомбинированы посредством линейных комбинаций. Например, если Ax = λ x и Ay = λ y, то A (x + y) = λ (x + y), так что x + y также является собственным вектором A.

Подробнее

свернуть все

Симметричная матрица

  • Квадратная матрица, A, симметричен, если равен его непереключению, A = A.'.

    В терминах матричных элементов это означает, что

    ai, j = aj, i.

  • Поскольку вещественные матрицы не затронуты комплексным сопряжением, вещественная матрица, симметричная, также эрмитова. Например, матрица

    A = [100210101]

    является и симметричным, и эрмитовым.

Наклонно-симметричная матрица

  • Квадратная матрица, A, является кососимметричным, если он равен отрицанию его непереходного транспонирования, A = -A.'.

    В терминах матричных элементов это означает, что

    ai, j = aj, i.

  • Поскольку вещественные матрицы не затронуты комплексным сопряжением, действительная матрица, которая является кососимметричной, также является косой-эрмитовой. Например, матрица

    A = [0 11 0]

    является как кососимметричным, так и кососимметричным.

Эрмитовская матрица

  • Квадратная матрица, A, является эрмитовым, если он равен его комплексному сопряженному транспонированию, A = A'.

    В терминах матричных элементов это означает, что

    ai, j = a ve j, i.

  • Записи на диагонали эрмитовской матрицы всегда действительны. Поскольку вещественные матрицы не затронуты комплексным сопряжением, вещественная матрица, симметричная, также эрмитова. Например, матрица

    A = [100210101]

    является и симметричным, и эрмитовым.

  • Собственные значения эрмитовской матрицы реальны.

Косо-эрмитовская матрица

  • Квадратная матрица, A, является косо-эрмитовым, если он равен отрицанию его комплексного сопряженного транспонирования, A = -A'.

    В терминах матричных элементов это означает, что

    ai, j = a pu j, i.

  • Записи на диагонали косо-эрмитовой матрицы всегда являются чисто мнимыми или нулевыми. Поскольку вещественные матрицы не затронуты комплексным сопряжением, действительная матрица, которая является кососимметричной, также является косой-эрмитовой. Например, матрица

    A = [0 11 0]

    является как кососимметричным, так и кососимметричным.

  • Собственные значения матрицы перекоса-эрмитова являются чисто мнимыми или нулевыми.

Совет

  • eig функция может вычислять собственные значения разреженных матриц, которые являются вещественными и симметричными. Чтобы вычислить собственные векторы разреженной матрицы или вычислить собственные значения разреженной матрицы, которая не является действительной и симметричной, используйте eigs функция.

Расширенные возможности

.

См. также

| | | | | |

Представлен до R2006a