Message Boards Message Boards


Finding conjugating matrix

Posted 4 months ago
4 Replies
1 Total Likes

Hi, I'm completely new to Mathematica, and trying to do a quick crash course to get what I need to be able to perform some computations for part of a research problem. I've currently got two matrices $X$ and $C$ which I know to be conjugate, and I'm trying to get Mathematica to return the matrix (of a particular form, unipotent) that conjugates them. Here's a minimal working example:


I'm trying to get Mathematica to solve the equation X.L==L.C for the entries of L below the diagonal, and, in particular, return the matrix L that solves this equation. It's probably worth noting that, I'd need to be able to generalise this to larger matrices ( $X$ and $C$ always known $n$-by-$n$ matrices, but are written in terms of variables a[1],...,a[n-1],b[1],...,b[n-1]), and L will have $(n^2-n)/2$ entries to be solved for.

A little background on what I've found, but doesn't seem to work:

  • I tried "Thread" for the equation, and solved. But this returns "solutions" for every entry involved. I believe the needed solutions (l[i,j], with i>j) are amongst the solutions, but I couldn't find how to extract these solutions. Maybe if that can be done, then Mathematica can be told how to assemble these solutions back into L?
  • I've tried a few variants on "Solve", putting the various entries of $L$ into curly braces.

Honestly, I'm pretty lost and my Google searches keep throwing up irrelevant pages. Any help would be hugely appreciated! Thanks in advance for any you can provide!

4 Replies

The system does not appear to have a solution.

xmat = {{a[1], 1}, {b[1], -a[1]}};
cmat = {{0, 1}, {b[1] - a[1]*a[1], 0}};

In[308]:= lmat = Array[l, Dimensions[xmat]];
Solve[xmat.lmat == lmat.cmat, Flatten[lmat]]

(* Out[309]= {{l[1, 1] -> 0, l[1, 2] -> 0, l[2, 1] -> 0, l[2, 2] -> 0}} *)

General remarl: avoid capital letters for variables. Many have built-in meanings.

Posted 4 months ago

Apologies, there was a sign error in my question. The cmat matrix should have been given by cmat={{0,1},{b[1]+a[1]*a[1],0}}.

Okay, so same idea. I changed lmat to be explicitly unimodular lower triangular.

lmat = {{1, 0}, {z, 1}};
Solve[xmat.lmat == lmat.cmat, Variables[lmat]]

(* Out[317]= {{z -> -a[1]}} *)
Posted 4 months ago

That works perfectly! Thank you so much for the help!

Reply to this discussion
Community posts can be styled and formatted using the Markdown syntax.
Reply Preview
or Discard

Group Abstract Group Abstract