I would like to create a function to matrix multiply (dot product) n matrices together, where n is large, for example


I know there is the 'product' function that can do this for standard multiplication but I cannot seem to find a version for dot products. I have tried using a loop but this takes forever to run when n becomes large. Is there a way around this? Thanks in advance.

  • 3
    $\begingroup$ Dot[M1, M2, M3, M4, M5, ..., Mn]? However, when the matrices vary much in size the order of Dotting should be optimized. $\endgroup$ Apr 25 '19 at 19:04
  • 4
    $\begingroup$ Also Dot @@ MList comes to mind where MList is a list of matrices. $\endgroup$ Apr 25 '19 at 19:12
  • $\begingroup$ That would work but I was hoping to automate this process. As you can imagine when n becomes quite, large manually entering all of the matrices would become tiresome so I am looking for a way to matrix multiply these matrices Mj with the index j running from 1 to n where i can input n to be any integer I need. $\endgroup$
    – user63517
    Apr 26 '19 at 12:36
  • 3
    $\begingroup$ Fold[Dot[#1, M[#2]] &, M[1], Range[2, n]]? $\endgroup$ Apr 26 '19 at 14:24

I found a relatively easy method that works:

  • $\begingroup$ Dot @@ Array[M, n] $\endgroup$
    – b3m2a1
    May 27 '19 at 3:19
  • $\begingroup$ Just what Henrik Schumacher recommended here $\endgroup$
    – Michael E2
    Sep 23 '19 at 21:19

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy