在有限域上繪製橢圓曲線

在有限域上繪製橢圓曲線

我在這裡看到了很多關於在實數上繪製橢圓曲線的有用信息,但我在有限域上做同樣的事情時遇到了困難。例如,假設我們嘗試在 E 上繪製點:y^2 = x^3 + 1,其中 x,y 在 17 個元素的域中。

我嘗試了一些組合

\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}

輸出

在此輸入影像描述

相關內容