Собственные значения и собственные векторы
[ также возвращает полную матрицу V,D,W] = eig(A)W столбцы которых являются соответствующими левыми собственными векторами, так что W'*A = D*W'.
Задача собственного значения состоит в том, чтобы определить решение уравнения Av = λ v, где A является nоколо-n matrix, v - вектор-столбец длины n, и λ - скаляр. Значения λ, удовлетворяющие уравнению, являются собственными значениями. Соответствующие значения v, удовлетворяющие уравнению, являются правыми собственными векторами. Левые собственные векторы, w, удовлетворяют уравнению w 'A = λ w ".
[ также возвращает полную матрицу 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*D1ans = 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];
При попытке вычислить обобщенные собственные значения матрицы с помощью команды [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 не является обратимым.
Проверьте λ 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, как и в данном случае.
A - Входная матрицаВходная матрица, заданная как вещественная или комплексная квадратная матрица.
Типы данных: double | single
Поддержка комплексного номера: Да
B - Обобщенная входная матрица собственных значений задачОбобщенная входная матрица задачи собственного значения, заданная как квадратная матрица вещественных или комплексных значений. B должен быть того же размера, что и A.
Типы данных: double | single
Поддержка комплексного номера: Да
balanceOption - Опция «Баланс»'balance' (по умолчанию) | 'nobalance'Параметр «Баланс», указанный как: 'balance', что позволяет выполнить предварительный этап балансировки, или 'nobalance' которая отключает его. В большинстве случаев этап балансировки улучшает кондиционирование A получение более точных результатов. Однако есть случаи, когда балансировка приводит к неправильным результатам. Определить 'nobalance' когда A содержит значения, масштаб которых существенно отличается. Например, если A содержит ненулевые целые числа, а также очень маленькие (близкие к нулю) значения, то шаг балансировки может масштабировать малые значения, чтобы сделать их столь же значимыми, как целые числа, и дать неточные результаты.
'balance' является поведением по умолчанию. Дополнительные сведения о балансировке см. в разделе balance.
algorithm - Обобщенный алгоритм собственных значений'chol' | 'qz'Обобщенный алгоритм собственных значений, указанный как 'chol' или 'qz', который выбирает алгоритм, используемый для вычисления обобщенных собственных значений пары.
| алгоритм | Описание |
|---|---|
'chol' | Вычисляет обобщенные собственные значения A и B используя факторизацию Холеского B. |
'qz' | Использует алгоритм QZ, также известный как обобщённое разложение Шура. Этот алгоритм игнорирует симметрию A и B. |
В общем, два алгоритма возвращают один и тот же результат. Алгоритм QZ может быть более устойчивым для определенных проблем, таких как проблемы, связанные с плохо обусловленными матрицами.
Когда вы опускаете algorithm аргумент, eig функция выбирает алгоритм на основе свойств A и B. Он использует 'chol' алгоритм для симметричного (эрмитова) A и симметричный (эрмитовский) положительный определенный B. В противном случае он использует 'qz' алгоритм.
Независимо от заданного алгоритма, eig функция всегда использует алгоритм QZ, когда A или B не симметричны.
eigvalOption - параметр «Собственное значение»'vector' | 'matrix'Параметр «Собственное значение», указанный как 'vector' или 'matrix'. Эта опция позволяет указать, возвращаются ли собственные значения в векторе столбца или диагональной матрице. Поведение по умолчанию зависит от указанного количества выходов:
Если указан один вывод, например, e = eig(A), то собственные значения по умолчанию возвращаются в виде вектора столбца.
При указании двух или трех выходов, например [V,D] = eig(A), то собственные значения возвращаются в виде диагональной матрицы, D, по умолчанию.
Пример: D = eig(A,'matrix') возвращает диагональную матрицу собственных значений с одним синтаксисом вывода.
e - Собственные значения (возвращенные как векторные)Собственные значения, возвращаемые как вектор-столбец, содержащий собственные значения (или обобщенные собственные значения пары) с кратностью. Каждое собственное значение e(k) соответствует правому собственному вектору V(:,k) и левый собственный вектор W(:,k).
Когда A является действительным симметричным или комплексным эрмитом, значения e которые удовлетворяют Av = λ v являются действительными.
Когда A - реальный перекос-симметричный или сложный перекос-эрмитовский, значения e которые удовлетворяют Av = λ v являются мнимыми.
V - Правые собственные векторыПравые собственные векторы, возвращаемые в виде квадратной матрицы, столбцы которой являются правыми собственными векторами 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.
D - Собственные значения (возвращаемые в виде матрицы)Собственные значения, возвращаемые в виде диагональной матрицы с собственными значениями A на главной диагонали или собственных значениях пары, (A,B), с кратностью, на главной диагонали. Каждое собственное значение D(k,k) соответствует правому собственному вектору V(:,k) и левый собственный вектор W(:,k).
Когда A является действительным симметричным или комплексным эрмитом, значения D которые удовлетворяют Av = λ v являются действительными.
Когда A - реальный перекос-симметричный или сложный перекос-эрмитовский, значения D которые удовлетворяют Av = λ v являются мнимыми.
W - Левые собственные векторыЛевые собственные векторы, возвращаемые в виде квадратной матрицы, столбцы которой являются левыми собственными векторами 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), по главной диагонали.
Различные машины и версии MATLAB могут создавать различные собственные векторы, которые все еще являются численно точными:
Для вещественных собственных векторов знак собственных векторов может изменяться.
Для комплексных собственных векторов собственные векторы могут быть умножены на любое комплексное число величины 1.
Для множественного собственного значения его собственные векторы могут быть рекомбинированы посредством линейных комбинаций. Например, если Ax = λ x и Ay = λ y, то A (x + y) = λ (x + y), так что x + y также является собственным вектором A.
Квадратная матрица, A, симметричен, если равен его непереключению, A = A.'.
В терминах матричных элементов это означает, что
Поскольку вещественные матрицы не затронуты комплексным сопряжением, вещественная матрица, симметричная, также эрмитова. Например, матрица
100210101]
является и симметричным, и эрмитовым.
Квадратная матрица, A, является кососимметричным, если он равен отрицанию его непереходного транспонирования, A = -A.'.
В терминах матричных элементов это означает, что
.
Поскольку вещественные матрицы не затронуты комплексным сопряжением, действительная матрица, которая является кососимметричной, также является косой-эрмитовой. Например, матрица
11 0]
является как кососимметричным, так и кососимметричным.
Квадратная матрица, A, является эрмитовым, если он равен его комплексному сопряженному транспонированию, A = A'.
В терминах матричных элементов это означает, что
i.
Записи на диагонали эрмитовской матрицы всегда действительны. Поскольку вещественные матрицы не затронуты комплексным сопряжением, вещественная матрица, симметричная, также эрмитова. Например, матрица
100210101]
является и симметричным, и эрмитовым.
Собственные значения эрмитовской матрицы реальны.
Квадратная матрица, A, является косо-эрмитовым, если он равен отрицанию его комплексного сопряженного транспонирования, A = -A'.
В терминах матричных элементов это означает, что
i.
Записи на диагонали косо-эрмитовой матрицы всегда являются чисто мнимыми или нулевыми. Поскольку вещественные матрицы не затронуты комплексным сопряжением, действительная матрица, которая является кососимметричной, также является косой-эрмитовой. Например, матрица
11 0]
является как кососимметричным, так и кососимметричным.
Собственные значения матрицы перекоса-эрмитова являются чисто мнимыми или нулевыми.
eig функция может вычислять собственные значения разреженных матриц, которые являются вещественными и симметричными. Чтобы вычислить собственные векторы разреженной матрицы или вычислить собственные значения разреженной матрицы, которая не является действительной и симметричной, используйте eigs функция.
Примечания и ограничения по использованию:
V может представлять другую основу собственных векторов. Это представление означает, что собственный вектор, вычисленный сгенерированным кодом, может отличаться по коду C и C++, чем в MATLAB. Собственные значения в D может находиться не в том же порядке, что и в MATLAB. Вы можете проверить V и D значения с помощью уравнения задачи собственного значения A*V = V*D.
Для стандартной проблемы собственного значения, [V,D] = eig(A), когда A Hermitian, используется для генерации кода schur вычислять V и D. В противном случае результаты [V,D] = eig(A) аналогичны результатам, полученным при использовании [V,D] = eig(A,eye(size(A)),'qz') в MATLAB, за исключением столбцов V нормализованы.
Если указан класс обратного вызова библиотеки LAPACK, генератор кода поддерживает следующие параметры:
'balance' и 'nobalance' параметры для проблемы стандартного собственного значения.
Вычисление левых собственных векторов.
Выходы сложны.
Если входная матрица содержит неокончательное значение, генерируемый код не выдает ошибку. Вместо этого выходные данные содержат NaN значения.
Генерация кода не поддерживает разреженные матричные входы для этой функции.
Примечания и ограничения по использованию:
Поддерживаются только эти синтаксисы входных аргументов:
e = eig(A)
[V,D] = eig(A)
Дополнительные сведения см. в разделе Запуск функций MATLAB на графическом процессоре (панель инструментов параллельных вычислений).
Примечания и ограничения по использованию:
Для несимметричной полной матрицы A, вы должны использовать eig(A,'nobalance') синтаксис.
Для обобщенного случая: eig(A,B), A и B должен быть действительным симметричным или сложным эрмитом. Дополнительно, B должны быть положительными и определенными.
Эти синтаксисы не поддерживаются для полных распределенных массивов:
[__] = eig(A,'balance') для несимметричных A.
[__] = eig(A,B,'qz')
[V,D,W] = eig(A,B)
Дополнительные сведения см. в разделе Запуск функций MATLAB с распределенными массивами (панель инструментов параллельных вычислений).
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.