Zeichnen einer elliptischen Kurve über einem endlichen Körper

Zeichnen einer elliptischen Kurve über einem endlichen Körper

Ich habe hier viele hilfreiche Informationen zum Zeichnen elliptischer Kurven über reellen Zahlen gesehen, aber ich habe Probleme, dasselbe über einem endlichen Körper zu tun. Nehmen wir beispielsweise an, wir versuchen, die Punkte auf E: y^2 = x^3 + 1 mit x,y im Körper mit 17 Elementen zu zeichnen.

Ich habe einige Kombinationen ausprobiert von

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

aber ich bekomme es nie richtig zum Laufen... Das Bild sollte ähnlich werden wie Text

Antwort1

Sie können es nicht letaußerhalb eines Pfades verwenden. Verwenden Sie einfach\pgfmathsetmacro\lhr{…}(oder in diesem Fall \pgfmathtruncatemacro\lhr{…}das Löschen der intFunktion) oder dieevaluateSchlüsselfür \foreach.

Ich habe den Knotenstil ein wenig angepasst und die Werte als Beschriftung hinzugefügt, \xdamit \ySie die ausgewerteten Punkte überprüfen können.

Code

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

Ausgabe

Bildbeschreibung hier eingeben

verwandte Informationen