有限体上の楕円曲線の描画

有限体上の楕円曲線の描画

実数体上の楕円曲線を描くための役立つ情報がここにたくさんありましたが、有限体上で同じことを行うのに苦労しています。たとえば、17 個の要素を持つ体で x、y を持つ E: y^2 = x^3 + 1 上の点を描画するとします。

いくつかの組み合わせを試してみました

\foreach \x in {1,...,16}
\foreach \y in {1,...,16}{ 
    let \lhs = {int(mod(\y*\y, 17))}
    let \rhs = {int(mod(\x*\x*\x + 1,17))}
    \ifthenelse{\lhs = \rhs}{
    \node[circle,draw] (\x \y) at (\x,\y) {\x};
    }{}
}

しかし、実際にはうまくいきません...画像は次のようなものになるはずです 文章

答え1

letパスの外側では使用できません。\pgfmathsetmacro\lhr{…}(またはこの場合は関数\pgfmathtruncatemacro\lhr{…}を削除int)またはevaluateのために\foreach

評価されたポイントを確認できるように、ノード スタイルを少し調整し、値\x\yラベルを追加しました。

コード

\documentclass[tikz]{standalone}
\usepackage{xifthen}
\begin{document}
\begin{tikzpicture}[every label/.append style={font=\small}]
\foreach[
  evaluate={\rhs = int(mod(\x*\x*\x + 1, 17));}
] \x in {1,...,16}{
  \foreach[
    evaluate={\lhs = int(mod(\y*\y, 17));}
  ] \y in {1,...,16}{
    \ifthenelse{\lhs = \rhs}{
      \node[circle, red, fill, label={\x, \y}] at (\x,\y) {};
    }{}
  }
}
\end{tikzpicture}
\end{document}

出力

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

関連情報