### 6.55.4 Matrice de Jordan rationnelle : `rat_jordan`

`rat_jordan` a comme argument une matrice A d’ordre n à coefficients rationnels.
`rat_jordan` renvoie :

- en mode `Xcas`, `Mupad` ou `TI`
  une séquencee composée de deux matrices : une matrice de changement de base P, suivie de la matrice de Jordan J associée à A si celle-ci est rationnelle ou de la matrice dont les blocs de Jordan sont remplacés par les matrices compagnons associées au facteur non rationnellement reductible du polynôme caractéristique de A (c’est la matrice la plus reduite à coefficient dans le corps de A, ou le corps complexifié de A si on est en mode complexe).
- en mode `Maple`
  la matrice de Jordan J associée à A si celle-ci est rationnelle ou de la matrice dont les blocs de Jordan sont remplacés par les matrices compagnons associées au facteur non rationnellement reductible du polynôme caractéristique de A. On peut cependant obtenir la matrice de changement de base P, dans une variable passée en second argument, par exemple
  `rat_jordan([[1,0,0],[1,2,-1],[0,0,1]],’P’)`

On a :
J=P−1AP avec J est à coefficients rationnels.
Remarques

- La syntaxe `Maple` est aussi valable dans les autres modes, par exemple, en mode `Xcas`, on tape :
  `rat_jordan([[4,1,1],[1,4,1],[1,1,4]],’P’)`
  On obtient :
  `[[1,-1,1/2],[1,0,-1],[1,1,1/2]]`
  puis `P` renvoie :
  `[[6,0,0],[0,3,0],[0,0,3]]`
  ,
- Les coefficients de P et de J appartiennent au corps des coefficients de A.
  Par exemple, en mode `Xcas`, on tape :
  `rat_jordan([[1,0,1],[0,2,-1],[1,-1,1]])`
  On obtient :
  `[[1,1,2],[0,0,-1],[0,1,2]],[[0,0,-1],[1,0,-3],[0,1,4]]`
  On tape (on met `-pcar(...)` car l’argument de `companion` doit être un polynôme unitaire (cf 6.55.11)
  `companion(-pcar([[1,0,1],[0,2,-1],[1,-1,1]],x),x)`
  On obtient :
  `[[0,0,-1],[1,0,-3],[0,1,4]]`
  On tape :
  `rat_jordan([[1,0,0],[0,1,1],[1,1,-1]])`
  On obtient :
  `[[-1,0,0],[1,1,1],[0,0,1]],[[1,0,0],[0,0,2],[0,1,0]]`
  On tape :
  `factor(pcar([[1,0,0],[0,1,1],[1,1,-1]],x))`
  On obtient :
  `-(x-1)*(x```^```2-2)`
  On tape :
  `companion((x```^```2-2),x)`
  On obtient :
  `[[0,2],[1,0]]`
- Lorsque A est symétrique et a des valeurs propres d’ordre multiple, `Xcas` renvoie des vecteurs propres orthogonaux mais pas forcément normés i.e. `tran(P)*P` est une matrice diagonale de diagonale le carré de la norme des vecteurs propres.
  On tape :
  `rat_jordan([[4,1,1],[1,4,1],[1,1,4]])`
  On obtient :
  `[[1,-1,1/2],[1,0,-1],[1,1,1/2]],[[6,0,0],[0,3,0],[0,0,3]]`

On tape en mode `Xcas`, `Mupad` et `TI`:

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

On obtient :

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

On tape en mode `Xcas`, `Mupad` et `TI`:

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

On obtient :

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

En mode complexe et en mode `Xcas`, `Mupad` et `TI`, on tape :

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

On obtient :

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

On tape en mode `Maple` :

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

On obtient :

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

puis on tape :

`P)`

On obtient :

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