Solving for a matrix.
I have an m x n matrix A and an m x n matrix of variables X. I want to solve for all possible X such that AX^T = XA^T and A^TX = X^TA. Is there any nice way to do this?
I've tried using various commands like "Solve" but "solve_right" but it doesn't seem to be working. Here is my code so far.
A = matrix([[0,1],[1,0],[1,1]])
xrownum = A.nrows()
xcolnum = A.ncols()
X = matrix([[var("x_{}_{}".format(u,v), latex_name="a_{{{},{}}}".format(u,v)) for v in range(xcolnum)] for u in range(xrownum)]);
for i in range(xrownum):
for j in range(xcolnum):
if A[i,j] != 0:
X[i,j] = 0
XAT = X*A.transpose()
AXT = A*X.transpose()
ATX = A.transpose()*X
XTA = X.transpose()*A
Of course, X = 0 will always work, but I am interested in knowing if it is the ONLY matrix which works.
$A^TX = X^TA$ gives $n^2$ linear equations. Just solve the system of these equations with linear algebra. Checking whether $X=0$ is the only solution corresponds to checking whether the system has a trivial kernel.
Right, I am just unsure how to implement this in Sage. I am very new to the language and I would like to write a program which can do this computation for an arbitrary A.