блоковая диагонализация, обобщённые собственные векторы
[Ab, X, bs] = bdiag(A) [Ab, X, bs] = bdiag(A, rmax)
вещественная или комплексная квадратная матрица
вещественное число
вещественная или комплексная квадратная матрица
вещественная или комплексная невырожденная матрица
вектор целых чисел
[Ab, X, bs] = bdiag(A, rmax) выполняет
блоковую диагонализацию матрицы A
. bs
даёт структуру блоков (соответствующие размеры блоков).
X
- это изменение базиса, то есть Ab = inv(X)*A*X
является блоковой диагональю.
rmax
управляет обусловленностью X
.
Значение по умолчанию - это L1-норма матрицы A
.
Чтобы получить диагональную форму (если она существует), выберите большое
значение дляrmax
(например rmax=1/%eps
).
В общем случае (для вещественной случайной A
), блоки
равны (1x1) и (2x2), а X
является матрицей собственных векторов.
// случай вещественных чисел: блоки 1x1 и 2x2 a = rand(5,5); [ab, x, bs] = bdiag(a);ab | ![]() | ![]() |
--> [ab, x, bs] = bdiag(a);ab ab = 2.4777836 0. 0. 0. 0. 0. 0.0757087 0.4869251 0. 0. 0. -0.5777956 -0.1248605 0. 0. 0. 0. 0. 0.069654 0. 0. 0. 0. 0. 0.5341598
// случай комплексных чисел: комплексные блоки 1x1 a = rand(5,5); [ab, x, bs] = bdiag(a+%i*0); ab | ![]() | ![]() |