![在矩阵向量乘法中将向量元素与矩阵的行对齐(垂直对齐)](https://linux22.com/image/478536/%E5%9C%A8%E7%9F%A9%E9%98%B5%E5%90%91%E9%87%8F%E4%B9%98%E6%B3%95%E4%B8%AD%E5%B0%86%E5%90%91%E9%87%8F%E5%85%83%E7%B4%A0%E4%B8%8E%E7%9F%A9%E9%98%B5%E7%9A%84%E8%A1%8C%E5%AF%B9%E9%BD%90%EF%BC%88%E5%9E%82%E7%9B%B4%E5%AF%B9%E9%BD%90%EF%BC%89.png)
当矩阵复杂而向量简单时,输出看起来不太好:
代码:
\begin{bmatrix}
\displaystyle\sum_{i=1}^M{(x_i)^2} & \displaystyle\sum_{i=1}^M{(x_i)} \\
\displaystyle\sum_{i=1}^M{(x_i)} & M
\end{bmatrix}
\begin{bmatrix}
m \\ c
\end{bmatrix} = \begin{bmatrix}
\displaystyle\sum_{i=1}^M{(x_i y_i)} \\
\displaystyle\sum_{i=1}^M{(y_i)}
\end{bmatrix}
输出:
在期望的输出中,向量的括号应该与矩阵的大小相同,并且向量的元素应该与矩阵的行对齐,如下所示:
所需输出(这是通过编辑上面的图像产生的):
我应该怎么做才能获得期望的输出无需复杂的布局命令? 可以在 TeX 模式 ( $$
)中工作的解决方案堆栈编辑是优选的。
谢谢!
答案1
我认为你的方程的核心问题不在于列向量在矩阵旁边看起来很小,而在于你使用\displaystyle
(并且隐含地)\limits
里面矩阵。就我个人而言,创建超高的列向量(如屏幕截图所示以及下面显示的第一个解决方案中所做的那样)根本没有什么好处。事实上,这简直是荒谬的。
将求和从隐式转换\limits
为显式\nolimits
(参见下面的第二个解决方案)可以带来适度的视觉改善。但是,在我看来,列向量仍然看起来太高了。
您真正应该考虑的是 (a)\displaystyle
根本不使用,(b) 简化求和极限中的项(仅显示求和的索引),以及 (c) 通过省略项x_i^2
、x_i
、y_i
和周围不必要的括号来减少视觉混乱x_iy_i
;此方法的结果显示在下面的第三个解决方案中。请注意,列向量的高度自动等于矩阵的高度 - 无需额外摆弄!
顺便说一句,如果你的读者还没有完全意识到这个事实,总结从i=1
到i=M
,你只需必须告知他们此事 前他们开始看到大量的总结表达。
\documentclass{article}
\usepackage{amsmath} % for 'bmatrix' and 'gather*' environments
\usepackage{booktabs} % for '\addlinespace' macro
%% Define two typographic struts:
\newcommand\tallstrut{\vphantom{\displaystyle\sum\nolimits_{i=1}^M}}
\newcommand\reallytallstrut{\vphantom{\displaystyle\sum_{i=1}^M}}
\begin{document}
\begin{gather*}
%% First solution: use \displaystyle and \limits (as in the OP's query)
\begin{bmatrix}
\displaystyle\sum_{i=1}^M{(x_i)^2} & \displaystyle\sum_{i=1}^M{(x_i)} \\ \addlinespace
\displaystyle\sum_{i=1}^M{(x_i)} & M
\end{bmatrix}
\begin{bmatrix}
m\reallytallstrut \\ \addlinespace c\reallytallstrut
\end{bmatrix}
=
\begin{bmatrix}
\displaystyle\sum_{i=1}^M{(x_i y_i)} \\ \addlinespace
\displaystyle\sum_{i=1}^M{(y_i)}
\end{bmatrix}\\[2ex]
%% Second solution: use \displaystyle and \nolimits
\begin{bmatrix}
\displaystyle\sum\nolimits_{i=1}^M{(x_i)^2} & \displaystyle\sum\nolimits_{i=1}^M{(x_i)} \\ \addlinespace
\displaystyle\sum\nolimits_{i=1}^M{(x_i)} & M
\end{bmatrix}
\begin{bmatrix}
m\tallstrut \\ \addlinespace c\tallstrut
\end{bmatrix}
=
\begin{bmatrix}
\displaystyle\sum\nolimits_{i=1}^M{(x_i y_i)} \\ \addlinespace
\displaystyle\sum\nolimits_{i=1}^M{(y_i)}
\end{bmatrix}\\[2ex]
%% Third solution: use \textstyle (and \nolimits)
\begin{bmatrix}
\sum_i x_i^2 & \sum_i x_i \\ \addlinespace
\sum_i x_i & M
\end{bmatrix}
\begin{bmatrix}
m \\ \addlinespace c
\end{bmatrix}
=
\begin{bmatrix}
\sum_i x_i y_i \\ \addlinespace
\sum_i y_i
\end{bmatrix}
\end{gather*}
\end{document}