[Scilab-users] Jordan normal form

Samuel Gougeon sgougeon at free.fr
Sun Jul 26 17:40:35 CEST 2020


Le 26/07/2020 à 16:33, fujimoto2005 a écrit :
> Dear Samuel,
> Thanks for your reply.
>
>> Have you tried bdiag()?
> Yes, I have tried it with rmax=1/%eps.
> But result of the sample of help page is not  the Jordan form.

How do you see that?

--> a = rand(5,5), [J, X] = bdiag(a)
  a  =
    0.2113249   0.6283918   0.5608486   0.2320748 0.3076091
    0.7560439   0.8497452   0.6623569   0.2312237 0.9329616
    0.0002211   0.685731    0.7263507   0.2164633 0.2146008
    0.3303271   0.8782165   0.1985144   0.8833888 0.312642
    0.6653811   0.068374    0.5442573   0.6525135 0.3616361

  J  =
    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

  X  =
   -0.3527369   0.0605091   0.2379654   0.9582868 0.4179387
   -0.5921536  -0.7886896  -0.1822515   0.5222938 0.3870075
   -0.3418189   0.2368257   0.3781926  -0.0200047 0.6351967
   -0.5157279   0.3072656   0.3968688  -0.5383794 -1.1636856
   -0.3769819   0.4738897  -0.7809384  -1.0656465 -0.6321472

J est block-diagonal. Isn't it what we expect?

--> clean(a - X*J/X, 10*%eps)
  ans  =
    0.   0.   0.   0.   0.
    0.   0.   0.   0.   0.
    0.   0.   0.   0.   0.
    0.   0.   0.   0.   0.
    0.   0.   0.   0.   0.

J and the base X of eigen vectors and/or subspaces is such that a = X * 
J / X
Isn't it an expected property?
We can easily check it at least for eigen vectors, of multiplicity = 1:

--> a*X(:,[1 4 5]) ./ X(:,[1 4 5])
  ans  =

    2.4777836   0.069654   0.5341598
    2.4777836   0.069654   0.5341598
    2.4777836   0.069654   0.5341598
    2.4777836   0.069654   0.5341598
    2.4777836   0.069654   0.5341598

with related eigenvalues

So, what else?





More information about the users mailing list