高度相同的矩阵

高度相同的矩阵

我想写一个矩阵方程,我当前的代码如下:

\documentclass[12pt,a4paper]{report}
\usepackage{amsmath}

\begin{document}
\begin{equation}
    \begin{pmatrix}
      1         & 0         & 0         & \cdots    & \cdots    & 0 \\
      \mu       & \lambda   & \nu       & \ddots    &           & \vdots \\
      0         & \mu       & \lambda   & \nu       & \ddots    & \vdots \\
      \vdots    & \ddots    & \ddots    & \ddots    & \ddots    & 0      \\
      \vdots    &           & 0         & \mu       & \lambda   & \nu    \\
      0         & \cdots    & \cdots    & 0         & -1/h      & 1/h    \\
    \end{pmatrix}
    \cdot
    \begin{pmatrix}
      T^{(j+1)}(0) \\
      T^{(j+1)}(h) \\
      \vdots     \\
      \vdots     \\
      \vdots     \\
      T^{(j+1)}(N\cdot h)
    \end{pmatrix}
    =
    \begin{pmatrix}
      T(0) \\
      f(h) \\
      f(2h)  \\
      \vdots     \\
      f((N-1)\cdot h)    \\
      blabla
    \end{pmatrix}
\end{equation}

\end{document}

但是,得到的矩阵高度略有不同。我该如何将它们设置为相同?结果如附图所示:在此处输入图片描述

答案1

我认为最简单的解决方案,即需要最少额外输入的解决方案,涉及增加 的值\arraystretch。其默认值为;在环境开始时1.0将其增加到 左右应该可以完成工作。1.8equation

在此处输入图片描述

\documentclass{article}
\usepackage{amsmath}
\begin{document}
\begin{equation}\label{eq:xyz}
\renewcommand\arraystretch{1.8}  % default value: 1.0
    \begin{pmatrix}
      1         & 0         & 0         & \cdots    & \cdots    & 0 \\
      \mu       & \lambda   & \nu       & \ddots    &           & \vdots \\
      0         & \mu       & \lambda   & \nu       & \ddots    & \vdots \\
      \vdots    & \ddots    & \ddots    & \ddots    & \ddots    & 0      \\
      \vdots    &           & 0         & \mu       & \lambda   & \nu    \\
      0         & \cdots    & \cdots    & 0         & -1/h      & 1/h    \\
    \end{pmatrix}
    \cdot
    \begin{pmatrix}
      T^{(j+1)}(0) \\
      T^{(j+1)}(h) \\
      \vdots     \\
      \vdots     \\
      \vdots     \\
      T^{(j+1)}(N h)
    \end{pmatrix}
    =
    \begin{pmatrix}
      T(0) \\
      f(h) \\
      f(2h)  \\
      \vdots     \\
      f((N-1) h)    \\
      \text{blabla}
    \end{pmatrix}
\end{equation}  
\end{document}

答案2

出于一致性的原因,我认为增加不是\arraystretch一个好主意。但是,如果我们正确理解这种行为的原因,我们可能会找到一个简单而精确的解决方案。这里导致此问题的主要原因是在三个矩阵中写入不同高度的符号,即\vdots\ddots符号高于其余符号。

为了解决这个问题,应该故意引入冗余的\vdots(或\ddots),以便三个矩阵可以具有相同数量的 。第二个矩阵只需要一个,因为它只有三个,\vdots而第一个矩阵有四个。同样,第三个矩阵需要三个,\vdots因为它只有一个\vdots

\documentclass[12pt,a4paper]{report}
\usepackage{amsmath}
\begin{document}

\newcommand{\D}{\vphantom{\vdots}}  

\begin{equation}
    \begin{pmatrix}
      1         & 0         & 0         & \cdots    & \cdots    & 0 \\
      \mu       & \lambda   & \nu       & \ddots    &           & \vdots \\
      0         & \mu       & \lambda   & \nu       & \ddots    & \vdots \\
      \vdots    & \ddots    & \ddots    & \ddots    & \ddots    & 0      \\
      \vdots    &           & 0         & \mu       & \lambda   & \nu    \\
      0         & \cdots    & \cdots    & 0         & -1/h      & 1/h    \\
    \end{pmatrix}
    \cdot
    \begin{pmatrix}
      T^{(j+1)}(0)   \\
      T^{(j+1)}(h)\D \\
      \vdots         \\
      \vdots         \\
      \vdots         \\
      T^{(j+1)}(N\cdot h)
    \end{pmatrix}
    =
    \begin{pmatrix}
      T(0) \D         \\
      f(h) \D         \\
      f(2h)\D         \\
      \vdots          \\
      f((N-1)\cdot h) \\
      blabla
    \end{pmatrix}
\end{equation}

\end{document}

在此处输入图片描述

编辑: (回应 OP 的评论)

如果你不喜欢\D在每一行都输入该命令,可以尝试这个自动的选择:

\documentclass[12pt,a4paper]{report}
\usepackage{amsmath, array}
\newcolumntype{V}{>{\vphantom{\vdots}\arraybackslash}c}
\begin{document}

\begin{equation}\left (
    \begin{array}{@{}*5{c}V@{}}
      1         & 0         & 0         & \cdots    & \cdots    & 0 \\
      \mu       & \lambda   & \nu       & \ddots    &           & \vdots \\
      0         & \mu       & \lambda   & \nu       & \ddots    & \vdots \\
      \vdots    & \ddots    & \ddots    & \ddots    & \ddots    & 0      \\
      \vdots    &           & 0         & \mu       & \lambda   & \nu    \\
      0         & \cdots    & \cdots    & 0         & -1/h      & 1/h    \\
    \end{array}\right )
    \cdot \left (
    \begin{array}{@{}V@{}}
      T^{(j+1)}(0) \\
      T^{(j+1)}(h) \\
      \vdots     \\
      \vdots     \\
      \vdots     \\
      T^{(j+1)}(N h)
    \end{array}\right )
    =\left (
    \begin{array}{@{}V@{}}
      T(0) \\
      f(h) \\
      f(2h)  \\
      \vdots     \\
      f((N-1) h)    \\
      blabla
    \end{array}\right )
\end{equation}

\end{document}

由此得出下面的第一个方程。

在此处输入图片描述

现在比较公式 1(针对我上面的代码)和公式 2(使用该\arraystretch方法)。你认为哪一个更好?看看它们是如何不一致的。想象一下,你有两个连续的段落,一个是单倍行距,另一个几乎是双倍行距(标题等除外)。当然它们看起来很糟糕。

此外,改变\arraystretch需要反复试验。我们如何才能提前知道这1.8将是正确的值?1.5例如,为什么不呢?

答案3

在这里,我只是将所有pmatrix环境变成\parenMatrixstacks 和\parenVectorstacks。矩阵中的列间间隙由 控制\setstacktabbedgap{},行间基线跳跃由 控制\setstackgap{L}{}。这个答案需要我的tabstackengine包。

\documentclass[12pt,a4paper]{report}
\usepackage{amsmath,tabstackengine}
\setstacktabbedgap{1ex}
\setstackgap{L}{1.2\baselineskip}
\begin{document}
\begin{equation}
    \parenMatrixstack{
      1         & 0         & 0         & \cdots    & \cdots    & 0 \\
      \mu       & \lambda   & \nu       & \ddots    &           & \vdots \\
      0         & \mu       & \lambda   & \nu       & \ddots    & \vdots \\
      \vdots    & \ddots    & \ddots    & \ddots    & \ddots    & 0      \\
      \vdots    &           & 0         & \mu       & \lambda   & \nu    \\
      0         & \cdots    & \cdots    & 0         & -1/h      & 1/h    
    }
    \cdot
    \parenVectorstack{
      T^{(j+1)}(0) \\
      T^{(j+1)}(h) \\
      \vdots     \\
      \vdots     \\
      \vdots     \\
      T^{(j+1)}(N\cdot h)
    }
    =
    \parenVectorstack{
      T(0) \\
      f(h) \\
      f(2h)  \\
      \vdots     \\
      f((N-1)\cdot h)    \\
      blabla
    }
\end{equation}

\end{document}

在此处输入图片描述

相关内容