File: rowshuff.cat

package info (click to toggle)
scilab 2.6-4
  • links: PTS
  • area: non-free
  • in suites: woody
  • size: 54,632 kB
  • ctags: 40,267
  • sloc: ansic: 267,851; fortran: 166,549; sh: 10,005; makefile: 4,119; tcl: 1,070; cpp: 233; csh: 143; asm: 135; perl: 130; java: 39
file content (43 lines) | stat: -rw-r--r-- 1,196 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
41
42
43
rowshuff          Scilab Group          Scilab Function            rowshuff
NAME
   rowshuff - shuffle algorithm
  
CALLING SEQUENCE
 [Ws,Fs1]=rowshuff(Fs, [alfa])
PARAMETERS
 Fs    : square real pencil Fs = s*E-A
       
 Ws    : polynomial matrix
       
 Fs1   : square real pencil F1s = s*E1 -A1 with E1 non-singular
       
 alfa  : real number (alfa = 0 is the default value)
       
DESCRIPTION
   Shuffle algorithm: Given the pencil Fs=s*E-A , returns Ws=W(s)  (square
  polynomial matrix) such that:
  
    Fs1 = s*E1-A1 = W(s)*(s*E-A)  is a pencil with non singular E1 matrix.
  
   This is possible iff the pencil Fs = s*E-A  is regular (i.e. invertible).
  The degree of Ws is equal to the index of the pencil.
  
   The poles at infinity of Fs are put to alfa and the zeros of Ws are at
  alfa.
  
   Note that (s*E-A)^-1 = (s*E1-A1)^-1 * W(s) = (W(s)*(s*E-A))^-1 *W(s)
  
EXAMPLE
 F=randpencil([],[2],[1,2,3],[]);
 F=rand(5,5)*F*rand(5,5);   // 5 x 5 regular pencil with 3 evals at 1,2,3
 [Ws,F1]=rowshuff(F,-1);
 [E1,A1]=pen2ea(F1);
 svd(E1)           //E1 non singular
 roots(det(Ws))
 clean(inv(F)-inv(F1)*Ws,1.d-7)
SEE ALSO
   pencan, glever, penlaur
  
AUTHOR
   F. D.