如何强制两个数组占据相同的水平空间?

如何强制两个数组占据相同的水平空间?

在上一个主题中 (为什么水平矩阵看起来与多层矩阵不同?),有人问为什么向量所占的水平空间与矩阵所占的水平空间不同。设计的一个解决方案是使用bvector环境。问题中的矩阵用于物理系统动力学的状态空间表示。因此,它们引起了我的兴趣。

当我试图以清晰的方式说明或解释概念时,我通常使用带有规则的矩阵来划分矩阵,如下所示

在此处输入图片描述

如上所示,向量所占的空间比矩阵所占的空间略大。此外,矩阵内部所占的空间(即括号[和之间])也略大。这会导致方程在视觉上分散注意力。因此,如果我使用array绘制矩阵,我该如何强制这两个矩阵

  1. 占用相同的总空间
  2. 保持括号之间的间距相同

此外,最后一个方程中的向量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}

演示

相关内容