Example01.mws

> with(linalg):

> A:=matrix([[12, 0, 0], [9, 33, 9], [-3, -1, 27]]);

A := matrix([[12, 0, 0], [9, 33, 9], [-3, -1, 27]])...

> factor(minpoly(A,t));

(t-12)*(t-30)^2

> K1:=evalm((A-30)^2);

K1 := matrix([[324, 0, 0], [-162, 0, 0], [54, 0, 0]...

> B1:=kernel(K1);

B1 := {vector([0, 1, 0]), vector([0, 0, 1])}

> evalm(multiply(A-30,[0,1,0]));

vector([0, 3, -1])

> K2:=evalm(A - 12);

K2 := matrix([[0, 0, 0], [9, 21, 9], [-3, -1, 15]])...

> B2:= kernel(K2);

B2 := {vector([6, -3, 1])}

> M:=transpose(matrix([[6,-3,1],[0,3,-1],[0,1,0]]));

M := matrix([[6, 0, 0], [-3, 3, 1], [1, -1, 0]])

> multiply(inverse(M),A,M);

matrix([[12, 0, 0], [0, 30, 1], [0, 0, 30]])

>