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

A := _rtable[16298724]

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

B := _rtable[16315092]

> 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

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

_rtable[7783376]
_rtable[7783376]
_rtable[7783376]
_rtable[7783376]

>

> 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

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

C := _rtable[7532620]

> A.C-C.A;

_rtable[7848168]

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

_rtable[8204016]
_rtable[8204016]
_rtable[8204016]

> 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)

> 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*...

>