The multiplication of list of matricesexporting list of matrices in mathematicaMatrix multiplicationEasy way to perform multiplication of two 2x2 matrices, that contain list elements?Multiplying block matricesMatrix multiplication for higher dimensional matricesMultiply a matrix by a vectorouter product of matricesAdding two matrices together results in a weird resultMultiply two listsUsing ReplaceAll on matrix to produce new list of complete matrices

Is there a RAID 0 Equivalent for RAM?

How does electrical safety system work on ISS?

Can I cause damage to electrical appliances by unplugging them when they are turned on?

Can you use Vicious Mockery to win an argument or gain favours?

How much of a Devil Fruit must be consumed to gain the power?

Taxes on Dividends in a Roth IRA

What is going on with gets(stdin) on the site coderbyte?

Can I say "fingers" when referring to toes?

"It doesn't matter" or "it won't matter"?

C++ copy constructor called at return

Has any country ever had 2 former presidents in jail simultaneously?

The IT department bottlenecks progress, how should I handle this?

Non-trope happy ending?

Why do ¬, ∀ and ∃ have the same precedence?

Doesn't the system of the Supreme Court oppose justice?

What is the highest possible scrabble score for placing a single tile

How to make money from a browser who sees 5 seconds into the future of any web page?

Did the UK lift the requirement for registering SIM cards?

Why is it that I can sometimes guess the next note?

What is the English pronunciation of "pain au chocolat"?

Permission on Database

PTIJ: Why is Haman obsessed with Bose?

When were female captains banned from Starfleet?

Which Article Helped Get Rid of Technobabble in RPGs?



The multiplication of list of matrices


exporting list of matrices in mathematicaMatrix multiplicationEasy way to perform multiplication of two 2x2 matrices, that contain list elements?Multiplying block matricesMatrix multiplication for higher dimensional matricesMultiply a matrix by a vectorouter product of matricesAdding two matrices together results in a weird resultMultiply two listsUsing ReplaceAll on matrix to produce new list of complete matrices













3












$begingroup$


I need to multiply 3 lists of matrices (b.a.b) as the following code



a = -17.8227277373099`, -1.6565234964560602`, 
-1.6565234954649242`,
5.298073701591974`, -17.812203521929003`,
-1.5013126607114478`, -1.5013126574896714`,
4.384050851253119`, -17.801677045750512`,
-1.4055541329078751`, -1.405554138172727`,
3.869511752542245`;

b = 0.8409518416651456`, 0, 0,
0.1274293000222242`, 0.8409815693580924`, 0, 0,
0.14187218616724442`, 0.841011296000238`, 0, 0,
0.15290209433231844`;


I used the following:



 mat = b.a.b


But, I think this way is not correct because I didn't get the result. Also, I make a test for the first matrices as the following code, that what I wanted to get for the whole matrices multiplication.



 a1 = -17.8227277373099`, -1.6565234964560602`, 
-1.6565234954649242`, 5.298073701591974`;

b1 = 0.8409518416651456`, 0, 0, 0.1274293000222242`;

mat1 = b1.a1.b1


-12.6042, -0.177516, -0.177516, 0.0860313

Thanks.









share|improve this question









$endgroup$







  • 1




    $begingroup$
    Table[b[[i]].a[[i]].b[[i]], i, 1, 3] or #[[2]].#[[1]].#[[2]] & /@ Transpose[a, b].
    $endgroup$
    – corey979
    Mar 18 at 21:06











  • $begingroup$
    Thanks a lot corey979!
    $endgroup$
    – Ghady
    Mar 19 at 0:30















3












$begingroup$


I need to multiply 3 lists of matrices (b.a.b) as the following code



a = -17.8227277373099`, -1.6565234964560602`, 
-1.6565234954649242`,
5.298073701591974`, -17.812203521929003`,
-1.5013126607114478`, -1.5013126574896714`,
4.384050851253119`, -17.801677045750512`,
-1.4055541329078751`, -1.405554138172727`,
3.869511752542245`;

b = 0.8409518416651456`, 0, 0,
0.1274293000222242`, 0.8409815693580924`, 0, 0,
0.14187218616724442`, 0.841011296000238`, 0, 0,
0.15290209433231844`;


I used the following:



 mat = b.a.b


But, I think this way is not correct because I didn't get the result. Also, I make a test for the first matrices as the following code, that what I wanted to get for the whole matrices multiplication.



 a1 = -17.8227277373099`, -1.6565234964560602`, 
-1.6565234954649242`, 5.298073701591974`;

b1 = 0.8409518416651456`, 0, 0, 0.1274293000222242`;

mat1 = b1.a1.b1


-12.6042, -0.177516, -0.177516, 0.0860313

Thanks.









share|improve this question









$endgroup$







  • 1




    $begingroup$
    Table[b[[i]].a[[i]].b[[i]], i, 1, 3] or #[[2]].#[[1]].#[[2]] & /@ Transpose[a, b].
    $endgroup$
    – corey979
    Mar 18 at 21:06











  • $begingroup$
    Thanks a lot corey979!
    $endgroup$
    – Ghady
    Mar 19 at 0:30













3












3








3





$begingroup$


I need to multiply 3 lists of matrices (b.a.b) as the following code



a = -17.8227277373099`, -1.6565234964560602`, 
-1.6565234954649242`,
5.298073701591974`, -17.812203521929003`,
-1.5013126607114478`, -1.5013126574896714`,
4.384050851253119`, -17.801677045750512`,
-1.4055541329078751`, -1.405554138172727`,
3.869511752542245`;

b = 0.8409518416651456`, 0, 0,
0.1274293000222242`, 0.8409815693580924`, 0, 0,
0.14187218616724442`, 0.841011296000238`, 0, 0,
0.15290209433231844`;


I used the following:



 mat = b.a.b


But, I think this way is not correct because I didn't get the result. Also, I make a test for the first matrices as the following code, that what I wanted to get for the whole matrices multiplication.



 a1 = -17.8227277373099`, -1.6565234964560602`, 
-1.6565234954649242`, 5.298073701591974`;

b1 = 0.8409518416651456`, 0, 0, 0.1274293000222242`;

mat1 = b1.a1.b1


-12.6042, -0.177516, -0.177516, 0.0860313

Thanks.









share|improve this question









$endgroup$




I need to multiply 3 lists of matrices (b.a.b) as the following code



a = -17.8227277373099`, -1.6565234964560602`, 
-1.6565234954649242`,
5.298073701591974`, -17.812203521929003`,
-1.5013126607114478`, -1.5013126574896714`,
4.384050851253119`, -17.801677045750512`,
-1.4055541329078751`, -1.405554138172727`,
3.869511752542245`;

b = 0.8409518416651456`, 0, 0,
0.1274293000222242`, 0.8409815693580924`, 0, 0,
0.14187218616724442`, 0.841011296000238`, 0, 0,
0.15290209433231844`;


I used the following:



 mat = b.a.b


But, I think this way is not correct because I didn't get the result. Also, I make a test for the first matrices as the following code, that what I wanted to get for the whole matrices multiplication.



 a1 = -17.8227277373099`, -1.6565234964560602`, 
-1.6565234954649242`, 5.298073701591974`;

b1 = 0.8409518416651456`, 0, 0, 0.1274293000222242`;

mat1 = b1.a1.b1


-12.6042, -0.177516, -0.177516, 0.0860313

Thanks.






list-manipulation matrix






share|improve this question













share|improve this question











share|improve this question




share|improve this question










asked Mar 18 at 20:56









GhadyGhady

696




696







  • 1




    $begingroup$
    Table[b[[i]].a[[i]].b[[i]], i, 1, 3] or #[[2]].#[[1]].#[[2]] & /@ Transpose[a, b].
    $endgroup$
    – corey979
    Mar 18 at 21:06











  • $begingroup$
    Thanks a lot corey979!
    $endgroup$
    – Ghady
    Mar 19 at 0:30












  • 1




    $begingroup$
    Table[b[[i]].a[[i]].b[[i]], i, 1, 3] or #[[2]].#[[1]].#[[2]] & /@ Transpose[a, b].
    $endgroup$
    – corey979
    Mar 18 at 21:06











  • $begingroup$
    Thanks a lot corey979!
    $endgroup$
    – Ghady
    Mar 19 at 0:30







1




1




$begingroup$
Table[b[[i]].a[[i]].b[[i]], i, 1, 3] or #[[2]].#[[1]].#[[2]] & /@ Transpose[a, b].
$endgroup$
– corey979
Mar 18 at 21:06





$begingroup$
Table[b[[i]].a[[i]].b[[i]], i, 1, 3] or #[[2]].#[[1]].#[[2]] & /@ Transpose[a, b].
$endgroup$
– corey979
Mar 18 at 21:06













$begingroup$
Thanks a lot corey979!
$endgroup$
– Ghady
Mar 19 at 0:30




$begingroup$
Thanks a lot corey979!
$endgroup$
– Ghady
Mar 19 at 0:30










2 Answers
2






active

oldest

votes


















8












$begingroup$

Using MapThread and Dot:



MapThread[Dot, b, a, b]





share|improve this answer









$endgroup$












  • $begingroup$
    Thank you very much, It is the easiest!
    $endgroup$
    – Ghady
    Mar 19 at 0:33


















6












$begingroup$

If you need it really fast, then use Compile:



n = 1000000;
a = RandomReal[-1, 1, n, 2, 2];
b = RandomReal[-1, 1, n, 2, 2];

cf = Compile[a, _Real, 2, b, _Real, 2,
b.a.b,
RuntimeAttributes -> Listable,
Parallelization -> True
];

MapThread[Dot, b, a, b]; // AbsoluteTiming // First
cf[a, b]; // AbsoluteTiming // First



1.46343



0.075722







share|improve this answer











$endgroup$












  • $begingroup$
    Thank you very much!
    $endgroup$
    – Ghady
    Mar 19 at 0:31










  • $begingroup$
    You're welcome.
    $endgroup$
    – Henrik Schumacher
    2 days ago










Your Answer





StackExchange.ifUsing("editor", function ()
return StackExchange.using("mathjaxEditing", function ()
StackExchange.MarkdownEditor.creationCallbacks.add(function (editor, postfix)
StackExchange.mathjaxEditing.prepareWmdForMathJax(editor, postfix, [["$", "$"], ["\\(","\\)"]]);
);
);
, "mathjax-editing");

StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "387"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);

StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);

else
createEditor();

);

function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);



);













draft saved

draft discarded


















StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmathematica.stackexchange.com%2fquestions%2f193512%2fthe-multiplication-of-list-of-matrices%23new-answer', 'question_page');

);

Post as a guest















Required, but never shown

























2 Answers
2






active

oldest

votes








2 Answers
2






active

oldest

votes









active

oldest

votes






active

oldest

votes









8












$begingroup$

Using MapThread and Dot:



MapThread[Dot, b, a, b]





share|improve this answer









$endgroup$












  • $begingroup$
    Thank you very much, It is the easiest!
    $endgroup$
    – Ghady
    Mar 19 at 0:33















8












$begingroup$

Using MapThread and Dot:



MapThread[Dot, b, a, b]





share|improve this answer









$endgroup$












  • $begingroup$
    Thank you very much, It is the easiest!
    $endgroup$
    – Ghady
    Mar 19 at 0:33













8












8








8





$begingroup$

Using MapThread and Dot:



MapThread[Dot, b, a, b]





share|improve this answer









$endgroup$



Using MapThread and Dot:



MapThread[Dot, b, a, b]






share|improve this answer












share|improve this answer



share|improve this answer










answered Mar 18 at 21:21









swishswish

4,1761535




4,1761535











  • $begingroup$
    Thank you very much, It is the easiest!
    $endgroup$
    – Ghady
    Mar 19 at 0:33
















  • $begingroup$
    Thank you very much, It is the easiest!
    $endgroup$
    – Ghady
    Mar 19 at 0:33















$begingroup$
Thank you very much, It is the easiest!
$endgroup$
– Ghady
Mar 19 at 0:33




$begingroup$
Thank you very much, It is the easiest!
$endgroup$
– Ghady
Mar 19 at 0:33











6












$begingroup$

If you need it really fast, then use Compile:



n = 1000000;
a = RandomReal[-1, 1, n, 2, 2];
b = RandomReal[-1, 1, n, 2, 2];

cf = Compile[a, _Real, 2, b, _Real, 2,
b.a.b,
RuntimeAttributes -> Listable,
Parallelization -> True
];

MapThread[Dot, b, a, b]; // AbsoluteTiming // First
cf[a, b]; // AbsoluteTiming // First



1.46343



0.075722







share|improve this answer











$endgroup$












  • $begingroup$
    Thank you very much!
    $endgroup$
    – Ghady
    Mar 19 at 0:31










  • $begingroup$
    You're welcome.
    $endgroup$
    – Henrik Schumacher
    2 days ago















6












$begingroup$

If you need it really fast, then use Compile:



n = 1000000;
a = RandomReal[-1, 1, n, 2, 2];
b = RandomReal[-1, 1, n, 2, 2];

cf = Compile[a, _Real, 2, b, _Real, 2,
b.a.b,
RuntimeAttributes -> Listable,
Parallelization -> True
];

MapThread[Dot, b, a, b]; // AbsoluteTiming // First
cf[a, b]; // AbsoluteTiming // First



1.46343



0.075722







share|improve this answer











$endgroup$












  • $begingroup$
    Thank you very much!
    $endgroup$
    – Ghady
    Mar 19 at 0:31










  • $begingroup$
    You're welcome.
    $endgroup$
    – Henrik Schumacher
    2 days ago













6












6








6





$begingroup$

If you need it really fast, then use Compile:



n = 1000000;
a = RandomReal[-1, 1, n, 2, 2];
b = RandomReal[-1, 1, n, 2, 2];

cf = Compile[a, _Real, 2, b, _Real, 2,
b.a.b,
RuntimeAttributes -> Listable,
Parallelization -> True
];

MapThread[Dot, b, a, b]; // AbsoluteTiming // First
cf[a, b]; // AbsoluteTiming // First



1.46343



0.075722







share|improve this answer











$endgroup$



If you need it really fast, then use Compile:



n = 1000000;
a = RandomReal[-1, 1, n, 2, 2];
b = RandomReal[-1, 1, n, 2, 2];

cf = Compile[a, _Real, 2, b, _Real, 2,
b.a.b,
RuntimeAttributes -> Listable,
Parallelization -> True
];

MapThread[Dot, b, a, b]; // AbsoluteTiming // First
cf[a, b]; // AbsoluteTiming // First



1.46343



0.075722








share|improve this answer














share|improve this answer



share|improve this answer








edited 2 days ago

























answered Mar 18 at 23:36









Henrik SchumacherHenrik Schumacher

57.4k578158




57.4k578158











  • $begingroup$
    Thank you very much!
    $endgroup$
    – Ghady
    Mar 19 at 0:31










  • $begingroup$
    You're welcome.
    $endgroup$
    – Henrik Schumacher
    2 days ago
















  • $begingroup$
    Thank you very much!
    $endgroup$
    – Ghady
    Mar 19 at 0:31










  • $begingroup$
    You're welcome.
    $endgroup$
    – Henrik Schumacher
    2 days ago















$begingroup$
Thank you very much!
$endgroup$
– Ghady
Mar 19 at 0:31




$begingroup$
Thank you very much!
$endgroup$
– Ghady
Mar 19 at 0:31












$begingroup$
You're welcome.
$endgroup$
– Henrik Schumacher
2 days ago




$begingroup$
You're welcome.
$endgroup$
– Henrik Schumacher
2 days ago

















draft saved

draft discarded
















































Thanks for contributing an answer to Mathematica Stack Exchange!


  • Please be sure to answer the question. Provide details and share your research!

But avoid


  • Asking for help, clarification, or responding to other answers.

  • Making statements based on opinion; back them up with references or personal experience.

Use MathJax to format equations. MathJax reference.


To learn more, see our tips on writing great answers.




draft saved


draft discarded














StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmathematica.stackexchange.com%2fquestions%2f193512%2fthe-multiplication-of-list-of-matrices%23new-answer', 'question_page');

);

Post as a guest















Required, but never shown





















































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown

































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown







Popular posts from this blog

Adding axes to figuresAdding axes labels to LaTeX figuresLaTeX equivalent of ConTeXt buffersRotate a node but not its content: the case of the ellipse decorationHow to define the default vertical distance between nodes?TikZ scaling graphic and adjust node position and keep font sizeNumerical conditional within tikz keys?adding axes to shapesAlign axes across subfiguresAdding figures with a certain orderLine up nested tikz enviroments or how to get rid of themAdding axes labels to LaTeX figures

Luettelo Yhdysvaltain laivaston lentotukialuksista Lähteet | Navigointivalikko

Gary (muusikko) Sisällysluettelo Historia | Rockin' High | Lähteet | Aiheesta muualla | NavigointivalikkoInfobox OKTuomas "Gary" Keskinen Ancaran kitaristiksiProjekti Rockin' High