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

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

Аналоги переменной точности E = eig(vpa(A)) и [V,E] = eig(vpa(A)).

Собственные значения A являются нулями характеристического полинома A, det(A-x*I), который вычисляется charpoly(A).

Матрица H из последнего раздела приводится первый пример:

H = sym([8/9 1/2 1/3; 1/2 1/3 1/4; 1/3 1/4 1/5])
H =
[ 8/9, 1/2, 1/3]
[ 1/2, 1/3, 1/4]
[ 1/3, 1/4, 1/5]

Матрица сингулярна, поэтому одно из ее собственных значений должно быть нулем. Оператор

[T,E] = eig(H)

формирует матрицы T и E. Столбцы T являются собственными векторами H и диагональные элементы E являются собственными значениями H:

T =
[ 3/10, 218/285 - (4*12589^(1/2))/285, (4*12589^(1/2))/285 + 218/285]
[ -6/5,     292/285 - 12589^(1/2)/285,     12589^(1/2)/285 + 292/285]
[    1,                             1,                             1]
 
E =
[ 0,                       0,                       0]
[ 0, 32/45 - 12589^(1/2)/180,                       0]
[ 0,                       0, 12589^(1/2)/180 + 32/45]

Может быть легче понять структуру матриц собственных векторов, Tи собственные значения, E, если вы преобразовываете T и E к десятичному обозначению. Для этого выполните следующие действия. Команды

Td = double(T)
Ed = double(E)

вернуть

Td =
    0.3000   -0.8098    2.3397
   -1.2000    0.6309    1.4182
    1.0000    1.0000    1.0000

Ed =
         0         0         0
         0    0.0878         0
         0         0    1.3344

Первое собственное значение равно нулю. Соответствующий собственный вектор (первый столбец Td) то же, что и базисы для ядра, найденные в последнем разделе. Другие два собственных значений являются результатом применения квадратичной формулы к x26445x+2532160 который является квадратичным фактором в factor(charpoly(H, x)):

syms x
g = factor(charpoly(H, x))/x
solve(g(3))
g =
[ 1/(2160*x), 1, (2160*x^2 - 3072*x + 253)/x]
ans =
 32/45 - 12589^(1/2)/180
 12589^(1/2)/180 + 32/45

Символические выражения закрытой формы для собственных значений возможны только, когда характеристический полином может быть выражен как продукт рациональных полиномов степени четыре или меньше. Матрица Россера является классической тестовой матрицей численного анализа, которая иллюстрирует это требование. Оператор

R = sym(rosser)

производит

R =
[  611,  196, -192,  407,   -8,  -52,  -49,   29]
[  196,  899,  113, -192,  -71,  -43,   -8,  -44]
[ -192,  113,  899,  196,   61,   49,    8,   52]
[  407, -192,  196,  611,    8,   44,   59,  -23]
[   -8,  -71,   61,    8,  411, -599,  208,  208]
[  -52,  -43,   49,   44, -599,  411,  208,  208]
[  -49,   -8,    8,   59,  208,  208,   99, -911]
[   29,  -44,   52,  -23,  208,  208, -911,   99]

Команды

p = charpoly(R, x);
factor(p)

произвести

ans =
 
[ x, x - 1020, x^2 - 1040500, x^2 - 1020*x + 100, x - 1000, x - 1000]

Характеристический полином (степени 8) хорошо влияет на продукт двух линейных членов и трех квадратичных членов. Сразу можно увидеть, что четыре собственных собственных значений 0, 1020 и двойной корень на 1000. Другие четыре корня получают из оставшихся квадратиков. Использовать

eig(R)

чтобы найти все эти значения

ans =
                  0
               1000
               1000
               1020
 510 - 100*26^(1/2)
 100*26^(1/2) + 510
    -10*10405^(1/2)
     10*10405^(1/2)

Матрица Россера не является типичным примером; редкость, когда полная матрица 8 на 8 имеет характеристический полином, который множится в такую простую форму. Если вы меняете два «угловых» элемента R от 29 до 30 с командами

S = R;
S(1,8) = 30;
S(8,1) = 30;

а затем попробовать

p = charpoly(S, x)

вы находите

p =
x^8 - 4040*x^7 + 5079941*x^6 + 82706090*x^5...
 - 5327831918568*x^4 + 4287832912719760*x^3...
 - 1082699388411166000*x^2 + 51264008540948000*x...
 + 40250968213600000

Вы также находите, что factor(p) является p сам. То есть характеристический полином не может быть факторизирован по рациональам.

Для этой измененной матрицы Россера

F = eig(S)

возвраты

F = 
 -1020.053214255892
  -0.17053529728769
 0.2180398054830161
  999.9469178604428
  1000.120698293384
  1019.524355263202
  1019.993550129163
  1020.420188201505

Заметьте, что эти значения близки к собственным значениям исходной матрицы Россера.

Также возможно попытаться вычислить собственные значения символьных матриц, но решения замкнутой формы встречаются редко. Преобразование Гивенса сгенерировано как матричная экспоненциальная элементарная матрица

A=[0110].

Symbolic Math Toolbox™

syms t
A = sym([0 1; -1 0]);
G = expm(t*A)

вернуть

G =
[           exp(-t*1i)/2 + exp(t*1i)/2,
    (exp(-t*1i)*1i)/2 - (exp(t*1i)*1i)/2]
[ - (exp(-t*1i)*1i)/2 + (exp(t*1i)*1i)/2,
            exp(-t*1i)/2 + exp(t*1i)/2]

Вы можете упростить это выражение используя simplify:

G = simplify(G)
G = 
[  cos(t), sin(t)]
[ -sin(t), cos(t)]

Далее команда

g = eig(G)

производит

g =
 cos(t) - sin(t)*1i
 cos(t) + sin(t)*1i

Можно переписать g по показателям:

g = rewrite(g, 'exp')
g = 
 exp(-t*1i)
  exp(t*1i)