Nachtrag

Nachtrag

Ich möchte in tikz folgendes Ergebnis erzielen: Bildbeschreibung hier eingeben

Ich kann die Matrizen jedoch nur ohne die mathematischen Operationen zwischen ihnen zeichnen, also das Skalarprodukt und die Gleichheitszeichen (die gleiche Höhe der Klammern ist ein Plus). Unten füge ich einen Teil meines Codes an und zeige, wie weit ich bisher gekommen bin.

Für jede Hilfe wäre ich sehr dankbar

Danke

\documentclass[usenames,dvipsnames]{beamer}
\usepackage{tikz}
    \usetikzlibrary{arrows.meta}
    \usetikzlibrary{decorations.pathreplacing}
    \usetikzlibrary{fit, calc, matrix, positioning, arrows.meta, intersections, through, backgrounds, patterns}
\usepackage{pgfplots}
    \pgfplotsset{compat = newest}
    \pgfplotsset{overwrite option/.style args={#1 with #2}{#1=#2,#1/.code=}}


\begin{frame}{MATRIX MULTIPLICATION}
    More graphically:
    
    \begin{tikzpicture}
    \scriptsize
        \matrix (m)[
        matrix of math nodes,
        nodes in empty cells,
        %minimum width=width("998888"),
        left delimiter=(,
        right delimiter=)
        ] {
        a_{11} && \cdots && a_{1k} && \cdots &&  a_{1n} \\
        \vdots &&        && \vdots &&        &&\vdots  \\
        a_{i1} && \cdots && a_{ik} && \cdots &&  a_{in} \\
        \vdots &&        && \vdots &&        && \vdots  \\
        a_{m1} && \cdots && a_{mk} && \cdots &&  a_{mn} \\
        } ;
        
        \draw (m-3-1.south west) rectangle (m-3-5.north east);
        
    \begin{scope}[xshift=95pt]
        
        \matrix (m)[
        matrix of math nodes,
        nodes in empty cells,
        %minimum width=width("998888"),
        left delimiter=(,
        right delimiter=)
        ] {
        b_{11} && \cdots && b_{1j} && \cdots &&  b_{1p} \\
        \vdots &&        && \vdots &&        &&\vdots  \\
        b_{k1} && \cdots && b_{kj} && \cdots &&  b_{kp} \\
        \vdots &&        && \vdots &&        && \vdots  \\
        b_{n1} && \cdots && b_{nj} && \cdots &&  b_{np} \\
        } ;
        
        \draw (m-5-3.south west) rectangle (m-1-3.north east);
    \end{scope}
    \begin{scope}[xshift=200pt]
        
        \matrix (m)[
        matrix of math nodes,
        nodes in empty cells,
        %minimum width=width("998888"),
        left delimiter=(,
        right delimiter=)
        ] {
        c_{11} && \cdots && c_{1j} && \cdots &&  c_{1p} \\
        \vdots &&        && \vdots &&        &&\vdots  \\
        c_{i1} && \cdots && c_{ij} && \cdots &&  c_{ip} \\
        \vdots &&        && \vdots &&        && \vdots  \\
        c_{m1} && \cdots && c_{mj} && \cdots &&  c_{mp} \\
        } ;
        
        \draw (m-3-3.south west) rectangle (m-3-3.north east);
    \end{scope}    
    \end{tikzpicture}
\end{frame}

Bildbeschreibung hier eingeben

Antwort1

Zunächst würde ich die positioningBibliothek verwenden, um die Matrizen nebeneinander zu platzieren. Dann muss ich nicht mehr das richtige herausfinden xshift. (Sie könnten auch \matrix (m2) at (95pt,0) ...anstelle von tun scope.)

Nachdem Sie die Matrizen m, m2und benannt haben m3, können Sie beispielsweise Folgendes tun:

\path (m) -- node {$\cdot$} (m2)
      (m2) -- node {$=$} (m3);

um die Symbole in der Mitte dazwischen zu platzieren.

Bildbeschreibung hier eingeben

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{positioning, matrix}
\begin{document}
\begin{tikzpicture}
    \scriptsize
        \matrix (m)[
        matrix of math nodes,
        nodes in empty cells,
        %minimum width=width("998888"),
        left delimiter=(,
        right delimiter=)
        ] {
        a_{11} && \cdots && a_{1k} && \cdots &&  a_{1n} \\
        \vdots &&        && \vdots &&        &&\vdots  \\
        a_{i1} && \cdots && a_{ik} && \cdots &&  a_{in} \\
        \vdots &&        && \vdots &&        && \vdots  \\
        a_{m1} && \cdots && a_{mk} && \cdots &&  a_{mn} \\
        } ;
        
        \draw (m-3-1.south west) rectangle (m-3-5.north east);
        

        
        \matrix (m2) [
        matrix of math nodes,
        nodes in empty cells,
        %minimum width=width("998888"),
        left delimiter=(,
        right delimiter=),
        right=of m
        ] {
        b_{11} && \cdots && b_{1j} && \cdots &&  b_{1p} \\
        \vdots &&        && \vdots &&        &&\vdots  \\
        b_{k1} && \cdots && b_{kj} && \cdots &&  b_{kp} \\
        \vdots &&        && \vdots &&        && \vdots  \\
        b_{n1} && \cdots && b_{nj} && \cdots &&  b_{np} \\
        } ;
        
        \draw (m-5-3.south west) rectangle (m-1-3.north east);

        
        \matrix (m3)[
        matrix of math nodes,
        nodes in empty cells,
        %minimum width=width("998888"),
        left delimiter=(,
        right delimiter=),
        right=of m2
        ] {
        c_{11} && \cdots && c_{1j} && \cdots &&  c_{1p} \\
        \vdots &&        && \vdots &&        &&\vdots  \\
        c_{i1} && \cdots && c_{ij} && \cdots &&  c_{ip} \\
        \vdots &&        && \vdots &&        && \vdots  \\
        c_{m1} && \cdots && c_{mj} && \cdots &&  c_{mp} \\
        } ;
        
        \draw (m-3-3.south west) rectangle (m-3-3.north east);

        \path (m) -- node {$\cdot$} (m2)
              (m2) -- node {$=$} (m3);
    \end{tikzpicture}
\end{document}

Nachtrag

Beachten Sie, dass Sie in beamernicht direkt eine Matrix verwenden können. Sie benötigen einen fragileRahmen oder verwenden ampersand replacement, siehe zum BeispielFehler „Einzelnes Et-Zeichen mit falschem Catcode verwendet“ bei Verwendung der Tikz-Matrix in Beamer

Unten habe ich den Rahmen erstellt fragile. Außerdem habe ich einen neuen Stil erstellt pmat, den ich auf alle Matrizen angewendet habe, und ich habe einige Dinge geändert, damit sie tatsächlich in den Rahmen passen.

Bildbeschreibung hier eingeben

\documentclass[usenames,dvipsnames]{beamer}
\usepackage{tikz}
    \usetikzlibrary{arrows.meta}
    \usetikzlibrary{decorations.pathreplacing}
    \usetikzlibrary{fit, calc, matrix, positioning, arrows.meta, intersections, through, backgrounds, patterns}
\usepackage{pgfplots}
    \pgfplotsset{compat = newest}
    \pgfplotsset{overwrite option/.style args={#1 with #2}{#1=#2,#1/.code=}}
\begin{document}

\begin{frame}[fragile]{MATRIX MULTIPLICATION}
    More graphically:
    
 \begin{tikzpicture}[
    pmat/.style={
       matrix of math nodes,
       nodes={font=\footnotesize\strut, inner sep=1.5pt},
       left delimiter=(,
       right delimiter=),
       }
       ]

        \matrix (m)[pmat] {
        a_{11} && \cdots && a_{1k} && \cdots &&  a_{1n} \\
        \vdots &&        && \vdots &&        &&\vdots  \\
        a_{i1} && \cdots && a_{ik} && \cdots &&  a_{in} \\
        \vdots &&        && \vdots &&        && \vdots  \\
        a_{m1} && \cdots && a_{mk} && \cdots &&  a_{mn} \\
        } ;
        
        \draw (m-3-1.south west) rectangle (m-3-5.north east);
        
        
        \matrix (m2) [pmat,right=of m] {
        b_{11} && \cdots && b_{1j} && \cdots &&  b_{1p} \\
        \vdots &&        && \vdots &&        &&\vdots  \\
        b_{k1} && \cdots && b_{kj} && \cdots &&  b_{kp} \\
        \vdots &&        && \vdots &&        && \vdots  \\
        b_{n1} && \cdots && b_{nj} && \cdots &&  b_{np} \\
        } ;
        
        \draw (m-5-3.south west) rectangle (m-1-3.north east);

        
        \matrix (m3)[pmat,right=of m2] {
        c_{11} && \cdots && c_{1j} && \cdots &&  c_{1p} \\
        \vdots &&        && \vdots &&        &&\vdots  \\
        c_{i1} && \cdots && c_{ij} && \cdots &&  c_{ip} \\
        \vdots &&        && \vdots &&        && \vdots  \\
        c_{m1} && \cdots && c_{mj} && \cdots &&  c_{mp} \\
        } ;
        
        \draw (m-3-3.south west) rectangle (m-3-3.north east);

        \path (m) -- node {$\cdot$} (m2)
              (m2) -- node {$=$} (m3);
    \end{tikzpicture}
\end{frame}
\end{document}

Antwort2

Bildbeschreibung hier eingeben

Unter Verwendung der \vphantom{b_{ij}}Anfänge jeder Zeile mit Variablen in der ersten und letzten Matrix:

\documentclass[usenames,dvipsnames]{beamer}
\usepackage{tikz}
\usetikzlibrary{arrows.meta,
                backgrounds, 
                calc, 
                decorations.pathreplacing,
                fit, 
                intersections, 
                matrix, 
                positioning, patterns,
                through
                }

\begin{document}
\begin{frame}[fragile]
\frametitle{MATRIX MULTIPLICATION}

    More graphically:
    
\[
    \begin{tikzpicture}[
every matrix/.style = {matrix of math nodes,
                       nodes in empty cells,
                       nodes = {inner sep=2pt, font=\scriptsize},
                       left delimiter=(,
                       right delimiter=),
                       inner sep=0pt
                       },
                        ]    
\matrix (m1)
    {
\vphantom{b_{ij}}
    a_{11} & \cdots & a_{1k} & \cdots &  a_{1n} \\
    \vdots &        & \vdots &        & \vdots  \\
\vphantom{b_{ij}}
    a_{i1} & \cdots & a_{ik} & \cdots &  a_{in} \\
    \vdots &        & \vdots &        & \vdots  \\
\vphantom{b_{ij}}
    a_{m1} & \cdots & a_{mk} & \cdots &  a_{mn} \\
    } ;
\draw (m1-3-1.south west) rectangle (m1-3-5.north east);
\node (m1a) [right=2mm of m1] {$\cdot$};
\matrix (m2)[right=2mm of m1a] 
    {
    b_{11} & \cdots & b_{1j} & \cdots &  b_{1p} \\
    \vdots &        & \vdots &        & \vdots  \\
    b_{k1} & \cdots & b_{kj} & \cdots &  b_{kp} \\
    \vdots &        & \vdots &        & \vdots  \\
    b_{n1} & \cdots & b_{nj} & \cdots &  b_{np} \\
    } ;
\draw (m2-5-3.south west) rectangle (m2-1-3.north east);
\node (m2a) [right=2mm of m2] {$=$};
\matrix (m3) [right=2mm of m2a] 
    {
\vphantom{b_{ij}}
    c_{11} & \cdots & c_{1j} & \cdots &  c_{1p} \\
    \vdots &        & \vdots &        &\vdots  \\
\vphantom{b_{ij}}
    c_{i1} & \cdots & c_{ij} & \cdots &  c_{ip} \\
    \vdots &        & \vdots &        & \vdots  \\
\vphantom{b_{ij}}
    c_{m1} & \cdots & c_{mj} & \cdots &  c_{mp} \\
    } ;
\draw (m3-3-3.south west) rectangle (m3-3-3.north east);
    \end{tikzpicture}
\]
\end{frame}
\end{document}

Antwort3

{pNiceMatrix}Sie können das mit of tun nicematrix. Diese Umgebung ist ähnlich wie {pmatrix}of amsmath, erstellt aber PGF/Tikz-Knoten unter den Zellen des Arrays. Mit diesen Knoten können Sie die Rechtecke ganz einfach mit Tikz zeichnen.

\documentclass[usenames,dvipsnames]{beamer}
\usepackage{tikz}
\usepackage{nicematrix}

\begin{document}

\begin{frame}[fragile]{MATRIX MULTIPLICATION}
    More graphically:

\NiceMatrixOptions{small,create-large-nodes,columns-width=4mm}

$\begin{pNiceArray}{ccccc<{\vphantom{b_{np}}}}
a_{11} & \cdots & a_{1j} & \cdots &  a_{1p} \\
\vdots &        & \vdots &        &\vdots  \\
a_{i1} & \cdots & a_{ij} & \cdots &  a_{ip} \\
\vdots &        & \vdots &        & \vdots  \\
a_{m1} & \cdots & a_{mj} & \cdots &  a_{mp} 
\CodeAfter
\tikz \draw (3-1-large.south west) rectangle (3-5-large.north east);
\end{pNiceArray}
\cdot
\begin{pNiceArray}{ccccc}
b_{11} & \cdots & b_{1j} & \cdots &  b_{1p} \\
\vdots &        & \vdots &        &\vdots  \\
b_{k1} & \cdots & b_{kj} & \cdots &  b_{kp} \\
\vdots &        & \vdots &        & \vdots  \\
b_{n1} & \cdots & b_{nj} & \cdots &  b_{np} 
\CodeAfter
\tikz \draw (5-3-large.south west) rectangle (1-3-large.north east);
\end{pNiceArray}
=
\begin{pNiceArray}{ccccc<{\vphantom{b_{np}}}}
c_{11} & \cdots & c_{1j} & \cdots &  c_{1p} \\
\vdots &        & \vdots &        &\vdots  \\
c_{i1} & \cdots & c_{ij} & \cdots &  c_{ip} \\
\vdots &        & \vdots &        & \vdots  \\
c_{m1} & \cdots & c_{mj} & \cdots &  c_{mp} 
\CodeAfter
\tikz \draw (3-3-large.south west) rectangle (3-3-large.north east);
\end{pNiceArray}$
\end{frame}

\end{document}

Ausgabe des obigen Codes

verwandte Informationen