跨越矩阵的多行/列的对角点

跨越矩阵的多行/列的对角点

例如,我正在填充大型稀疏矩阵

\begin{bmatrix}
0  & -2     & 1      &        & -1     & 2  \\
2  & \ddots & \ddots & \ddots &        & -1 \\
-1 & \ddots & \ddots & \ddots & \ddots &    \\
   & \ddots & \ddots & \ddots & \ddots & 1  \\
1  &        & \ddots & \ddots & \ddots & -2 \\
-2 & 1      &        & -1     & 2      & 0
\end{bmatrix}

在此处输入图片描述

我不喜欢点的间距。我希望它们在对角线上等距分布。我猜这可以使用 TikZ 来实现,但是有没有更简单的方法?

答案1

使用 TikZ 并不困难。我刚刚删除了ddots

\documentclass{article}
\usepackage{amsmath,tikz}
\usetikzlibrary{matrix}
\begin{document}
Following quadratic form involves a skew symmetric matrix. 
\begin{equation}
\begin{pmatrix}
    a\\b\\\vdots\\z
\end{pmatrix}^T
\begin{tikzpicture}[baseline=(current bounding box.center)]
\matrix (m) [matrix of math nodes,nodes in empty cells,right delimiter={]},left delimiter={[} ]{
0  & -2 & 1  &  & -1 & 2  \\
2  & & & & & -1 \\
-1 & & & & &    \\
   & & & & & 1  \\
1  & & & & & -2 \\
-2 &1 & & -1 & 2 & 0\\
} ;
\draw[loosely dotted] (m-1-1)-- (m-6-6);
\draw[loosely dotted] (m-1-2)-- (m-5-6);
\draw[loosely dotted] (m-2-1)-- (m-6-5);
\end{tikzpicture}\begin{pmatrix}
    a\\b\\\vdots\\z
\end{pmatrix}=0
\label{eq:eqq1}
\end{equation}

\end{document}

在此处输入图片描述

它在图片中看起来有点模糊,但如果您愿意,您可以将该选项添加thickdraw命令中。

答案2

使用如下图形包绝对可以实现这样的对角线tikz/pgf或者pstricks。但是,这里有一个使用 TeX 引线的:

在此处输入图片描述

\documentclass{article}

\usepackage{amsmath,graphicx}

\newcommand{\diagdots}[3][-25]{%
  \rotatebox{#1}{\makebox[0pt]{\makebox[#2]{\xleaders\hbox{$\cdot$\hskip#3}\hfill\kern0pt}}}%
}

\begin{document}

\[
  \begin{bmatrix}
     0 & -2 & 1 &    & -1 &  2 \\
     2 &    &   &    &    & -1 \\
    -1 &    &   &    &    &    \\
       &    &  \multicolumn{2}{c}{\smash{\raisebox{.5\normalbaselineskip}{\diagdots{8em}{.5em}}}} &    &  1 \\
     1 &    &   &    &    & -2 \\
    -2 &  1 & \phantom{-2}  & -1 &  2 &  0
  \end{bmatrix}
\]

\end{document}

最小示例提供了以(默认为)的角度\diagdots[<angle>]{<len>}{<skip>}绘制长度为 的对角点阵列(实际上是\cdots )。定义了点之间的近似长度。<len><angle>-25<skip>

我已将其放置\diagdots在您的中间bmatrix(水平方向使用\multicolumn{2}{c}{...},垂直方向使用\raisebox{.5\normalbaselineskip}{...}),并\smash对其进行编辑以消除任何垂直高度失真。\diagdots输出的宽度为零(由于\makebox[0pt])。

您可以尝试不同的长度和角度,看看哪种适合您。

答案3

省略号通常用于表示重复的内容。在本例中,您想要表示条目重复,因此应在省略号的两端0显示。0

因此,假设行数是固定的(正如您的示例所表明的那样),那么我只会\cdots在一列或两列中使用:

在此处输入图片描述

如果行数不固定,那么我会使用以下方法之一。我更喜欢最后一个,因为这样就不会混淆0s 的位置。

在此处输入图片描述

\documentclass{article}
\usepackage{amsmath}

\begin{document}
\[
\begin{bmatrix}
 0 & -2 & 1 & 0      & -1 &  2 \\
 2 &  0 &   & \cdots &  0 & -1 \\
-1 &  0 &   & \cdots &  0 &  0 \\
 0 &  0 &   & \cdots &  0 &  1 \\
 1 &  0 &   & \cdots &  0 & -2 \\
-2 &  1 & 0 & -1     &  2 &  0
\end{bmatrix}
%
\begin{bmatrix}
 0 & -2 &  1     &  0     & -1 &  2 \\
 2 &  0 & \cdots & \cdots &  0 & -1 \\
-1 &  0 & \cdots & \cdots &  0 &  0 \\
 0 &  0 & \cdots & \cdots &  0 &  1 \\
 1 &  0 & \cdots & \cdots &  0 & -2 \\
-2 &  1 &  0     & -1     &  2 &  0
\end{bmatrix}
\]

If the number of rows is not fixed:
\[
\begin{bmatrix}
 0 & -2 & 1 & 0      & -1 &  2 \\
 2 &  0 &   & \cdots &  0 & -1 \\
-1 &  0 &   & \cdots &  0 &  0 \\
 0 &  0 &   & \cdots &  0 &  0 \\
 \vdots &  \vdots &   & \vdots &  \vdots &  \vdots \\
 0 &  0 &   & \cdots &  0 &  0 \\
 0 &  0 &   & \cdots &  0 &  1 \\
 1 &  0 &   & \cdots &  0 & -2 \\
-2 &  1 & 0 & -1     &  2 &  0
\end{bmatrix}
%
\begin{bmatrix}
 0      & -2     &  1     & 0      & -1     &  2 \\
 2      &  0     & \cdots & \cdots &  0     & -1 \\
-1      &  0     & \cdots & \cdots &  0     &  0 \\
 0      &  0     & \cdots & \cdots &  0     &  0 \\
 \vdots & \vdots & \ddots &        &  \vdots &  \vdots \\
 \vdots & \vdots &        & \ddots &  \vdots &  \vdots \\
 0      &  0     & \cdots & \cdots &  0     &  0 \\
 0      &  0     & \cdots & \cdots &  0     &  1 \\
 1      &  0     & \cdots & \cdots &  0     & -2 \\
-2      &  1     &  0     & -1     &  2     &  0
\end{bmatrix}
\]

\end{document}

答案4

xelatex

\documentclass{article}
\usepackage{mathtools}
\usepackage{pst-node}
\begin{document}
Following quadratic form involves a skew symmetric matrix. 
\begin{equation}\label{eq:eqq1}
\begin{pmatrix*}[r]
    a\\b\\c\\\vdots\\z
\end{pmatrix*}^T
\begin{bmatrix*}[r]
\rnode[rb]{C}{0}  & \rnode[rb]{B}{-2} & \rnode[rb]{A}{1}  &  & -1 & 2  \\
\rnode[rb]{D}{2}  & & & & & -1 \\
\rnode[rb]{E}{-1} & & & & &    \\
                  & & & & & \rnode[l]{a}{1}  \\
               1  & & & & & -\rnode[l]{b}{2} \\
              -2  &1& & -\rnode[l]{e}{1} & \rnode[rb]{d}{2} & \rnode[l]{c}{0}\\
\end{bmatrix*}
\begin{pmatrix*}[r]
    a\\b\\c\\\vdots\\z
\end{pmatrix*}=0
\psset{linestyle=dotted,nodesep=2mm}
\ncline{A}{a}\ncline{B}{b}\ncline{C}{c}\ncline{D}{d}\ncline{E}{e}
\end{equation}

\end{document}

在此处输入图片描述

相关内容