### 6.48.6 Polynôme caractéristique : `pcar`

`pcar` (ou `charpoly`) a un (resp deux) argument(s).
`pcar` (ou `charpoly`) a comme argument une matrice A d’ordre n (resp une matrice A d’ordre n et un nom de variable formelle).
`pcar` renvoie le polynôme caractéristique P de A écrit selon la liste de ses coefficients (resp le polynôme caractéristique P de A écrit sous forme symbolique en utilisant le nom de variable donnée en argument).
Le polynôme caractéristique P de A est défini par

P(x)=det(x.I−A)

On tape :

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

On obtient :

`[1,-6,12,-8]`

Donc le polynôme caractéristique de [[4,1,-2],[1,2,-1],[2,1,0]] est

x3−6x2+12x−8

On peut aussi avoir la forme symbolique en tapant :
`normal(poly2symb([1,-6,12,-8]))`).
On tape :

`purge(X):;pcar([[4,1,-2],[1,2,-1],[2,1,0]],X)`

On obtient :

`X```^```3-6*X```^```2+12*X-8`

On peut spécifier par un argument optionnel l’algorithme utilisé pour faire ce calcul, parmi

- `lagrange` : calcul par interpolation de Lagrange, en donnant à x les valeurs comprises entre 0 et la dimension
- `hessenberg` : calcul par réduction sous forme tri-diagonale puis formule de récurrence, efficace sur un corps fini
- `fadeev` : calcul simultané du polynôme caractéristique et de la comatrice de xI−A
- `pmin` : calcul du polynôme minimal relatif à un vecteur pris au hasard, c’est le polynôme caractéristique s’il est de degré maximal

Pour les matrices à coefficients entiers, l’algorithme utilisé par défaut est modulaire, on calcule le polynôme caractéristique modulo plusieurs nombres premiers, soit par le polynôme minimal, soit par Hessenberg, et on reconstruit par les restes chinois coefficient par coefficient. Le test d’arrêt est probabiliste, lorsque le polynôme reconstruit ne varie plus pour des nombres premiers dont le produit est supérieur à l’inverse de la valeur de `proba_epsilon` (que l’on peut modifier dans la configuration du cas). Si `proba_epsilon` est nul, le résultat est déterministe (une majoration à priori des coefficients est alors utilisée). Dans tous les cas, le temps de calcul est en O(n4ln(n)), mais il est plus rapide avec la méthode probabiliste.