> with(linalg):
> A:=matrix([[12, 0, 0], [9, 33, 9], [-3, -1, 27]]);
> factor(minpoly(A,t));
> K1:=evalm((A-30)^2);
> B1:=kernel(K1);
> evalm(multiply(A-30,[0,1,0]));
> K2:=evalm(A - 12);
> B2:= kernel(K2);
> M:=transpose(matrix([[6,-3,1],[0,3,-1],[0,1,0]]));
> multiply(inverse(M),A,M);
>