当绘制三角函数图时,如果里面有“/”,则 Pgfplots 会出现错误!

当绘制三角函数图时,如果里面有“/”,则 Pgfplots 会出现错误!

我尝试在 Pgfplots 中绘制函数 x * tan(pi/x) 的图像,但总是出现错误:

  • \pgfmathfloattoint@@ 的参数有一个额外的 }
  • 额外},或者被遗忘的\endgroup。
  • 失控的争论?
  • 额外\其他
  • 计量单位非法(插入 pt)

如果我用其他符号(如 *、+ 或 -)替换“/”,它就可以正常工作……但对于任何三角函数,它都不允许我使用“/”。我已经尝试使用负指数 (x^{-1}),但仍然不起作用。

我尝试过清除缓存,但还是没有用。如果能帮我解决这个问题,我将非常感激。

\documentclass[12pt]{article}
\usepackage[utf8]{inputenc}
\usepackage{setspace}

\usepackage{pgfplots}
\usepackage{caption}
\usepackage{subcaption}
\usepackage{amsmath}
\usepackage[nodisplayskipstretch]{setspace}
\usepackage{xcolor,soul}
\usepackage{tikz}
\usepackage{amssymb}
\usepackage{float}
\usepackage[margin=1in]{geometry}
\usetikzlibrary{shapes.geometric,angles,quotes,shapes}
\usetikzlibrary{patterns, arrows.meta,backgrounds,decorations,pathreplacing}
\usepackage{tkz-euclide}
\usepackage{pst-solides3d}
\usetkzobj{all}

\definecolor{antiquewhite}{rgb}{0.98, 0.92, 0.84}
\sethlcolor{antiquewhite}
\pgfplotsset{grid style={dashed,gray}}
\newcommand\nbvspace[1][3]{\vspace*{\stretch{#1}}}
\newcommand\nbstretchyspace{\spaceskip0.5em plus 0.25em minus 0.25em}
\newcommand{\nbtitlestretch}{\spaceskip0.6em}
\geometry{
a4paper,
total={216mm,303mm},
left=20mm,
top=20mm,
}

\begin{document}
%
\begin{center}
\begin{tikzpicture}
    \begin{axis}[
        x=0.5cm,
        y=0.5cm,
        every axis plot/.append style={very thick},
        axis lines=center,
        every axis y label/.style={ 
            at={(ticklabel cs:0.9)},anchor=near yticklabel opposite,fill=white,
        },
        xlabel={$n$},
        ylabel={$f(n)$},
        xmin=0, xmax=30,
        ymin=-5, ymax=15,
        xtick={0,5,10,...,30},
        ytick={-5,0,5,10,15},
        ymajorgrids=true,
        xmajorgrids=true,
        grid style=dashed,
        domain = 0:30,
    ]
    
    \addplot[color=black,samples=1000,trig format=rad]{x*tan(pi/x)};
    
    \addplot[color=black,samples=200,style=dashed,]{pi};

    \end{axis}
\end{tikzpicture}
\end{center}
%

答案1

你除以零,这当然是不允许的。

\documentclass[12pt]{article}

\usepackage{pgfplots}

\pgfplotsset{grid style={dashed,gray}}

\begin{document}

\begin{tikzpicture}
    \begin{axis}[
        x=0.5cm,
        y=0.5cm,
        every axis plot/.append style={very thick},
        axis lines=center,
        every axis y label/.style={ 
            at={(ticklabel cs:0.9)},anchor=near yticklabel opposite,fill=white,
        },
        xlabel={$n$},
        ylabel={$f(n)$},
        xmin=0, xmax=30,
        ymin=-5, ymax=15,
        xtick={0,5,10,...,30},
        ytick={-5,0,5,10,15},
        ymajorgrids=true,
        xmajorgrids=true,
        grid style=dashed,
        domain = 0:30,
    ]
    
    \addplot[color=black,samples=1000,trig format=rad]{x*tan(pi/ifthenelse(x,x,1))};
    
    \addplot[color=black,samples=200,style=dashed,]{pi};

    \end{axis}
\end{tikzpicture}

\end{document}

而不是除以X,我除以ifthen(x,x,1),所以如果X为零,则返回一。

在此处输入图片描述

另一方面,图形必然会非常粗糙,因为函数在区间 (0,2) 内有无数条渐近线,尽管显然没有一条能够用给定的采样率捕捉到。

顺便说一下,该函数在 0 处没有极限。

相关内容