我有一个 15x15 矩阵,它很大,而且不便于格式化。除主对角线和对角线下方的元素外,所有元素均为零。如何正确格式化它?比如我想改用两个向量。
这是矩阵。
\begin{bmatrix}
1.4142 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0\\
-0.7071 & 1.2247 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0\\
0 & -0.8165 & 1.1547 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0\\
0 & 0 & -0.8660 & 1.1180 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0\\
0 & 0 & 0 & -0.8944 & 1.0954 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0\\
0 & 0 & 0 & 0 & -0.9129 & 1.0801 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0\\
0 & 0 & 0 & 0 & 0 & -0.9258 & 1.0690 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0\\
0 & 0 & 0 & 0 & 0 & 0 & -0.9354 & 1.0607 & 0 & 0 & 0 & 0 & 0 & 0 & 0\\
0 & 0 & 0 & 0 & 0 & 0 & 0 & -0.9428 & 1.0541 & 0 & 0 & 0 & 0 & 0 & 0\\
0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & -0.9487 & 1.0488 & 0 & 0 & 0 & 0 & 0\\
0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & -0.9535 & 1.0445 & 0 & 0 & 0 & 0\\
0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & -0.9574 & 1.0408 & 0 & 0 & 0\\
0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & -0.9608 & 1.0377 & 0 & 0\\
0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & -0.9636 & 1.0351 & 0\\
0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & -0.9661 & 1.0328\\
\end{bmatrix}
答案1
您可以通过创建列表(使用包listofitems
)然后单独检索元素来使用类似向量的表达式。
该列表是使用 \readlist
命令创建的。
该列表以逗号分隔,并使用符号恢复元素
\ListName[<order of the element>]
为了方便起见,本例定义了两个各含 15 个项目的列表。(这样更容易写行)
作为一种改进,您可以用一个大零替换多个零。
\documentclass[11pt, landscape]{article}
\usepackage[left=2.00cm]{geometry}
\usepackage{listofitems}% added <<<
\usepackage{amsmath}% added <<<
\setcounter{MaxMatrixCols}{15}% more columns allowed
\begin{document}
\small
\readlist\DA{1.4142, 1.2247, 1.1547, 1.1180, 1.0954, 1.0801, 1.0690, 1.0607, 1.0541, 1.0488, 1.0445, 1.0408, 1.0377, 1.0351, 1.0328} % 15 elements
\readlist\DB{0, -0.7071, -0.8165, -0.8660, -0.8944, -0.9129, -0.9258, -0.9354, -0.9428, -0.9487, -0.9535, -0.9574, -0.9608, -0.9636, -0.9661}% 15 elements
$\begin{bmatrix}
\DA[1] & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
\DB[2] & \DA[2] & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0\\
0 & \DB[3] & \DA[3] & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0\\
0 & 0 & \DB[4] & \DA[4] & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0\\
0 & 0 & 0 &\DB[5]& \DA[5] & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0\\
0 & 0 & 0 & 0 & \DB[6] & \DA[6] & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0\\
0 & 0 & 0 & 0 & 0 & \DB[7] & \DA[7] & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0\\
0 & 0 & 0 & 0 & 0 & 0 & \DB[8] & \DA[8] & 0 & 0 & 0 & 0 & 0 & 0 & 0\\
0 & 0 & 0 & 0 & 0 & 0 & 0 & \DB[9] & \DA[9] & 0 & 0 & 0 & 0 & 0 & 0\\
0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & \DB[10]& \DA[10] & 0 & 0 & 0 & 0 & 0\\
0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & \DB[11] & \DA[11] & 0 & 0 & 0 & 0\\
0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & \DB[12] & \DA[12] & 0 & 0 & 0\\
0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & \DB[13] & \DA[13] & 0 & 0\\
0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & \DB[14] & \DA[14] & 0\\
0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & \DB[15] &\DA[15]
\end{bmatrix}$
\newpage
$\begin{bmatrix}
\DA[1] &&&&&&&&&&&&&&\\
\DB[2] & \DA[2] &&&&&&&&&&&&& \\
& \DB[3] & \DA[3] &&&&&&&&&&&&\\
&& \DB[4] & \DA[4] &&&&&&&&&&&\\
&&&\DB[5]& \DA[5] &&&&&\makebox(0,0){\text{\Huge0}}&&&&&\\
&&&& \DB[6] & \DA[6] &&&&&&&&&\\
&&&&& \DB[7] & \DA[7] &&&&&&&&\\
&&&&&& \DB[8] & \DA[8] &&&&&&&\\
&&&&&&& \DB[9] & \DA[9] &&&&&&\\
&&&&&&&& \DB[10]& \DA[10] &&&&&\\
&&&&&&&&& \DB[11] & \DA[11] &&&&\\
&&&\makebox(0,0){\text{\Huge0}}&&&&&&& \DB[12] & \DA[12] &&&\\
&&&&&&&&&&& \DB[13] & \DA[13] &&\\
&&&&&&&&&&&& \DB[14] & \DA[14] &\\
&&&&&&&&&&&&& \DB[15] &\DA[15]
\end{bmatrix}$
\end{document}
最后一个例子展示了如何pmatrix
使用nicematrix
包并使用水平、垂直和对角虚线:\Cdots
,\Vdots
和\Ddots
。 (它将编译两次)
\documentclass[11pt, landscape]{article}
\usepackage[left=2.00cm]{geometry}
\usepackage{listofitems}% added <<<<<
\usepackage{nicematrix}% added <<<<<
\setcounter{MaxMatrixCols}{15}% more columns allowed
\begin{document}
\small
\readlist\DA{1.4142, 1.2247, 1.1547, 1.1180, 1.0954, 1.0801, 1.0690, 1.0607, 1.0541, 1.0488, 1.0445, 1.0408, 1.0377, 1.0351, 1.0328} % 15 elements
\readlist\DB{0, -0.7071, -0.8165, -0.8660, -0.8944, -0.9129, -0.9258, -0.9354, -0.9428, -0.9487, -0.9535, -0.9574, -0.9608, -0.9636, -0.9661}% 15 elements
$\setlength{\extrarowheight}{0.5ex} % expand the rows
\begin{bNiceMatrix}[xdots/shorten=1em] % make line dots with shorter length
\DA[1] & 0 & \Cdots & & & & & & & & & & & & 0 \\
\DB[2] &\DA[2] & \Ddots & & & & & & & & & & & & \Vdots\\
0 & \DB[3] &\DA[3] & & & & & & & & & & & & \\
\Vdots & \Ddots & \DB[4]& \DA[4] & & & & & & & & & & & \\
& & & \DB[5] &\DA[5] & & & & & & & & & & \\
& & & & \DB[6] & \DA[6] & & & & & & & & & \\
& & & & & \DB[7] &\DA[7] & & & & & & & & \\
& & & & & & \DB[8] & \DA[8] & & & & & & & \\
& & & & & & & \DB[9] &\DA[9] & & & & & & \\
& & & & & & & & \DB[10] & \DA[10] & & & & & \\
& & & & & & & & & \DB[11] &\DA[11] & & & & \\
& & & & & & & & & & \DB[12] & \DA[12] & & & \\
& & & & & & & & & & & \DB[13] &\DA[13] & & \\
& & & & & & & & & & & & \DB[14] & \DA[14] & 0\\
0 & \Cdots & & & & & & & & & & & 0 & \DB[15] &\DA[15]
\end{bNiceMatrix}$
\end{document}
笔记。为清晰起见,此处创建的列表元素具有前导空格,这在表格环境中无关紧要。要抑制此类空格,请使用\readlist*
。