> with(linalg);#This calls the linear algebra package#
> A:=<<1, 4, 0, 0,0,0>|<-1, 5, 0, 0,0,0>|<0,0, 0, 1,0,0>|<0, 0, -1, 0,0,0>|<0,0,0,0,0,-1>|<0,0,0,0,1,0>>;
> factor(charpoly(A,t));
> factor(minpoly(A, t));
> multiply((A^2+1), (A-3));multiply((A^2+1)^2, (A-3));#We verify here "by hand" that the other divisors of the characteristic polynomial do not vanish on A#
> #It follows from a Theorem we'll prove that A is not diagonalizable because the minimal polynomial is not a product of linear terms. We therefore proceed to another example#
>
> B:=<<3, 0, 0, 0,0,0>|<0, 3, 0, 0,0,0>|<0,0, 0, 1,0,0>|<0, 0, -1, 0,0,0>|<0,0,0,0,0,-1>|<0,0,0,0,1,0>>;
> factor(charpoly(B,t));
> factor(minpoly(B,t));
> #Note that B has the same characteristic polynomial but a different minimal polynomial. It is not diagonalizable over Q because the characteristic polynomial is not a product of linear terms. However, the characteristic polynomial factors over the complex numbers and we proceed to diagonalize B over the complex numbers. The eigenvalues are 3, i, -i#
> #We need to find the kernel of 3 - B#
> H3:=3 - B;
> K3 := kernel(H3);
> #This is a basis for the eigenspace E_3. We verify that#
> multiply(B, K3[1]);3*K3[1];multiply(B, K3[2]);3*K3[2];
> #or let Maple check equality by#
> equal(multiply(B, K3[1]),3*K3[1]);equal(multiply(B, K3[2]),3*K3[2]);
> Hi:=I - B;
> Ki := kernel(Hi);
> #This is a basis for the eigenspace E_I. We verify that#
> equal(multiply(B, Ki[1]),I*Ki[1]);equal(multiply(B, Ki[2]),I*Ki[2]);
> Hnegi:=-I - B;
> Knegi :=kernel(Hnegi);
> #This is a basis for the eigenspace E_(-I). We verify that#
> equal(multiply(B, Knegi[1]),-I*Knegi[1]);equal(multiply(B, Knegi[2]),-I*Knegi[2]);
> #Let K be the basis#
> K:= K3 union Ki union Knegi;
> #Then B is diagonal in this basis equal to diag(-I,I,-I,I,3,3). The non standard ordering is due to the whims of Maple#
> #We verify that. Let M be St_M_K#
> M:= <<0, 0, 0, 0, I, 1>|<0, 0, 0, 0, 1, I>|<0, 0, 1, I, 0, 0>|<0, 0, I, 1, 0, 0>|<0, 1, 0, 0, 0, 0>|<1, 0, 0, 0, 0, 0>>;
> multiply(inverse(M),B,M);
>
> #In fact, Maple can do the whole diagonalization process.#
> JordanForm(A);#The Jordan form of a matrix C is a matrix conjugate to C. We shall see that if C is diagonalizable then its Jordan form is diagonal#
> JordanForm(B);
> M:=JordanForm(B, output=Q);#This gives us the change of basis producing the canonical form#
> #We check that#
> multiply(inverse(M),B,M);
>
>