Illustration of how to compute the product of two matrices.
Source: | Altermundus.com |
---|
Do you have a question regarding this example, TikZ or LaTeX in general? Just ask in the
LaTeX Forum.
Oder frag auf Deutsch auf TeXwelt.de.
En français: TeXnique.fr.
% Author : Alain Matthes% Source : http://altermundus.com/pages/examples.html\documentclass[]{article}\usepackage[utf8]{inputenc}\usepackage[upright]{fourier}\usepackage{tikz}\usetikzlibrary{matrix,arrows,decorations.pathmorphing}\usepackage{verbatim}\begin{document}% l' unite\newcommand{\myunit}{1 cm}\tikzset{ node style sp/.style={draw,circle,minimum size=\myunit}, node style ge/.style={circle,minimum size=\myunit}, arrow style mul/.style={draw,sloped,midway,fill=white}, arrow style plus/.style={midway,sloped,fill=white},}\begin{tikzpicture}[>=latex]% les matrices\matrix (A) [matrix of math nodes, nodes = {node style ge}, left delimiter = (, right delimiter = )] at (0,0){ a_{11} & a_{12} & \ldots & a_{1p} \\ |[node style sp]| a_{21} & |[node style sp]| a_{22} & \ldots & |[node style sp]| a_{2p} \\ \vdots & \vdots & \ddots & \vdots \\ a_{n1} & a_{n2} & \ldots & a_{np} \\};\node [draw,below=10pt] at (A.south) { $A$ : \textcolor{red}{$n$ rows} $p$ columns};\matrix (B) [matrix of math nodes, nodes = {node style ge}, left delimiter = (, right delimiter = )] at (6*\myunit,6*\myunit){ b_{11} & |[node style sp]| b_{12} & \ldots & b_{1q} \\ b_{21} & |[node style sp]| b_{22} & \ldots & b_{2q} \\ \vdots & \vdots & \ddots & \vdots \\ b_{p1} & |[node style sp]| b_{p2} & \ldots & b_{pq} \\};\node [draw,above=10pt] at (B.north) { $B$ : $p$ rows \textcolor{red}{$q$ columns}};% matrice résultat\matrix (C) [matrix of math nodes, nodes = {node style ge}, left delimiter = (, right delimiter = )] at (6*\myunit,0){ c_{11} & c_{12} & \ldots & c_{1q} \\ c_{21} & |[node style sp,red]| c_{22} & \ldots & c_{2q} \\ \vdots & \vdots & \ddots & \vdots \\ c_{n1} & c_{n2} & \ldots & c_{nq} \\};% les fleches\draw[blue] (A-2-1.north) -- (C-2-2.north);\draw[blue] (A-2-1.south) -- (C-2-2.south);\draw[blue] (B-1-2.west) -- (C-2-2.west);\draw[blue] (B-1-2.east) -- (C-2-2.east);\draw[<->,red](A-2-1) to[in=180,out=90] node[arrow style mul] (x) {$a_{21}\times b_{12}$} (B-1-2);\draw[<->,red](A-2-2) to[in=180,out=90] node[arrow style mul] (y) {$a_{22}\times b_{22}$} (B-2-2);\draw[<->,red](A-2-4) to[in=180,out=90] node[arrow style mul] (z) {$a_{2p}\times b_{p2}$} (B-4-2);\draw[red,->] (x) to node[arrow style plus] {$+$} (y)% to node[arrow style plus] {$+\raisebox{.5ex}{\ldots}+$} (z) to (C-2-2.north west);\node [draw,below=10pt] at (C.south) {$ C=A\times B$ : \textcolor{red}{$n$ rows} \textcolor{red}{$q$ columns}};\end{tikzpicture}\begin{tikzpicture}[>=latex]% unit% defintion of matrices\matrix (A) [matrix of math nodes,% nodes = {node style ge},% left delimiter = (,% right delimiter = )] at (0,0){% a_{11} &\ldots & a_{1k} & \ldots & a_{1p} \\ \vdots & \ddots & \vdots & \vdots & \vdots \\ |[node style sp]| a_{i1} & \ldots% & |[node style sp]| a_{ik}% & \ldots% & |[node style sp]| a_{ip} \\
Comments
This is a very nice depicturement of the matrix multiplication... Simply love it...
The only thing i would change is the three lines: \vdots & \vdots & \vdots & \vdots \ I would change them to: \vdots & \vdots & \ddots & \vdots \
Great!
Thanks Nick for the comment. Alain Matthes sent me an updated version of the example as well as a variant of the same illustration. I have now updated the example with the changes.
Really impressive example and a nice illustration of matrix multiplication. Thanks!
Hi, I wanted to use your adapation of this matrix multiplication to demonstrate the Nearest Neighbour Algorithm, but I am having troubles with drawing the blue lines in my LaTeX document. I was wondering if you could offer any assistance? Many thanks.
This is called the Falk's scheme
Adding comments is currently not enabled.