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'.

Проблема собственного значения состоит в том, чтобы определить решение к уравнению <reservedrangesplaceholder5> <reservedrangesplaceholder4> = <reservedrangesplaceholder3> <reservedrangesplaceholder2>, где A n-by- n матрица, v является вектором-столбцом длины n, и λ является скаляром. Значения λ, которые удовлетворяют уравнению, являются собственными значениями. Соответствующие значения v, которые удовлетворяют уравнению, являются правыми собственными векторами. Левые собственные векторы, w, удовлетворяют уравнение w» A = <reservedrangesplaceholder1> <reservedrangesplaceholder0>."

пример

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.

Обобщенная проблема собственного значения состоит в том, чтобы определить решение к уравнению <reservedrangesplaceholder7> <reservedrangesplaceholder6> = <reservedrangesplaceholder5> <reservedrangesplaceholder4> <reservedrangesplaceholder3>, где A и B n-by- n матрицы, v является вектор-столбец длины n, и λ является скаляром. Значения λ, которые удовлетворяют уравнению, являются обобщенными собственными значениями. Соответствующие значения v являются обобщенными правыми собственными векторами. Левые собственные векторы, w, удовлетворяют уравнение w» A = <reservedrangesplaceholder2> <reservedrangesplaceholder1>» B.

[___] = eig(A,balanceOption), где balanceOption является 'nobalance', отключает предварительный шаг балансировки в алгоритме. Значение по умолчанию для balanceOption является 'balance', что позволяет балансировать. The 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-норма каждого равна 1.

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

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

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

  • Для нескольких собственных значений его собственные векторы могут быть рекомбинированы посредством линейных комбинаций. Например, если <reservedrangesplaceholder16> <reservedrangesplaceholder15> = <reservedrangesplaceholder14> <reservedrangesplaceholder13> и <reservedrangesplaceholder12> <reservedrangesplaceholder11> = <reservedrangesplaceholder10> <reservedrangesplaceholder9>, то 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.

  • Для нескольких собственных значений его собственные векторы могут быть рекомбинированы посредством линейных комбинаций. Например, если <reservedrangesplaceholder16> <reservedrangesplaceholder15> = <reservedrangesplaceholder14> <reservedrangesplaceholder13> и <reservedrangesplaceholder12> <reservedrangesplaceholder11> = <reservedrangesplaceholder10> <reservedrangesplaceholder9>, то 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=[0110]

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

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

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

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

    ai,j=a¯j,i.

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

    A=[100210101]

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

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

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

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

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

    ai,j=a¯j,i.

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

    A=[0110]

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

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

Совет

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

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

.

См. также

| | | | | |

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