矩阵下的 tikzpictures

矩阵下的 tikzpictures

我正在尝试构建一个如何通过萨鲁斯规则计算 3x3 矩阵行列式的图表,经过大量研究后我已经取得了很大进展,但我仍然希望让箭头出现在数字下方,并且弯曲的箭头中间有一个带圆圈的减号,不幸的是我还没有找到这样做的方法,所以如果有人能给我指明正确的方向,我将不胜感激。

这是我正在使用的代码,结果如下。

%preamble
\documentclass{article}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{bm}
\usepackage{circuitikz}
\usepackage{tikz}
\newcommand\tikznode[1]{\tikz[overlay,remember picture] \node (#1) {};}
\tikzset{>=latex}
------------
%document
\begin{equation*}
    \left|\begin{matrix}
    \tikznode{11}2& \tikznode{12}7 & \tikznode{13}6\\ 
    \tikznode{21}9& \tikznode{22}5 & \tikznode{23}1\\ 
    \tikznode{31}4& \tikznode{32}3 & \tikznode{33}8
    \end{matrix}
    \middle|\;\begin{matrix}
    \tikznode{14}2& \tikznode{15}7\\ 
    \tikznode{24}9& \tikznode{25}5\\ 
    \tikznode{34}4& \tikznode{35}3
    \end{matrix}\right| \qquad
    \begin{matrix}
    4*5*6+3*1*2+8*9*7 = 630\tikznode{top}\\
     \\
     \\
     \\
    2*5*8+7*1*4+6*9*3 = 270\tikznode{btn}
    \end{matrix}\qquad \qquad
    270-630 = -360
    \begin{tikzpicture}[overlay, remember picture]
        \foreach \i in {1,2,3}
            \def\e{\the\numexpr\i+2}
            \draw[->,red,line width=1pt] ($(1\i.north east)+(-0.5,0.5)$) -- ($(3\e.south west)+(0.6,-0.2)$);
        \foreach \i in {3,4,5}
            \def\e{\the\numexpr\i-2}
            \draw[<-,blue,line width=1pt] ($(1\i.north west)+(0.7,0.5)$) -- ($(3\e.south east)+(-0.4,-0.2)$);
        \path[->,line width=1pt] ($(btn)+(0.25,0)$) edge[bend right=60] ($(top)+(0.25,0)$);
    \end{tikzpicture}
\end{equation*}

3x3 矩阵行列式

并且期望的结果类似于以下内容(顶部和底部没有 + 和 - 符号):

一般 3x3 行列式

答案1

道路pstricks

\documentclass{article}
\usepackage{pst-node}%

\begin{document}

\[ \renewcommand{\arraystretch}{1.25}
\begin{array}{|ccc|cc|}
\Rnode{a1}{2} &\Rnode{b1}{7} & \Rnode{c1}{6} & \Rnode{A1}{2} & \Rnode{B1}{7} \\
\Rnode{a2}{9} & \Rnode{b2}{5} & \Rnode{c2}{1} & \Rnode{A2}{9}& 5\\
\Rnode{a3}{4} & \Rnode{b3}{3} & \Rnode{c3}{8} & \Rnode{A3}{4} & \Rnode{B3}{3}
\end{array}
\psset{linecolor=red, nodesepA=0.5pt, nodesepB = 0.5pt, arrowinset=0.1}
\foreach \s/\t/\u in {a1/b2/c3,b1/c2/A3,c1/A2/B3} {\ncline{-}{\s}{\t}\ncline{->}{\t}{\u}}
 \psset{linecolor=blue}
\foreach \s/\t/\u in {a3/b2/c1,b3/c2/A1,c3/A2/B1} {\ncline{-}{\s}{\t}\ncline{->}{\t}{\u}}
\]

\end{document} 

在此处输入图片描述

答案2

这是一个{NiceArray}使用 的解决方案nicematrix

\documentclass{article}
\usepackage{nicematrix}
\usepackage{tikz}

\begin{document}

\NiceMatrixOptions
  { pgf-node-code = \pgfsetfillcolor{white} \pgfusepathqfill }

\pgfset{nicematrix/cell-node/.append style = { inner sep = 1pt } }


$\begin{NiceArray}{|ccc|>{\color{gray}}c>{\color{gray}}c}
\CodeBefore [create-cell-nodes]
    \begin{tikzpicture} [shorten < = 2pt,shorten > = 2pt]
    \draw [red,->] (1-1) -- (3-3) ;
    \draw [red,->] (1-2) -- (3-4) ;
    \draw [red,->] (1-3) -- (3-5) ;
    \draw [blue,->] (3-1) -- (1-3) ;
    \draw [blue,->] (3-2) -- (1-4) ;
    \draw [blue,->] (3-3) -- (1-5) ;
    \end{tikzpicture}
\Body
    a_{11} & a_{12} & a_{13} & a_{11} & a_{12} \\[2mm]
    a_{21} & a_{22} & a_{23} & a_{21} & a_{22} \\[2mm]
    a_{31} & a_{32} & a_{33} & a_{31} & a_{32} \\
\end{NiceArray}$

\end{document}

您需要多次编译(因为 PGF/Tikz 节点)。

上述代码的输出

答案3

在此处输入图片描述

红色和蓝色箭头本质上是矩阵中每个数字周围的基点的发挥——指南针的每个基点都是箭头起点或终点的锚点——这个想法是将每个箭头尖端偏移一点点,这样箭头就不会与矩阵中的数字相撞——例如———— 表示从数字的右上角(矩阵的第一行和第一列)\draw[->,red, line width=1pt] ($(1\i.north east)+(0.1,-0.1)$) -- ($(3\e.north)+(0,0)$);开始箭头——偏移箭头的起点,以及——箭头的终点在——即数字(矩阵的第三行和第三列),并将箭头尖端偏移11.north east20.1 cm in x direction0.1cm down in y direction33.north8(0,0)

\documentclass{article}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{bm}
\usepackage{circuitikz}
\usepackage{tikz}
\newcommand\tikznode[1]{\tikz[overlay,remember picture] \node (#1) {};}
\tikzset{>=latex}
%------------
%document
\begin{document}
    

\begin{equation*}
    \left|\begin{matrix}
        \tikznode{11}2& \tikznode{12}7 & \tikznode{13}6\\ 
        \tikznode{21}9& \tikznode{22}5 & \tikznode{23}1\\ 
        \tikznode{31}4& \tikznode{32}3 & \tikznode{33}8
    \end{matrix}
    \middle|\;\begin{matrix}
        \tikznode{14}2& \tikznode{15}7\\ 
        \tikznode{24}9& \tikznode{25}5\\ 
        \tikznode{34}4& \tikznode{35}3
    \end{matrix}\right| \qquad
    \begin{matrix}
        4*5*6+3*1*2+8*9*7 = 630\tikznode{top}\\
        \\
        \\
        \\
        2*5*8+7*1*4+6*9*3 = 270\tikznode{btn}
    \end{matrix}\qquad \qquad
    270-630 = -360
    \begin{tikzpicture}[overlay, remember picture]
        \foreach \i in {1,2,3}
        \def\e{\the\numexpr\i+2}
        \draw[->,red,line width=1pt] ($(1\i.north east)+(0.1,-0.1)$) -- ($(3\e.north)+(0,0)$);
        \foreach \i in {3,4,5}
        \def\e{\the\numexpr\i-2}
        \draw[<-,blue,line width=1pt] ($(1\i.south)+(0,0.1)$) -- ($(3\e.north east)+(0.1,0.1)$);
        \path[->,line width=1pt] ($(btn)+(0.25,0)$) edge[bend right=60]node[fill=white, circle,draw](){-} ($(top)+(0.25,0)$);
    \end{tikzpicture}
\end{equation*}
\end{document}

相关内容