構想装甲高層倉庫

宇宙人に舐められないために数学を行い、そしてコードを打つ

TikZで書かれた積分路

 モノ好きである筆者はTikZ(図を書くときに使う\LaTeXのライブラリ)初心者であるにも関わらず\LaTeXだけで積分路を作ってしまった。しかし他にこのようなことをしている人があまりおらず、そもそもTikZの日本語のリファレンスも充実していないのでとりあえず使ったコードを置いておく。

注意

 ある程度TikZの日本語サイトを読んだ人対象です、すみません...

コード

 使用したライブラリは以下の通り

\usetikzlibrary{arrows.meta,decorations,decorations.markings}

 こんな感じの積分路を作る。

生成の例(原点の特異点を回避している)

 このようなコードで生成することができた。

  \begin{figure}
    \centering
    \begin{tikzpicture}[%詳細設定(気にしない)
      arrow/.style={
        postaction={
          decorate,
          decoration={
            markings,
            mark=at position #1 with {\arrow{stealth}}
          }
        }
      },label2/.style 2 args={
        pos/.style={
          postaction={
            decorate,
            decoration={
              markings,
              mark=at position ##1 with \node #2;
            }
          }
        }
      },label/.style={
        label2={1}{#1}
      },pos/.default=.5
      ,arrow/.default=.5
    ]%設定終了
      
      %複素数平面の描画
      \draw[-{Stealth}] (-4.0,0) -- (4,0) node[right]{$\Re z$};
      \draw[-{Stealth}] (0,-0.5) -- (0,4) node[above]{$\Im z$};

      %原点の描画
      \draw (0,0) node[below right]{0};

      %積分経路の描画%label->posの順で設定しないと反映されない仕様
      \draw[very thick,domain=-3:-0.6,          label={[above]{$L_1$}},               pos      ,arrow]  plot ({\x},0);%posやarrowをの具体的な値を省略している
      \draw[very thick,domain= 0.6: 3,          label={[above]{$L_2$}},               pos      ,arrow=.5]  plot ({\x},0);%posを省略しているがarrowは省略していない
      \draw[very thick,domain=0:180,variable=\t,label={[above]{$\Gamma_R$}},          pos={.25},arrow=.75] plot ({3*cos(\t)},{3*sin(\t)});%pos,arrowの両方ともに省略していない
      \draw[very thick,domain=180:0,variable=\t,label={[above]{$\Gamma_\varepsilon$}},pos={.25},arrow=.5]  plot ({0.6*cos(\t)},{0.6*sin(\t)});%両方ともに省略していない

      %特異点の描画
      \draw[only marks,mark=x,scale=2.5] plot (0,0);

      %座標の描画
      \draw (-3, 0) node[below]      {$z=-R$};
      \draw (-.6,0) node[below left] {$z=-\varepsilon$};
      \draw (0, .6) node[above right]{$z=\varepsilon i$};
      \draw (.6, 0) node[below right]{$z=\varepsilon$};
      \draw (3,  0) node[below]      {$z=R$};
      \draw (0,  3) node[above right]{$z=Ri$};
    \end{tikzpicture}
  \end{figure}

 ここで積分路のlabelというのは積分路の名前である。そしてposというのは簡単に言えば、積分路の名前を表示する場所が始点と終点をそれぞれ0,1としてどのくらいの位置にあるかを指定してあげるものである。例えば始点と終点の中間に付けたければ0.5という感じである。これはarrow(積分路上の向きを表す矢印)も同じである(お節介だがposやarrowは具体的な値を省略でき、その場合は0.5が自動的に入る)。

 余談だが大量の\drawを用いているのはTikZ初心者である私の考える見やすさのためなのでもっといい書き方があるかもしれない。しかしこだわりは本末転倒の原因なので今日はこのくらいで終わる。

【積分解説/備忘録】【随時更新中】MIT Integration Bee(qualifying_round_2010)の積分を解く

折り畳み目次

  • 折り畳み目次
  • 2/1更新分
    • 問題
    • 概略
    • 解法
  • 2/2更新分
    • 問題
    • 概略
    • 解法
  • 2/3更新分
    • 問題
    • 概略
    • 解法
  • 2/4更新分
    • 問題
    • 概略
    • 解法
  • 2/5更新分
    • 問題
    • 概略
    • 解法
  • 2/6更新分
    • 問題
    • 概略
    • 解法
  • 2/7更新分
    • 問題
    • 概略
    • 解法
  • 2/8更新分
    • 問題
    • 概略
    • 解法
  • 2/9更新分
    • 問題
    • 概略
    • 解法
  • 2/10更新分
    • 問題
    • 概略
    • 解法
      • 備考
  • 2/11更新分
    • 問題
    • 概略
    • 解法
  • 2/12更新分
    • 問題
    • 概略
    • 解法
  • 2/13更新分
    • 問題
    • 概略
    • 解法
  • 2/14更新分
    • 問題
    • 概略
    • 解法
  • 2/15更新分
    • 問題
    • 概略
    • 解法
  • 2/16更新分
    • 問題
    • 概略
    • 解法
  • 2/17更新分
    • 問題
    • 概略
    • 解法
  • 2/18更新分
    • 問題
    • 概略
    • 解法1
    • 解法2
  • 2/19更新分
    • 問題
    • 概略
    • 解法
  • 2/20更新分
    • 問題
    • 概略
    • 解法
  • 2/21更新分(途中)
    • 問題
    • 概略
    • 解法
続きを読む