tikz を使用して LaTeX でこのような図を作成するにはどうすればよいでしょうか?

tikz を使用して LaTeX でこのような図を作成するにはどうすればよいでしょうか?

tikz を使用して LaTeX でこの図を作成したいと思います (図は書籍からのものです)。

ここに画像の説明を入力してください

どこから始めればよいのか、どのようにすればよいのか、まったくわかりません。ご協力ありがとうございます。

答え1

TikZ ではいつものことですが、このような図を作成する方法はたくさんあります。ここでは、基本的な TikZ 機能を使った 2 つの方法を紹介します。

どちらも2つのPGFForループを使用しますが、最初のループは回転座標系を使用しており、右下が行の左下は列目(at (\k, -\n)仕様を参照)。ただし、これはインデックスの最初の値が次のように評価される必要があることを意味します。++ 1はPGFForのキーで実行できます(\intevalこれはカウントアップを意味します)countcount = \knp from \np\knp+ それぞれ1)。

2番目の図は、行が水平であるが、列は左下方向に残り、計算が必要になった。バツノード配置の値: 2

前の行/列から矢印を描く条件は、以前と同様に少し複雑になりました。

条件は、\ifnum…\fi私が好きではない基本的な TeX 制御シーケンスを使用して評価されますが、この場合、特に と組み合わせると、\intevalオンザフライで整数計算が可能になるため、最も簡単なツールです。

コード

\documentclass[tikz]{standalone}
\usetikzlibrary{arrows.meta, quotes}
\begin{document}
\tikzset{% settings common to both solutions
  anchor=base,        % nodes are aligned at their base
  auto=right,         % nodes along lines are placed to the right
                      % (all arrows are drawn reversed)
  >={Stealth[round]}, % shorthand arrow tip
  outer sep=+.1em,    % lines connecting nodes are further away
  every edge quotes/.append style={% quotes nodes are closer to the line
    inner sep=+.15em, outer sep=auto}}

\tikz[x=(-45:1.5cm), y=(45:1.5cm)] % rotate and scale the coordinate system
\foreach[count/.list={\np from 1, \nm from -1}] \n in {0, ..., 5}
  \foreach[count/.list={\kp from 1, \km from -1, \knp from \np}]
                                                  \k in {0, ..., \inteval{5-\n}}
    \node (\k-\n) at (\k, -\n) {$A_{\knp, \k}$} % \knp = \inteval{\k+\n+1}
    \ifnum\n=0
      node[gray] at (\k, 1) {$k=\k$}
    \fi
    \ifnum\k=0
      node[gray] at (-1, -\n-1) {$n=\np$}
    \fi
    \ifnum\inteval{\k*\n}>0
      edge[<-, "$\cdot\kp$"] (\k -\nm)
      edge[<-, "$\cdot\np$"] (\km-\n )
    \fi;

\tikz[scale=1.5/sqrt 2] % same scale as in the previous diagram
\foreach[count/.list={\np from 2, \nm from 0}] \n in {1, ..., 6}
  \foreach[count/.list={\kp from 1, \km from -1}] \k in {0, ..., \inteval{\n-1}}
    \node (\k-\n) at (2*\k-\n,-\n) {$A_{\n, \k}$}
      \ifnum\k=0
        node[gray] at (-\n-2, -\n) {$n=\n$}
      \fi
      \ifnum\n=\inteval{\k+1}
        node[gray] at (2*\k-\n+1, -\n+1) {$k=\k$}
      \fi
      \ifnum\n>2 \ifnum\k>0 \ifnum\k<\inteval{\n-1}
        edge[<-, "$\cdot\kp$"]             (\k -\nm)
        edge[<-, "$\cdot\inteval{\n-\k}$"] (\km-\nm)
      \fi\fi\fi;
\end{document}

出力

ここに画像の説明を入力してください

関連情報