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

Masuk log Menu navigasi

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

Старые Смолеговицы Содержание История | География | Демография | Достопримечательности | Примечания | НавигацияHGЯOLHGЯOL41 206 832 01641 606 406 141Административно-территориальное деление Ленинградской области«Переписная оброчная книга Водской пятины 1500 года», С. 793«Карта Ингерманландии: Ивангорода, Яма, Копорья, Нотеборга», по материалам 1676 г.«Генеральная карта провинции Ингерманландии» Э. Белинга и А. Андерсина, 1704 г., составлена по материалам 1678 г.«Географический чертёж над Ижорскою землей со своими городами» Адриана Шонбека 1705 г.Новая и достоверная всей Ингерманландии ланткарта. Грав. А. Ростовцев. СПб., 1727 г.Топографическая карта Санкт-Петербургской губернии. 5-и верстка. Шуберт. 1834 г.Описание Санкт-Петербургской губернии по уездам и станамСпецкарта западной части России Ф. Ф. Шуберта. 1844 г.Алфавитный список селений по уездам и станам С.-Петербургской губернииСписки населённых мест Российской Империи, составленные и издаваемые центральным статистическим комитетом министерства внутренних дел. XXXVII. Санкт-Петербургская губерния. По состоянию на 1862 год. СПб. 1864. С. 203Материалы по статистике народного хозяйства в С.-Петербургской губернии. Вып. IX. Частновладельческое хозяйство в Ямбургском уезде. СПб, 1888, С. 146, С. 2, 7, 54Положение о гербе муниципального образования Курское сельское поселениеСправочник истории административно-территориального деления Ленинградской области.Топографическая карта Ленинградской области, квадрат О-35-23-В (Хотыницы), 1930 г.АрхивированоАдминистративно-территориальное деление Ленинградской области. — Л., 1933, С. 27, 198АрхивированоАдминистративно-экономический справочник по Ленинградской области. — Л., 1936, с. 219АрхивированоАдминистративно-территориальное деление Ленинградской области. — Л., 1966, с. 175АрхивированоАдминистративно-территориальное деление Ленинградской области. — Лениздат, 1973, С. 180АрхивированоАдминистративно-территориальное деление Ленинградской области. — Лениздат, 1990, ISBN 5-289-00612-5, С. 38АрхивированоАдминистративно-территориальное деление Ленинградской области. — СПб., 2007, с. 60АрхивированоКоряков Юрий База данных «Этно-языковой состав населённых пунктов России». Ленинградская область.Административно-территориальное деление Ленинградской области. — СПб, 1997, ISBN 5-86153-055-6, С. 41АрхивированоКультовый комплекс Старые Смолеговицы // Электронная энциклопедия ЭрмитажаПроблемы выявления, изучения и сохранения культовых комплексов с каменными крестами: по материалам работ 2016-2017 гг. в Ленинградской области