여기서는 실제 위에 타원 곡선을 그리는 데 유용한 정보를 많이 보았지만 유한 필드에서는 동일한 작업을 수행하는 데 어려움을 겪고 있습니다. 예를 들어, E에 점을 그리려고 한다고 가정해 보겠습니다. 17개 요소 필드에 x,y를 사용하여 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}