我有一个矩阵方程,我想将矩阵的维度对齐到矩阵方程下方。但是,我得到的结果是非常丑陋的。有人能建议如何让它看起来更好或正确对齐吗?
\documentclass[10pt,a4paper]{article}
\usepackage{amsmath, amsfonts}
\begin{document}
\begin{align*}
A
&
\begin{bmatrix}
&&\\
\vec{v}_1 & \cdots & \vec{v}_r \\
&&
\end{bmatrix}
&= &
\begin{bmatrix}
&&\\
\vec{u}_1 & \cdots & \vec{u}_r\\
&&
\end{bmatrix}
&
\begin{bmatrix}
\sigma_1 &&\\
&\ddots&\\
&& \sigma_r
\end{bmatrix}
\\
(m \times n) & (n \times r) & & (m \times r) & (r \times r)
\end{align*}
\end{document}
答案1
一种可能的解决方案是使用tabular
:
\documentclass{article}
\usepackage{amsmath}
\begin{document}
\setlength{\tabcolsep}{0pt}
\begin{tabular}{*{5}{c}}
$A$
& $
\begin{bmatrix}
& & \\
\vec{v}_1 & \cdots & \vec{v}_r \\
& &
\end{bmatrix}$
& $=$
& $
\begin{bmatrix}
& & \\
\vec{v}_1 & \cdots & \vec{v}_r \\
& &
\end{bmatrix}$
& $
\begin{bmatrix}
\sigma_1 & & \\
& \ddots & \\
& & \sigma_r
\end{bmatrix}$\\
& $(m \times n)(n \times r)$
&
& $(m \times r)$
& $(r \times r)$
\end{tabular}
\end{document}
更新
如果要为整行或个别单元格着色,可以执行以下操作(另请参阅表格环境中突出显示):
\documentclass{article}
\usepackage{amsmath}
\usepackage{color,colortbl}
\definecolor{ColorA}{rgb}{0.25,0.5,0.75}
\begin{document}
\setlength{\tabcolsep}{0pt}
\begin{tabular}{*{5}{c}}
\cellcolor{ColorA}\,$A$
& \cellcolor{ColorA}$
\begin{bmatrix}
& & \\
\vec{v}_1 & \cdots & \vec{v}_r \\
& &
\end{bmatrix}$
& \cellcolor{ColorA}$=$
& \cellcolor{ColorA}$
\begin{bmatrix}
& & \\
\vec{v}_1 & \cdots & \vec{v}_r \\
& &
\end{bmatrix}$
& \cellcolor{ColorA}$
\begin{bmatrix}
\sigma_1 & & \\
& \ddots & \\
& & \sigma_r
\end{bmatrix}$\\
& $(m \times n)(n \times r)$
&
& $(m \times r)$
& $(r \times r)$
\end{tabular}
\end{document}
\documentclass{article}
\usepackage{amsmath}
\usepackage{color,colortbl}
\definecolor{ColorA}{rgb}{0,1,1}
\definecolor{ColorB}{rgb}{1,0,1}
\definecolor{ColorC}{rgb}{1,1,0}
\definecolor{ColorD}{rgb}{0.25,0.5,0.75}
\begin{document}
\setlength{\tabcolsep}{0pt}
\begin{tabular}{*{5}{c}}
\cellcolor{ColorA}\,$A$\,
& \cellcolor{ColorB}$
\begin{bmatrix}
& & \\
\vec{v}_1 & \cdots & \vec{v}_r \\
& &
\end{bmatrix}$
& \,$=$\,
& \cellcolor{ColorC}$
\begin{bmatrix}
& & \\
\vec{v}_1 & \cdots & \vec{v}_r \\
& &
\end{bmatrix}$
& \cellcolor{ColorD}$
\begin{bmatrix}
\sigma_1 & & \\
& \ddots & \\
& & \sigma_r
\end{bmatrix}$\\
& $(m \times n)(n \times r)$
&
& \,$(m \times r)$
& $(r \times r)$
\end{tabular}
\end{document}
答案2
您可以使用下标,但在这个特定情况下,这种方法看起来不太好。更好的选择可能是采用更“冗长”的方法。以下示例显示了两种可能性:
\documentclass{article}
\usepackage{amsmath}
\begin{document}
\[
A_{m\times n}
\begin{bmatrix}
&& \\
\vec{v}_1 & \cdots & \vec{v}_r \\
&&
\end{bmatrix}_{n\times r}
=
\begin{bmatrix}
&& \\
\vec{u}_1 & \cdots & \vec{u}_r\\
&&
\end{bmatrix}_{m\times r}
\begin{bmatrix}
\sigma_1 &&\\
&\ddots&\\
&& \sigma_r
\end{bmatrix}_{r\times r}
\]
So we have
\[
AV=U\Sigma,
\]
where $A$ is an $m\times n$ matrix and $V$, $U$ and $\Sigma$ are the $n\times r$, $m\times r$ and $r\times r$, respectively, matrices given by
\[
V=
\begin{bmatrix}
&& \\
\vec{v}_1 & \cdots & \vec{v}_r \\
&&
\end{bmatrix},\quad
U=
\begin{bmatrix}
&& \\
\vec{u}_1 & \cdots & \vec{u}_r\\
&&
\end{bmatrix}\quad\text{and}\quad
\Sigma=
\begin{bmatrix}
\sigma_1 &&\\
&\ddots&\\
&& \sigma_r
\end{bmatrix}.
\]
\end{document}
答案3
尝试\underset
:
\documentclass[10pt,a4paper]{article}
\usepackage{amsmath, amsfonts}
\begin{document}
\begin{align*}
A \underset{\textstyle (m \times n) \, (n \times r)}{\begin{bmatrix}
&&\\
\vec{v}_1 & \cdots & \vec{v}_r \\
&&
\end{bmatrix}}
&=
\underset{\textstyle (m \times r)}{\begin{bmatrix}
&&\\
\vec{u}_1 & \cdots & \vec{u}_r\\
&&
\end{bmatrix}}
\underset{\textstyle (r \times r)}{\begin{bmatrix}
\sigma_1 &&\\
&\ddots&\\
&& \sigma_r
\end{bmatrix}}
\end{align*}
\end{document}
答案4
这是一个解决方案nicematrix
。
\documentclass{article}
\usepackage{nicematrix}
\begin{document}
\setlength{\arraycolsep}{8pt}
\NiceMatrixOptions{nullify-dots, last-row, code-for-last-row = \color{black}}
\[
\color{blue}
A
\begin{bNiceMatrix}
\\
\vec{v}_1 & \Cdots & \vec{v}_r \\
\\
\Block{1-3}{(m \times n)(n \times r)}
\end{bNiceMatrix}
=
\begin{bNiceMatrix}
\\
\vec{v}_1 & \Cdots & \vec{v}_r \\
\\
\Block{1-3}{(m \times r)}
\end{bNiceMatrix}
\begin{bNiceMatrix}
\sigma_1 \\
& \Ddots \\
& & \sigma_r
\\
\Block{1-3}{(r \times r)}
\end{bNiceMatrix}
\]
\end{document}
您需要多次编译(因为nicematrix
在后台使用 PGF/Tikz 节点)。
如果您愿意,您可以使用 Tikz 在矩阵下添加背景(通过使用在nicematrix
矩阵的行、列和单元格下创建的 PGF/Tikz 节点)。
\documentclass{article}
\usepackage{nicematrix,tikz}
\begin{document}
\setlength{\arraycolsep}{8pt}
\NiceMatrixOptions{nullify-dots, last-row}
\[A
\begin{bNiceMatrix}[name=A]
\\
\vec{v}_1 & \Cdots & \vec{v}_r \\
\\
\Block{1-3}{(m \times n)(n \times r)}
\end{bNiceMatrix}
=
\begin{bNiceMatrix}
\\
\vec{v}_1 & \Cdots & \vec{v}_r \\
\\
\Block{1-3}{(m \times r)}
\end{bNiceMatrix}
\begin{bNiceMatrix}[name=B]
\sigma_1 \\
& \Ddots \\
& & \sigma_r
\\
\Block{1-3}{(r \times r)}
\end{bNiceMatrix}
\tikz [overlay, remember picture]
\fill [red!15,blend mode = multiply]
(A-1-|A-1) ++ (-6pt,0pt) rectangle (B-4-|B-4) ;
\]
\end{document}