--matrice compagna di un polinomio
R=QQ[x]
I=ideal(x^5+x+1)
bb=sub(basis (R/I),R)
d=numcols bb
--prima colonna della matrice compagna
comp=sub(contract(transpose bb,(bb_(0,0))*x%I),x=>0_QQ)
--aggiungo le colonne
for i from 1 to (d-1) do comp=comp|sub(contract(transpose bb,(bb_(0,i))*x%I),x=>0_QQ)
comp

---calcolo degli autovalori approssimati
sol=eigenvalues comp

---costruzione della matrice bezoutiante (matrice della forma traccia)
b=mutableMatrix(R,d,d)
for i from 0 to d-1 do for j from 0 to d-1 do b_(i,j)=trace(comp^(i+j))
bez=matrix b
det(bez-x*id_(R^{d:0}))
--tre variazioni, segnatura (3,2), una radice reale

---forma traccia per B_h
h=x-5
b=mutableMatrix(R,d,d)
for i from 0 to d-1 do for j from 0 to d-1 do b_(i,j)=trace((comp-5)*comp^(i+j))
bezh=matrix b
bez
det(bez-x*id_(R^{d:0}))