ker[A_]:=Module[{X=NullSpace[A]},Print["ker = lin",MatrixForm[Transpose[X]]];X]

A={{0,0,0,0,0,6,0},{4,4,0,3,0,-4,0},{0,0,4,0,0,0,2},{0,0,0,4,0,0,0},{4,2,0,2,4,-4,0},{-4,0,0,-1,0,10,0},{4,0,0,5,0,-4,4}};
MatrixForm[A]

(* wielomian charakterystyczny *)
chi[t]=Det[A-t IdentityMatrix[7]]

Factor[chi[t]]

(* wartosc wlasna 6 *)
B6=A-6 IdentityMatrix[7];MatrixForm[B6]
K=ker[B6];

u1=K[[1]]

(* wartosc wlasna 4 *)
B4=A-4 IdentityMatrix[7];MatrixForm[B4]
K1=ker[B4];

MatrixForm[B4.B4]
K2=ker[B4.B4];

MatrixForm[B4.B4.B4]
K3=ker[B4.B4.B4];

MatrixForm[B4.B4.B4.B4]
K4=ker[B4.B4.B4.B4];

(* najdluzszy lancuszek *)
v4=K4[[4]] 
v3=B4.v4
v2=B4.v3
v1=B4.v2
B4.v1

(* Z wektorow K1=ker(B4) trzeba wybrac koncowy element drugiego lanscuszka, aby wraz z v1 rozpinal K1. Ta metoda wymaga pozniej szukania przeciwobrazu v1*)
K1

w1=K1[[1]]

(* zastanawiamy sie czego obrazem jest w1; przypomnijmy jaka jest macierz B4. *)
MatrixForm[B4]

(* zauwazamy, ze w1=epsilon5 jest obrazem *)
w2={0,1/2,0,0,0,0,0};
w1==B4.w2

(* macierz przejscia z Jordana do standardowej *)
X=Transpose[{u1,v1,v2,v3,v4,w1,w2}];
MatrixForm[X]

(* postac Jordana *)
MatrixForm[Inverse[X].A.X]