bdiag
блоковая диагонализация, обобщённые собственные векторы
Синтаксис
[Ab, X, bs] = bdiag(A) [Ab, X, bs] = bdiag(A, rmax)
Аргументы
- A
вещественная или комплексная квадратная матрица
- rmax
вещественное число
- Ab
вещественная или комплексная квадратная матрица
- X
вещественная или комплексная невырожденная матрица
- bs
вектор целых чисел
Описание
[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
Смотрите также
- schur — [ordered] Schur decomposition of matrix and pencils
- sylv — Solve the Sylvester equations A*X + X*B = C or A*X*B + X = C
- spec — собственные значения и собственные вектора матрицы или пучка
- blockdiag — Создаёт блочную диагональную матрицу из указанных массивов. Соединение диагональной системы блоков.
- lcmdiag — least common multiple diagonal factorization
Report an issue | ||
<< balanc | eigen | eigs >> |