矩阵各部分的维度

矩阵各部分的维度

我有一个包含值 0 和 1 的矩阵。第一列包含 n_1 个 1 值,其余为 0。第二列以 n_1 个 0 值、n_2 个 1 值开始,其余为 0。我想在矩阵外部制作 {,写入 n_1、n_2 等,但我希望括号 { 扩展到多行。我该怎么做?

\documentclass[11pt]{memoir}
\usepackage{amsmath}
\begin{document}

\begin{align}
\begin{pmatrix} 
1           &           0       &       0       &   \cdots      & 0     &     0     \\    
\vdots      &       \vdots      &       \vdots  &               & \vdots & \vdots \\        
 1          &           0       &       0       & \cdots    &0  & 0     \\
0           &           1       &       0       &   \cdots      &0& 0   \\
\vdots      &       \vdots      &       \vdots  &           &\vdots& \vdots \\
0           &           1       &       0       &   \cdots      &0& 0   \\
\vdots & \vdots & \vdots & & \vdots &\vdots \\
0           &           0       &       0       &   \cdots      &0& 1   \\
\vdots      &       \vdots      &       \vdots  &           &\vdots& \vdots \\
0           &           0       &       0       &   \cdots      &0& 1   \\
\end{pmatrix}
\end{align}
\end{document}

在此处输入图片描述

在此处输入图片描述

答案1

一个比较 hack 的解决方案:在子矩阵的底行(或者矩阵的第三、第六和最后一行),\vadjust将东西放在该行之后。

然后使用三行不可见矩阵绘制括号,以获得括号的正确高度 ( \vphantom)。将其放入\vbox to 0pt以避免增加插入过孔之间的行跳动\vadjust。此外,括号向左移动 ( \llap{...\kern.5em})。

\documentclass[11pt]{memoir}
\usepackage{amsmath}

\begin{document}
\begin{align}
  \newcommand*{\AddLeft}[1]{%
    \vadjust{%
      \vbox to 0pt{%
        \vss
        \llap{$%
          n_{#1}\left\{
            \vphantom{
              \begin{matrix}1\\\vdots\\0\end{matrix}
            }
          \right.\kern-\nulldelimiterspace
          \kern0.5em
        $}%
        \kern0pt
      }%
    }%  
  }
  \begin{pmatrix}
    1      & 0      & 0      & \cdots & 0      & 0      \\
    \vdots & \vdots & \vdots &        & \vdots & \vdots \\
    \AddLeft{1}
    1      & 0      & 0      & \cdots & 0      & 0      \\
    0      & 1      & 0      & \cdots & 0      & 0      \\
    \vdots & \vdots & \vdots &        & \vdots & \vdots \\
    \AddLeft{2}
    0      & 1      & 0      & \cdots & 0      & 0      \\
    \vdots & \vdots & \vdots &        & \vdots & \vdots \\
    0      & 0      & 0      & \cdots & 0      & 1      \\
    \vdots & \vdots & \vdots &        & \vdots & \vdots \\
    \AddLeft{p}
    0      & 0      & 0      & \cdots & 0      & 1      \\
  \end{pmatrix}
\end{align}
\end{document}

结果

答案2

这是一个使用以下方法解决的解决方案tikz

\documentclass[11pt]{memoir}
\usepackage{amsmath}

\usepackage{tikz}
\usetikzlibrary{calc,decorations.pathreplacing}
\newcommand\REM[2]{\tikz[remember picture,inner sep=0pt] \node (#1) {#2};}


\begin{document}

\begin{align}
\begin{pmatrix} 
\REM{A}{1}           &           0       &       0       &   \cdots      & 0     &     0     \\    
\vdots      &       \vdots      &       \vdots  &               & \vdots & \vdots \\        
 \REM{B}{1}          &           0       &       0       & \cdots    &0  & 0     \\
\REM{C}{0}           &           1       &       0       &   \cdots      &0& 0   \\
\vdots      &       \vdots      &       \vdots  &           &\vdots& \vdots \\
\REM{D}{0}          &           1       &       0       &   \cdots      &0& 0   \\
\vdots & \vdots & \vdots & & \vdots &\vdots \\
\REM{E}{0}           &           0       &       0       &   \cdots      &0& 1   \\
\vdots      &       \vdots      &       \vdots  &           &\vdots& \vdots \\
\REM{F}{0}           &           0       &       0       &   \cdots      &0& 1   \\
\end{pmatrix}
\begin{tikzpicture}[remember picture,overlay]
  \draw[decorate,decoration={brace,mirror}] 
  ($(A)+(-1,0)$) -- ($(B)+(-1,0)$)
  node[midway,left=2pt] {$n_1$} ;
  \draw[decorate,decoration={brace,mirror}] 
  ($(C)+(-1,0)$) -- ($(D)+(-1,0)$)
  node[midway,left=2pt] {$n_2$} ;
  \draw[decorate,decoration={brace,mirror}] 
  ($(E)+(-1,0)$) -- ($(F)+(-1,0)$)
  node[midway,left=2pt] {$n_p$} ;
\end{tikzpicture}
\end{align}
\end{document}

在此处输入图片描述

答案3

不要使用令人困惑的省略号,例如,省略号之后,块1的最后一个n_2部分将变为零。实际上,如果可以,请始终避免使用省略号。您的矩阵具有非常独特的结构,并且对读者来说显而易见。当他们知道规则时,他们可以构造矩阵。但他们无法轻松地从构造中读取规则。

以下是一个选项:

\documentclass{article}
\usepackage{,amsfonts,mathtools,bm}
\DeclarePairedDelimiter{\diagfences}{(}{)}
\newcommand{\diag}{\operatorname{diag}\diagfences}

\begin{document}
Let $\bm{1}_{n_i}$ be the vector with all entries are equal to $1$. Then $M$ is defined as
\[
M = \diag{\bm{1}_{n_1},\bm{1}_{n_2},\cdots,\bm{1}_{n_p}}.
\]
\end{document}

在此处输入图片描述

答案4

对于一次性显示,这里有一个技巧,利用括号应该和三行矩阵一样高的事实。

\documentclass[11pt]{memoir}
\usepackage{amsmath}

\newcommand{\nrow}[1]{%
  \relax
  \vcenter to 0pt{%
    \vss
    \kern-1.5ex
    \llap{$#1\left\{\vphantom{\begin{matrix}0\\\vdots\\0\end{matrix}}\right.\kern.75em$}%
    \vss
  }%
}

\begin{document}
\begin{center}
XXXXXXXXXXXXXXX
\end{center}
\begin{equation}
\hphantom{n_p\kern.75em}
\begin{pmatrix}
  1      & 0      & 0      & \cdots & 0      & 0      \\
  \nrow{n_1}\vdots & \vdots & \vdots &        & \vdots & \vdots \\
  1      & 0      & 0      & \cdots & 0      & 0      \\
  0      & 1      & 0      & \cdots & 0      & 0      \\
  \nrow{n_2}\vdots & \vdots & \vdots &        & \vdots & \vdots \\
  0      & 1      & 0      & \cdots & 0      & 0      \\
  \vdots & \vdots & \vdots &        & \vdots & \vdots \\
  0      & 0      & 0      & \cdots & 0      & 1      \\
  \nrow{n_p}\vdots & \vdots & \vdots &        & \vdots & \vdots \\
  0      & 0      & 0      & \cdots & 0      & 1      \\
  \end{pmatrix}
\end{equation}
\end{document}

X 的字符串只是为了显示良好的居中。

在此处输入图片描述

相关内容