---- matrici compagne in due variabili. restart R=QQ[x,y] I=ideal(x^3-5*y^3+3*x*y+14*x-101*y^2-2,x^3+2*y^3-5) ---I=ideal(x^2+y^2-2,x*y-1) bb=sub(basis(R/I),R) d=numcols(bb) ----prima colonna della matrice compagna rispetto a x compx=sub(contract(transpose bb,(bb_(0,0))*x%I),{x=>0_QQ,y=>0}) ---vengono calcolate le colonne successive di compx for i from 1 to (d-1) do compx=compx|sub(contract(transpose bb,(bb_(0,i))*x%I),{x=>0_QQ,y=>0}) compx ---come trovo le ascisse delle soluzioni ? solx=eigenvalues(compx) ----prima colonna della matrice compagna rispetto a y compy=sub(contract(transpose bb,(bb_(0,0))*y%I),{x=>0_QQ,y=>0}) for i from 1 to (d-1) do compy=compy|sub(contract(transpose bb,(bb_(0,i))*y%I),{x=>0_QQ,y=>0}) compy soly=eigenvalues(compy) solx, soly eigenvectors(compx),eigenvectors(compy) rank(compx-compx^0)---3 rank(compx-compx^0)^2----2, ranghi diversi quindi la matrice compx non e' diagonalizzabile primaryDecomposition I ----possiamo verificare che ---l'autovalore zero di M_x e' in coppia con l'autovalore 0 di M_y ---l'autovalore tre di M_x e' in coppia con l'autovalore otto di M_y ---l'autovalore quattro di M_x e' in coppia con l'autovalore tre di M_y --------------------------------------------------- ----utilizziamo invece gli autovettori della trasposta di M_x eig=(eigenvectors(transpose (compx)))_1 for i from 0 to 8 do print(eig_(1,i)/eig_(0,i),eig_(7,i)/eig_(0,i)) -----------forma traccia in piu' variabili ----il comando seguente e' importante 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(compx^((matrix exponents(bb_(0,i)*bb_(0,j)))_(0,0))*compy^((matrix exponents(bb_(0,i)*bb_(0,j)))_(0,1))) b=matrix b eigenvalues(sub(b,CC)) factor(x^2-y^2)