유한 필드 위에 타원 곡선 그리기

유한 필드 위에 타원 곡선 그리기

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

산출

여기에 이미지 설명을 입력하세요

관련 정보