Destacando bandas de uma matriz com tikz

Destacando bandas de uma matriz com tikz

Estou tentando destacar diagonais de banda específicas de uma matriz em látex usando nicematrixe tikz, mas estou tendo problemas para ajustar corretamente as bandas à matriz.

Alguém tem uma idéia do que estou fazendo de errado aqui? Veja o código abaixo:

\documentclass{article}
\usepackage{nicematrix}
\usepackage{tikz}
\usetikzlibrary{fit}
\usetikzlibrary{shapes.geometric}

\begin{document}

\begin{equation}
\setlength{\arraycolsep}{0pt}
\begin{bNiceArray}{ccccccc}[columns-width=auto]
d_{1}&e_{u,1}&\cdots&&&&0\\
c_{l,2}&d_{2}&e_{u,2}&\cdots&&&\vdots\\
b_{l,3}&c_{l3}&d_{3}&e_{u,3}&\cdots&&\vdots\\
a_{l,4}&b_{l,4}&c_{l,4}&d_{4}&e_{u,4}&\cdots&\vdots\\
0&&&&\ddots&&\vdots\\
\vdots&&a_{l,n-1}&b_{l,n-1}&c_{l,n-1}&d_{n-1}&e_{u,n-1}\\
\vdots&\cdots&&a_{l,n}&b_{l,n}&c_{l,n}&d_{n}\\
\CodeAfter
  \begin{tikzpicture}
  \node [draw=red, rounded corners=2pt, inner ysep = 1pt,
       rotate fit=-35, fit = (1-1) (7-7) ] {} ;
\node [trapezium, trapezium angle=55, draw=blue, inner ysep = 0pt, rounded corners=2pt,rotate fit=-35,fit= (1-2) (6-7) ]{};
\node [trapezium, trapezium angle=55, draw=green, inner xsep = 0pt,inner ysep = 0pt, rounded corners=2pt,rotate fit=-215,fit= (2-1)(4-1)(7-6)(7-4) ]{};
  \end{tikzpicture}
\end{bNiceArray}
\end{equation}

\end{document}

e termine com uma equação parecida com esta:

saída de matriz de banda

Idealmente, eu gostaria que os trapézios verdes e azuis se ajustassem perfeitamente à própria matriz e não transbordassem.

Acho que ajudaria se as larguras das colunas e linhas da matriz também fossem iguais, mas não sei como posso definir isso.

Obrigado!

Responder1

Uma sugestão.

\documentclass{article}
\usepackage{nicematrix}
\usepackage{tikz}

\begin{document}

\begin{equation}
\renewcommand{\arraystretch}{2}
\begin{bNiceArray}{ccccccc}[columns-width=auto,extra-margin=6pt]
d_{1}&e_{u,1}&\cdots&&&&0\\
c_{l,2}&d_{2}&e_{u,2}&\cdots&&&\vdots\\
b_{l,3}&c_{l3}&d_{3}&e_{u,3}&\cdots&&\vdots\\
a_{l,4}&b_{l,4}&c_{l,4}&d_{4}&e_{u,4}&\cdots&\vdots\\
0&&&&\ddots&&\vdots\\
\vdots&&a_{l,n-1}&b_{l,n-1}&c_{l,n-1}&d_{n-1}&e_{u,n-1}\\
\vdots&\cdots&&a_{l,n}&b_{l,n}&c_{l,n}&d_{n}\\
\CodeAfter
  \begin{tikzpicture} 
  \draw [red] ([yshift=-2mm]1-|1.5) -- ([yshift=-2mm]7.5-|8) |- (8-|7.5) -- (1.5-|1) |- cycle ; 
  \draw [blue] ([yshift=-1mm]1-|1.5) -- ([yshift=-1mm]7.5-|8) -- (6.5-|8) -- ([yshift=-1mm]1-|2.5) -- cycle ;
  \draw [green] ([yshift=-1mm]1.5-|1) -- ([yshift=-1mm]8-|7.5) -- ([yshift=-1mm]8-|4.5) -- (4.5-|1) -- cycle ; 
  \end{tikzpicture}
\end{bNiceArray}
\end{equation}

\end{document}

Saída do código acima

informação relacionada