Message Boards Message Boards

Finding conjugating matrix

Posted 4 years ago

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:

X={{a[1],1},{b[1],-a[1]}}
C={{0,1},{b[1]-a[1]*a[1],0}}
L={{1,0},{l[2,1],1}}

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!

POSTED BY: Jonathan Tsu
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 BY: Daniel Lichtblau
Posted 4 years 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}}.

POSTED BY: Jonathan Tsu

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 BY: Daniel Lichtblau
Posted 4 years ago

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

POSTED BY: Jonathan Tsu
Reply to this discussion
Community posts can be styled and formatted using the Markdown syntax.
Reply Preview
Attachments
Remove
or Discard

Group Abstract Group Abstract