Χαρακτηριστικό πολυώνυμο με την χρήση του αλγορίθμου Hessenberg : pcar_hessenberg

### 1.46.7 Χαρακτηριστικό πολυώνυμο με την χρήση του αλγορίθμου `Hessenberg``:` `pcar_hessenberg`

`pcar_hessenberg` παίρνει ως όρισμα έναν τετραγωνικό πίνακα A μεγέθους n και προαιρετικά το όνομα μιας συμβολικής μεταβλητής.
`pcar_hessenberg` επιστρέφει το χρακτηριστικό πολυώνυμο P του A γραμμένο σαν λίστα των συντελεστών του, εάν κανένα όνομα μεταβλητής δεν παρέχεται, ή γραμμένο σαν παράσταση ως προς το όνομα της μεταβλητής που παρέχεται σαν δεύτερο όρισμα, όπου

P(x)=det(xI−A)

Το χαρακτηριστικό πολυώνυμο υπολογίζεται χρησιμοποιώντας τον αλγόριθμο `Hessenberg` (πληροφορίες στο διαδίκτυο) το οποίο είναι πιο αποτελεσματικό (O(n3) προσδιοριστικός χρόνος) εάν οι συντελεστές του A είναι σε ένα πεπερασμένο σώμα ή χρησιμοποιούν μια πεπερασμένη αναπαράσταση όπως οι προσεγγιστικοί αριθμητικοί συντελεστές. Ωστόσο, αξίζει να σημειωθεί πως αυτός ο αλγόριθμος συμπεριφέρεται κακώς εάν οι συντελεστές είναι για παράδειγμα στο ℚ.
Είσοδος :

`pcar_hessenberg([[4,1,-2],[1,2,-1],[2,1,0]] % 37)`

Έξοδος :

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

Είσοδος :

`pcar_hessenberg([[4,1,-2],[1,2,-1],[2,1,0]] % 37,x)`

Έξοδος :

`x```^```3-6 %37 *x```^```2+12 % 37 *x-8 % 37`

Επομένως, το χαρακτηριστικό πολυώνυμο του [[4,1,-2],[1,2,-1],[2,1,0]] στο ℤ/37 ℤ είναι

x3−6x2+12x−8