我被要求绘制/绘制模函数 f(m) = m^7 modulo 137 的图形。我尝试在 LaTeX 中使用包“pgfplots”按照官方 overleaf 教程中的说明来完成此操作:https://de.overleaf.com/learn/latex/Pgfplots_package#Reference_guide然而这根本不起作用。当我使用上面的函数进行编译时,我的整个文档都会崩溃。我使用的代码与绘制“正常”函数的代码相同:如果我省略“mod 137”,那么绘制效果会非常完美。
\documentclass{article}
\usepackage[margin=0.25in]{geometry}
\usepackage{pgfplots}
\pgfplotsset{width=10cm,compat=1.9}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
axis lines = left,
xlabel = \(m\),
ylabel = {\(f(m)\)},
xmin=0, xmax=5,
ymin=0, ymax=100,
]
\addplot [
domain=0:10,
samples=100,
color=black,
]
{x^7 \mod 137};
\addlegendentry{\(f(m)\)}.
\end{axis}
\end{tikzpicture}
\end{document}
非常感谢任何形式的帮助!
! Undefined control sequence.
\pgfplots@addplotimpl@expression@yEXPR ->x^7 \mod
137
l.20 {x^7 \mod 137};
答案1
\documentclass[border=1 cm]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.18}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
axis lines = left,
xlabel = \(m\),
ylabel = {\(f(m)\)},
xmin=0, xmax=5,
ymin=0, ymax=150,
]
\addplot[
domain=0:3.5,
samples=1000,
y filter/.expression={x>2&&y<30*(x-2)?0:(x>2&&y>137-30*(x-2)?137:y)},
forget plot, %workaround
] {mod(x^7,137)};
\fill (3.5,0) rectangle (5,137);
\addlegendimage{line legend} %workaround
\addlegendentry{\(f(m)\)}
\end{axis}
\end{tikzpicture}
\end{document}