File: bdiag.cat

package info (click to toggle)
scilab 2.4-1
  • links: PTS
  • area: non-free
  • in suites: potato, slink
  • size: 55,196 kB
  • ctags: 38,019
  • sloc: ansic: 231,970; fortran: 148,976; tcl: 7,099; makefile: 4,585; sh: 2,978; csh: 154; cpp: 101; asm: 39; sed: 5
file content (40 lines) | stat: -rw-r--r-- 1,073 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40

bdiag(2)                       Scilab Function                       bdiag(2)
NAME
  bdiag - block diagonalization, generalized eigenvectors

CALLING SEQUENCE
  [Ab [,X [,bs]]]=bdiag(A [,rmax])

PARAMETERS

  A    : real or complex square matrix

  rmax  : real number

  Ab : real or complex square matrix

  X : real or complex non-singular matrix

  bs : vector of integers

DESCRIPTION
  [Ab [,X [,bs]]]=bdiag(A [,rmax])
  performs the block-diagonalization of matrix A.  bs gives the structure of
  the blocks (respective sizes of the blocks).  X is the change of basis i.e
  Ab = inv(X)*A*X is block diagonal.

  rmax controls the conditioning of X; the default value is the l1 norm of A.

  To get a diagonal form (if it exists) choose a large value for rmax
  (rmax=1/%eps for example). Generically (for real random A) the blocks are
  (1x1) and (2x2) and X is the matrix of eigenvectors.

EXAMPLE
  //Real case: 1x1 and 2x2 blocks
  a=rand(5,5);[ab,x,bs]=bdiag(a);ab
  //Complex case: complex 1x1 blocks
  [ab,x,bs]=bdiag(a+%i*0);ab

SEE ALSO
  schur, sylv, spec