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

Quoting Keynes in a lectureIs differentiated instruction permitted by universities?How to make students learn prerequisitesUnsatisfactory Instructor Evaluations: balancing of expectations of engineering studentsWhat is the difference between a “statistician”, “applied statistician”, and an academic applying advanced stats within their field?Listing in reference section, but not quotingHow to efficiently use time while preparing for a class?Graduate Admissions: Teaching Emphasisstrategies for sharing teaching information with universities I don't personally have contacts withIs there an efficient way to give a large class of students feedback about their assignments?Is it unreasonable to expect students to read the lecture notes before attending the first class?

Rank groups within a grouped sequence of TRUE/FALSE and NAGrouping functions (tapply, by, aggregate) and the *apply familyCharacters counting and subletting specific patternsWhat is the purpose of setting a key in data.table?data.table vs dplyr: can one do something well the other can't or does poorly?how to make a bar plot for a list of dataframes?How to group by unique values in a list in RPandas - Alternative to rank() function that gives unique ordinal ranks for a columnRank within group in for loop in RData transformation: from dyadic to observational data in RGetting map from purrr to work with paste0

Are all passive ability checks floors for active ability checks?Does passive perception supersede active perception?Which skills can be used passively?Active Opposition with Free-Form Professions in Fate5E Trap/Ambush/Stealth Mechanics VS Passive Perception ConfusionInteraction between perception and stealth in obscured conditionsHow does Keen Sight affect Passive Perception?Are all d20 rolls either attacks, saves or ability checks?Can players declare that they are making a specific ability check?Can I see a Hidden creature that is not obscured at all?Can a Stealth check ever be made passively?Is this alternate version of the Observant feat balanced?What is the minimum amount of skill points per HD?