<< balanc eigen eigs >>

Scilab Help >> Linear Algebra > eigen > bdiag

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

Смотрите также


Report an issue
<< balanc eigen eigs >>