[Mathematica] Ordered matrix multiplication

  • Mathematica
  • Thread starter guerom00
  • Start date
  • #1
93
0
Hello everyone,

I have a list, let's call it L1, of length N. Each element of this list is a square matrix.
I would like to :
1/ Apply MatrixExp[] to each element of L1 (I know how to do that)
2/ Multiply each element of the subsequent list _in an ordred fashion_ i.e. from element N to element 1. In this order (!) because none of the matrices commute.

To recap, I have

L1={L1[[1]],L1[[2]],...,L1[[N]]}

and want the matrix M equal to

M=MatrixExp[L1[[N]]].MatrixExp[L1[[N-1]]]...MatrixExp[L1[[1]]]

What would be a nice "one liner" which does that ?
Thanks in advance :)
 

Answers and Replies

  • #2
313
1
This isn't elegant...
First create an example list of 5 random 2x2 matrices
(working symbolically would be very slow)
In[1]:= l[i_][__]:=-Random[]
In[2]:= L[i_]:=Array[l,{2,2}]
In[3]:= LL=Array[L,5];

Now combine them together the way you wanted:
In[4]:= MatrixExp[[email protected]@(MatrixExp/@Reverse[LL])]
Out[4]= {{1.12427,-0.100453},{-0.206832,1.17472}}

Note that for very many large matrices, you might want to use a different solution that does not have to store each element in MatrixExp/@Reverse[LL].
 
  • #3
93
0
Thanks for your message :)
Yeah, I ended up doing more or less what you suggested. I wrote M=L1//MatrixExp/@#&//Reverse//[email protected]@#&.
That was the Dot part I wasn't sure about : I thought for some reason that Dot[] accepted only two arguments. But no... It nicely "threads" over any number of arguments :)
 

Related Threads on [Mathematica] Ordered matrix multiplication

Replies
1
Views
8K
  • Last Post
Replies
4
Views
2K
Replies
2
Views
857
Replies
4
Views
2K
Replies
1
Views
2K
Replies
7
Views
2K
Replies
2
Views
2K
Replies
3
Views
2K
Replies
1
Views
2K
Replies
4
Views
3K
Top