分治矩阵

分治矩阵

请告诉我如何编写 latex 代码来生成下图形式的矩阵。非常感谢。我当前的代码不是我想要的。矩阵

    \documentclass[a4paper]{article}
    \usepackage{amsmath}
    \begin{document}
    \begin{equation}
    U^{(k+1)}_a=
    \left(
    \begin{array}{ccccc|c}
    &  &  &  &  & \left(U^{(k+1)}_a\right)_{0k} \\
    &  &  &  &  & \left(U^{(k+1)}_a\right)_{1k} \\
    &  &  U^{(k)}_a  &  &  & \vdots \\
    &  &  &  &  & \vdots \\
    &  &  &  &  & \vdots \\
    \hline
    a_k & 0 & \dots & 0 & 0 & \left (U^{(k+1)}_a\right)_{kk}
    \end{array}
    \right).
    \end{equation}
    \end{document}

答案1

这可以使用\multicolumn命令来完成。该\cline命令会生成部分水平线。\multicolumn最后一行的 1 列会消除垂直线的最后一部分。使用\multicolumnU^{(k)}_a命令会自动将其水平居中,而不是将其放在第三列。

\arraystretch我还通过设置为在行之间添加了一点空间1.6

\documentclass[a4paper]{article}
\usepackage{amsmath}
\begin{document}
\begin{equation}
U^{(k+1)}_a=
\left(
\renewcommand{\arraystretch}{1.6}
\begin{array}{ccccc|c}
&  &  &  &  & \left(U^{(k+1)}_a\right)_{0k} \\
&  &  &  &  & \left(U^{(k+1)}_a\right)_{1k} \\
\multicolumn{5}{c|}{U^{(k)}_a} & \vdots \\
&  &  &  &  & \vdots \\
&  &  &  &  & \vdots \\
\cline{1-5}
a_k & 0 & \dots & 0 & \multicolumn{1}{c}{0} & \left (U^{(k+1)}_a\right)_{kk}
\end{array}
\right).
\end{equation}
\end{document}

在此处输入图片描述

我可能还会删除 的第 4 列和 的两行\vdots,并使用\cdots代替\dots,但这只是我的意见。如果添加,\usepackage{array}您将获得水平线和垂直线之间更清晰的连接。

U^{(k+1)}_a=
\left(
\renewcommand{\arraystretch}{2}
\begin{array}{cccc|c}
&  &  &  & \left(U^{(k+1)}_a\right)_{0k} \\
    \multicolumn{4}{c|}{U^{(k)}_a} & \left(U^{(k+1)}_a\right)_{1k} \\
&  &  &  & \vdots \\
\cline{1-4}
a_k & 0 & \cdots & \multicolumn{1}{c}{0} & \left (U^{(k+1)}_a\right)_{kk}
\end{array}
\right).

在此处输入图片描述

答案2

它实际上是一个二乘二的矩阵,带有嵌套的矩阵:

\documentclass{article}
\usepackage{amsmath,array}

\begin{document}

\[
U'=\left(
\begin{array}{@{}c|c@{}}
U & \begin{array}{@{}c@{}} a \\ b \\ \vdots \end{array} \\
\cline{1-1}
\multicolumn{1}{@{}c}{
  \begin{matrix} a & b & \cdots \end{matrix}
} & z
\end{array}
\right)
\]

\end{document}

在此处输入图片描述

答案3

如果您希望不受干扰地获得更多的点,您可能希望使用tikz

 \documentclass{article}
 \usepackage{amsmath}
 \usepackage{tikz}
 \usetikzlibrary{matrix}
 \begin{document}
 \[U'~=~\left(
 \vcenter{\hbox{\begin{tikzpicture}
 \node[matrix of math nodes] (mymat) {
    &  & ~& \left(U^{(k+1)}_a\right)_{0k} \\
    &  & ~& \left(U^{(k+1)}_a\right)_{1k} \\
    & ~~~~~~{\text{\Huge$U$}}~~~~~~ & &  \\[1cm]
  ~  &  & ~ & ~ \\
 a   &  &  & \left (U^{(k+1)}_a\right)_{kk}\\
 };
 \draw (mymat-1-4.north west) -- (mymat-5-4.north west);
 \draw (mymat-4-1.south west) -- (mymat-4-3.south east);
 \draw[ultra thick,line cap=round,dash pattern=on 0 off 1.6mm](mymat-2-4)--(mymat-4-4);
 \draw[ultra thick,line cap=round,dash pattern=on 0 off 1.6mm](mymat-5-1)--(mymat-5-4);
 \end{tikzpicture}}}\right)
 \]
 \end{document}

在此处输入图片描述

答案4

使用{pNiceArray}。在该环境下,由(类似于)和前言中的说明符nicematrix指定的规则不会在由连续虚线(和)命令分隔的虚拟块中绘制。\Hlinehline|\Vdots\Cdots

\documentclass{article}
\usepackage{nicematrix}

\begin{document}

$U' = 
\begin{pNiceArray}{ccc|c}[xdots/shorten=4pt,left-margin=2pt]
\Block{3-3}{U}
  &   &        & a \\
  &   &        & b \\
  &   &        & \Vdots \\
\Hline
a & b & \Cdots & z 
\end{pNiceArray}$

\end{document}

您需要多次编译(因为nicematrix在后台使用 PGF/Tikz 节点)。

上述代码的输出

相关内容