I am trying to perform a product of a large number of terms of the form MaxtrixExp[...], for example, something like this

L = Simplify[Normal[Series[
 MatrixExp[z a1[1][R] Y[1]].MatrixExp[z a[2][R] Y[2]].MatrixExp[
   z a[3][R] Y[3]].MatrixExp[z a[4][R] Y[4]].MatrixExp[
   z a[5][R] Y[5]].MatrixExp[z a[6][R] Y[6]].MatrixExp[
   z a[7][R] Y[7]].MatrixExp[z a[8][R] Y[8]].MatrixExp[
   z a[9][R] Y[9]].MatrixExp[z a[10][R] Y[10]].MatrixExp[
   z a[11][R] Y[11]].MatrixExp[z a[12][R] Y[12]].MatrixExp[
   z a[13][R] Y[13]].MatrixExp[z a[14][R] Y[14]].MatrixExp[
   z a[15][R] Y[15]].MatrixExp[z a[16][R] Y[16]].MatrixExp[
   z a[17][R] Y[17]].MatrixExp[z a[18][R] Y[18]].MatrixExp[
   z a[19][R] Y[19]].MatrixExp[z a[20][R] Y[20]].MatrixExp[
   z a[21][R] Y[21]].MatrixExp[z a[22][R] Y[22]].MatrixExp[
   z a[23][R] Y[23]].MatrixExp[z a[24][R] Y[24]].MatrixExp[
   z a[25][R] Y[25]].MatrixExp[z a[26][R] Y[26]].MatrixExp[
   z a[27][R] Y[27]].MatrixExp[z a[28][R] Y[28]].MatrixExp[
   z a[29][R] Y[29]].MatrixExp[z a[30][R] Y[30]].MatrixExp[
   z a[31][R] Y[31]].MatrixExp[z a[32][R] Y[32]].MatrixExp[
   z a[33][R] Y[33]].MatrixExp[z a[34][R] Y[34]].MatrixExp[
   z a[35][R] Y[35]].MatrixExp[z a[36][R] Y[36]].MatrixExp[
   z a[37][R] Y[37]].MatrixExp[z a[38][R] Y[38]].MatrixExp[
   z a[39][R] Y[39]].MatrixExp[z a[40][R] Y[40]].MatrixExp[
   z a[41][R] Y[41]].MatrixExp[z a[42][R] Y[42]], {z, 0, 2}]]];

where Y[m] are 13x13 matrices generated by

x = 6; nv=7; Table[e[a, b]=Table[KroneckerDelta[a, c] KroneckerDelta[b, d], {c,6+ nv}, {d, 6+ nv}], {a, 6 + nv}, {b, 6 + nv}]; Table[Y[i] = e[1, x + i] + e[x + i, 1], {i, nv}];  Table[Y[i + nv] = e[2, x + i] + e[x + i, 2], {i, nv}]; Table[Y[i + 2 nv] = e[3, x + i] + e[x + i, 3], {i, nv}];Table[Y[i + 3 nv] = e[4, x + i] + e[x + i, 4], {i, nv}]; Table[Y[i + 4 nv] = e[5, x + i] + e[x + i, 5], {i,  nv}]; Table[Y[i + 5 nv] = e[6, x + i] + e[x + i, 6], {i, nv}];

a[n][R] are just some unknowns. I am trying to find a way to rewrite the above expression for L using Product, i.e.

L2=Simplify[Normal[Series[Product[MatrixExp[z a[i][R] Y[i]], {i, 1, 42}], {z, 0, 2}]]];

but this does not yield the correct result for L as given in the first long expression.

I also need to form a product of the inverse of L, i.e. something like

Linverse=Simplify[Normal[Series[MatrixExp[-z a[42] Y[42]].Matrix[-z a[41] Y[41]] ... MatrixExp[-z a[1] Y[1]],{z,0,2}]]];

so that


There must be a simple way to rewrite a product for L and (Linverse), and I'd be grateful if anyone could point this out to me. Thanks.


1 Answer 1


As a start, change Product to Dot@@Table as

L2 = Simplify[Normal[Series[Dot @@ Table[MatrixExp[z a[i][R] Y[i]], {i, 1, 42}], {z, 0, 2}]]]

I'll continue working on the inverse.

  • $\begingroup$ Thanks for your answer. Using the same Dot@@Table command like yours, I construct the Linverse to be L2i = Simplify[ Normal[Series[ Dot @@ Table[ MatrixExp[-z a[(-1) (i - 42)][R] Y[(-1) (i - 42)]], {i, 0, 41}], {z, 0, 2}]]]; This indeed yields the desired result when contracted with L (a 13x13 identity matrix) $\endgroup$
    – user195583
    Nov 22, 2019 at 5:42

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.