Символические собственные значения квадратной матрицы 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) совпадает с основанием для пустого пространства, найденного в последнем разделе. Два других собственных значения являются результатом применения квадратичной формулы к 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
Обратите внимание, что эти значения близки к собственным значениям исходной матрицы Россера.
Также можно попытаться вычислить собственные значения символьных матриц, но решения замкнутых форм встречаются редко. Преобразование Гивенса генерируется как экспонента матрицы элементарной матрицы
10].
Команды символьных математических 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)