m2.mws

> A:=Matrix([[a,b],[c,d]]);

A := _rtable[14988060]

> B:=Matrix([[p,q],[r,s]]);

B := _rtable[16427436]

> with(linalg);

Warning, the protected names norm and trace have been redefined and unprotected

[BlockDiagonal, GramSchmidt, JordanBlock, LUdecomp,...
[BlockDiagonal, GramSchmidt, JordanBlock, LUdecomp,...
[BlockDiagonal, GramSchmidt, JordanBlock, LUdecomp,...
[BlockDiagonal, GramSchmidt, JordanBlock, LUdecomp,...
[BlockDiagonal, GramSchmidt, JordanBlock, LUdecomp,...
[BlockDiagonal, GramSchmidt, JordanBlock, LUdecomp,...
[BlockDiagonal, GramSchmidt, JordanBlock, LUdecomp,...
[BlockDiagonal, GramSchmidt, JordanBlock, LUdecomp,...
[BlockDiagonal, GramSchmidt, JordanBlock, LUdecomp,...
[BlockDiagonal, GramSchmidt, JordanBlock, LUdecomp,...

> trace(A.B);

a*p+b*r+c*q+d*s

> trace(B.A);

a*p+b*r+c*q+d*s

We find trace of AB=trace of BA .

> a*p+b*r+c*q+d*s;

a*p+b*r+c*q+d*_rtable[16599568]

> (A.B-B.A).(A.B-B.A);

_rtable[16429692]
_rtable[16429692]
_rtable[16429692]
_rtable[16429692]

>

> expand((b*r-c*q)*(a*q+b*s-p*b-q*d)+(a*q+b*s-p*b-q*d)*(c*q-b*r));

0

> expand((c*p+d*r-r*a-s*c)*(b*r-c*q)+(c*q-b*r)*(c*p+d*r-r*a-s*c));

0

> expand((b*r-c*q)^2+(a*q+b*s-p*b-q*d)*(c*p+d*r-r*a-s*c)-((a*q+b*s-p*b-q*d)*(c*p+d*r-r*a-s*c)+(c*q-b*r)^2));

0

We find (AB-BA)(AB-BA) is scalar.

> C:=Matrix([[1,0],[0,2]]);

C := _rtable[16434068]

> A.C-C.A;

_rtable[16436340]

Find all marices commuting with _rtable[16434068] are _rtable[16551520]

>

> A^(-1).B.A;

_rtable[16438572]
_rtable[16438572]
_rtable[16438572]

> simplify(expand((d*p/(a*d-b*c)-b*r/(a*d-b*c))*b+(d*q/(a*d-b*c)-b*s/(a*d-b*c))*d));

-(-b*d*p+b^2*r-d^2*q+d*b*s)/(a*d-b*c)

> -(-b*d*p+b^2*r-d^2*q+d*b*%?)/(a*d-b*c);

> expand((-c*p/(a*d-b*c)+a*r/(a*d-b*c))*a+(-c*q/(a*d-b*c)+a*s/(a*d-b*c))*c);

-a*c*p/(a*d-b*c)+a^2*r/(a*d-b*c)-c^2*q/(a*d-b*c)+c*...

We find if a=b=c=d=0 then A^(-1)BA is diagonal. But A <>0 so A^(-1)BA can never be diagonal.

> restart:

> S:=Matrix([[a,b],[c,d]]);

S := _rtable[16636244]

> A:=Matrix([[1,0],[1,1]]);

A := _rtable[16646204]

> S^(-1).A.S;

_rtable[14880660]

> expand((d/(a*d-b*c)-b/(a*d-b*c))*b-b*d/(a*d-b*c));

-b^2/(a*d-b*c)

If b=0 then S^(-1).A.S triangular.