在上一个主题中 (为什么水平矩阵看起来与多层矩阵不同?),有人问为什么向量所占的水平空间与矩阵所占的水平空间不同。设计的一个解决方案是使用bvector
环境。问题中的矩阵用于物理系统动力学的状态空间表示。因此,它们引起了我的兴趣。
当我试图以清晰的方式说明或解释概念时,我通常使用带有规则的矩阵来划分矩阵,如下所示
如上所示,向量所占的空间比矩阵所占的空间略大。此外,矩阵内部所占的空间(即括号[
和之间]
)也略大。这会导致方程在视觉上分散注意力。因此,如果我使用array
绘制矩阵,我该如何强制这两个矩阵
- 占用相同的总空间
- 保持括号之间的间距相同
此外,最后一个方程中的向量x
不会与上面的向量对齐,除非我添加虚像内容(如空框中所示)。我可以在不插入虚像内容的情况下让两个向量对齐吗?
\documentclass[10pt,norsk, fleqn]{article}
\usepackage[x11names]{xcolor}
\usepackage[a4paper, margin=1.2cm,includeheadfoot]{geometry}
\usepackage{amsmath}
\usepackage{calc}
\usepackage{eqparbox}
\usepackage{nccmath}
\usepackage{adjustbox}
\begin{document}
\newcommand{\ssarray}{
\begin{array}{cc !{\vrule width 0.1mm}c}
2 &1 &1
\\
3 &-2 &-2
\\
\hline
1 &1 &2
\end{array}
}
\begin{adjustbox}{minipage={0.2\textwidth}}
\begin{fleqn}
$\begin{aligned}
\dot{\vec{x}}(t) &= \textbf{A}\vec{x}(t) + \textbf{B}\vec{u}(t)\\
\vec{y}(t) &= \textbf{C}\vec{x}(t) + \textbf{D}\vec{u}(t)
\end{aligned} \medspace \to \medspace$
\end{fleqn}
\end{adjustbox}
\begin{adjustbox}{minipage={0.6\textwidth}}
\begin{fleqn}
\begin{alignat*}{2}
\dot{\textbf{x}} = &\adjustbox{cframe=green 0.1mm}{$\left[\ssarray\right]$} &\vec{x} + \left[
\begin{array}{c}
2
\\
1
\\
\hline
2
\end{array}
\right] \vec{u}
\\
\vec{y} = &\adjustbox{cframe=green 0.1mm}{
$\left[
\begin{array}{cc !{\vrule width 0.1mm}c}
2 &-2 &-2
\end{array}
\right]$
}
&\vec{x} \adjustbox{phantom, cframe=green 0.1mm}{$\medspace +
\left[
\begin{array}{c}
2
\\
1
\\
\hline
2
\end{array}
\right]
\vec{u}$}
\end{alignat*}
\end{fleqn}
\end{adjustbox}
\end{document}
答案1
这是一个使用 的解决方案\mathmakebox
。
不确定为什么你想要第二个方程中的所有垂直空间。
\documentclass[10pt,norsk, fleqn]{article}
\usepackage[x11names]{xcolor}
\usepackage[a4paper, margin=1.2cm,includeheadfoot]{geometry}
\usepackage{mathtools}
\begin{document}
\sbox0{$% measure inside width
\begin{array}{cc|c}
2 &1 &1
\\
3 &-2 &-2
\\
\hline
1 &1 &2
\end{array}$}%
\sbox1{$\left[\usebox0\right]$}% measure outside width
\sbox2{$\left[\begin{array}{c}
2\\1\\ \hline 2
\end{array}\right]$}% measure height
$\begin{aligned}
\vec{x}\ '(t) &= \textbf{A}\vec{x}(t) + \textbf{B}\vec{u}(t)\\
\vec{y}(t) &= \textbf{C}\vec{x}(t) + \textbf{D}\vec{u}(t)
\end{aligned}\ \ \ \to\ \ \
\begin{aligned}
\dot{\textbf{x}} & = \usebox1 \vec{x} + \usebox2 \vec{u}\\
\vec{y} & = \mathmakebox[\wd1][c]{\left[
\mathmakebox[\wd0][c]{\begin{array}{cc|c}0&-1&-1\end{array}}
\right]} \vec{x} \raisebox{0pt}[\ht2][\dp2]{}% or \vphantom{usebox2}
\end{aligned}$
\end{document}