我想写一个矩阵方程,我当前的代码如下:
\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.8
equation
\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
环境变成\parenMatrixstack
s 和\parenVectorstack
s。矩阵中的列间间隙由 控制\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}