> A:=Matrix([[a,b],[c,d]]);
> B:=Matrix([[p,q],[r,s]]);
> with(linalg);
Warning, the protected names norm and trace have been redefined and unprotected
> trace(A.B);
> trace(B.A);
> (A.B-B.A).(A.B-B.A);
>
> 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));
> 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));
> 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));
> C:=Matrix([[1,0],[0,2]]);
> A.C-C.A;
> A^(-1).B.A;
> 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));
> 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);
>