在矩阵向量乘法中将向量元素与矩阵的行对齐(垂直对齐)

在矩阵向量乘法中将向量元素与矩阵的行对齐(垂直对齐)

当矩阵复杂而向量简单时,输出看起来不太好:

代码:

\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^2x_iy_i和周围不必要的括号来减少视觉混乱x_iy_i;此方法的结果显示在下面的第三个解决方案中。请注意,列向量的高度自动等于矩阵的高度 - 无需额外摆弄!

顺便说一句,如果你的读者还没有完全意识到这个事实,总结从i=1i=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}

相关内容