### 2.46.4 Rational Jordan matrix : `rat_jordan`

`rat_jordan` takes as argument a square matrix A of size n with exact coefficients.
`rat_jordan` returns :

- in `Xcas`, `Mupad` or `TI` mode
  a sequence of two matrix : a matrix P (the columns of P are the eigenvectors if A is diagonalizable in the field of it’s coefficients) and the rational Jordan matrix J of A, that is the most reduced matrix in the field of the coefficients of A (or the complexified field in complex mode), where

  J=P−1AP

- in `Maple` mode
  the Jordan matrix J of A. We can also have the matrix P verifying J=P−1AP in a variable by passing this variable as second argument, for example
  `rat_jordan([[1,0,0],[1,2,-1],[0,0,1]],’P’)`

Remarks

- the syntax `Maple` is also valid in the other modes, for example, in `Xcas` mode input
  `rat_jordan([[4,1,1],[1,4,1],[1,1,4]],’P’)`
  Output :
  `[[1,-1,1/2],[1,0,-1],[1,1,1/2]]`
  then `P` returns
  `[[6,0,0],[0,3,0],[0,0,3]]`
- the coefficients of P and J belongs to the same field as the coefficients of A.
  For example, in `Xcas` mode, input :
  `rat_jordan([[1,0,1],[0,2,-1],[1,-1,1]])`
  Output :
  `[[1,1,2],[0,0,-1],[0,1,2]],[[0,0,-1],[1,0,-3],[0,1,4]]`
  Input (put `-pcar(...)` because the argument of `companion` is an unit polynomial (see 2.46.10)
  `companion(-pcar([[1,0,1],[0,2,-1],[1,-1,1]],x),x)`
  Output :
  `[[0,0,-1],[1,0,-3],[0,1,4]]`
  Input :
  `rat_jordan([[1,0,0],[0,1,1],[1,1,-1]])`
  Output :
  `[[-1,0,0],[1,1,1],[0,0,1]],[[1,0,0],[0,0,2],[0,1,0]]`
  Input :
  `factor(pcar([[1,0,0],[0,1,1],[1,1,-1]],x))`
  Output :
  `-(x-1)*(x```^```2-2)`
  Input :
  `companion((x```^```2-2),x)`
  Output :
  `[[0,2],[1,0]]`
- When A is symetric and has eigenvalues with an multiple order, `Xcas` returns orthogonal eigenvectors (not always of norm equal to 1) i.e. `tran(P)*P` is a diagonal matrix where the diagonal is the square norm of the eigenvectors, for example :
  `rat_jordan([[4,1,1],[1,4,1],[1,1,4]])`
  returns :
  `[[1,-1,1/2],[1,0,-1],[1,1,1/2]],[[6,0,0],[0,3,0],[0,0,3]]`

Input in `Xcas`, `Mupad` or `TI` mode :

`rat_jordan([[1,0,0],[1,2,-1],[0,0,1]])`

Output :

`[[0,1,0],[1,0,1],[0,1,1]],[[2,0,0],[0,1,0],[0,0,1]]`

Input in `Xcas`, `Mupad` or `TI` mode :

`rat_jordan([[4,1,-2],[1,2,-1],[2,1,0]])`

Output :

`[[[1,2,1],[0,1,0],[1,2,0]],[[2,1,0],[0,2,1],[0,0,2]]]`

In complex mode and in `Xcas`, `Mupad` or `TI` mode , input :

`rat_jordan([[2,0,0],[0,2,-1],[2,1,2]])`

Output :

`[[1,0,0],[-2,-1,-1],[0,-i,i]],[[2,0,0],[0,2-i,0],[0,0,2+i]]`

Input in `Maple` mode :

`rat_jordan([[1,0,0],[1,2,-1],[0,0,1]],’P’)`

Output :

`[[2,0,0],[0,1,0],[0,0,1]]`

then input :

`P)`

Output :

`[[0,1,0],[1,0,1],[0,1,1]]]`