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
Antwort1
Sie können es nicht let
außerhalb eines Pfades verwenden. Verwenden Sie einfach\pgfmathsetmacro\lhr{…}
(oder in diesem Fall \pgfmathtruncatemacro\lhr{…}
das Löschen der int
Funktion) oder dieevaluate
Schlüsselfür \foreach
.
Ich habe den Knotenstil ein wenig angepasst und die Werte als Beschriftung hinzugefügt, \x
damit \y
Sie 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}