The multiplication of list of matrices The Next CEO of Stack Overflowexporting 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

Why didn't Khan get resurrected in the Genesis Explosion?

Would a completely good Muggle be able to use a wand?

Can we say or write : "No, it'sn't"?

Reference request: Grassmannian and Plucker coordinates in type B, C, D

Axiom Schema vs Axiom

Powershell. How to parse gci Name?

Is French Guiana a (hard) EU border?

Why is information "lost" when it got into a black hole?

A Man With a Stainless Steel Endoskeleton (like The Terminator) Fighting Cloaked Aliens Only He Can See

Should I cite using beginthebibliography or beginfilecontents*

Chain wire methods together in Lightning Web Components

Writing differences on a blackboard

Why did CATV standarize in 75 ohms and everyone else in 50?

Where do students learn to solve polynomial equations these days?

How many extra stops do monopods offer for tele photographs?

How a 64-bit process virtual address space is divided in Linux?

Some questions about different axiomatic systems for neighbourhoods

Domestic-to-international connection at Orlando (MCO)

Is it possible to replace duplicates of a character with one character using tr

Method for adding error messages to a dictionary given a key

Recycling old answers

Why do airplanes bank sharply to the right after air-to-air refueling?

Help understanding this unsettling image of Titan, Epimetheus, and Saturn's rings?

Flying from Cape Town to England and return to another province



The multiplication of list of matrices



The Next CEO of Stack Overflowexporting 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
    Mar 19 at 8:00











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,1811536




4,1811536











  • $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
    Mar 19 at 8:00















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
    Mar 19 at 8:00













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 Mar 19 at 8:00

























answered Mar 18 at 23:36









Henrik SchumacherHenrik Schumacher

58.6k581162




58.6k581162











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










  • $begingroup$
    You're welcome.
    $endgroup$
    – Henrik Schumacher
    Mar 19 at 8:00
















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










  • $begingroup$
    You're welcome.
    $endgroup$
    – Henrik Schumacher
    Mar 19 at 8:00















$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
Mar 19 at 8:00




$begingroup$
You're welcome.
$endgroup$
– Henrik Schumacher
Mar 19 at 8:00

















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

Identifying “long and narrow” polygons in with PostGISlength and width of polygonWhy postgis st_overlaps reports Qgis' “avoid intersections” generated polygon as overlapping with others?Adjusting polygons to boundary and filling holesDrawing polygons with fixed area?How to remove spikes in Polygons with PostGISDeleting sliver polygons after difference operation in QGIS?Snapping boundaries in PostGISSplit polygon into parts adding attributes based on underlying polygon in QGISSplitting overlap between polygons and assign to nearest polygon using PostGIS?Expanding polygons and clipping at midpoint?Removing Intersection of Buffers in Same Layers

Masuk log Menu navigasi

อาณาจักร (ชีววิทยา) ดูเพิ่ม อ้างอิง รายการเลือกการนำทาง10.1086/39456810.5962/bhl.title.447410.1126/science.163.3863.150576276010.1007/BF01796092408502"Phylogenetic structure of the prokaryotic domain: the primary kingdoms"10.1073/pnas.74.11.5088432104270744"Towards a natural system of organisms: proposal for the domains Archaea, Bacteria, and Eucarya"1990PNAS...87.4576W10.1073/pnas.87.12.4576541592112744PubMedJump the queueexpand by handPubMedJump the queueexpand by handPubMedJump the queueexpand by hand"A revised six-kingdom system of life"10.1111/j.1469-185X.1998.tb00030.x9809012"Only six kingdoms of life"10.1098/rspb.2004.2705169172415306349"Kingdoms Protozoa and Chromista and the eozoan root of the eukaryotic tree"10.1098/rsbl.2009.0948288006020031978เพิ่มข้อมูล