通过涉及根号的代数表达式指定轴上的刻度标记

通过涉及根号的代数表达式指定轴上的刻度标记

我在 x 轴上有两个刻度标记

\begin{equation}
\pm \sqrt{\frac{1 + \sqrt{33}}{2}}
\end{equation}

y 轴上有一个刻度标记

\begin{equation}
\frac{1 + \sqrt{33}}{2}
\end{equation}

我想要绘制的。(我把我认为可行的命令放在前面。因此,代码确实可以编译。)刻度标记表示标准抛物线和以 3 为圆心的圆的%两个交点。$y=x^{2}$(0, 1)

\documentclass{amsart}
\usepackage{amsmath}
\usepackage{amsfonts}

\usepackage{pgfplots}
\pgfplotsset{compat=1.11}


\begin{document}


\begin{tikzpicture}
\begin{axis}[width=5in,axis equal image,clip=false,
    axis lines=middle,
    xmin=-3.5,xmax=3.5,samples=201,
    ymin=-3,ymax=13,
    restrict y to domain=-3:13,
    ticklabel style={font=\tiny,fill=white},
    xtick={\empty},ytick={\empty},
%    extra x ticks={-\sqrt{(1 + \sqrt{33})/2},\sqrt{(1 + \sqrt{33})/2}},
%    extra y ticks={1 + \sqrt{33}},
    axis line style={latex-latex},
    xlabel=$x$,ylabel=$y$,
    xlabel style={at={(ticklabel* cs:1)},anchor=north west},
    ylabel style={at={(ticklabel* cs:1)},anchor=south west}
]
\addplot[samples=201,domain=-3.5:3.5,blue] {x^2} node[anchor=west, pos=0.9,font=\footnotesize]{$y = x^{2}$};
\addplot[samples=201,domain=-3:3,blue] {1 + sqrt(9 - x^2)};
\addplot[samples=201,domain=-3:3,blue] {1 - sqrt(9 - x^2)};
%\draw [fill] ( sqrt( (1 + sqrt{33})/2), (1 + sqrt{33})/2 ) circle [radius=1.5pt];

\end{axis}

\end{tikzpicture}

\end{document}

答案1

\sqrt中的是拼写错误吗extra x ticks\sqrt是宏排版平方根,而不是计算,因此无论如何都不会起作用。

不过,对于刻度,使用正确的语法似乎也行不通。对于这里刻度数较少的情况,一种可以接受的解决方法是使用宏\pgfmathsetmacro来计算值并将结果存储在宏中。您也可以使用这些宏在交叉点处绘制点。

对于\draw,如果您想直接使用计算,则需要在每个坐标周围加上一对括号,正如 salim bou 在评论中所说。原因是解析器在读取坐标时会寻找右括号,并对计算中的括号感到困惑。

如果要漂亮地打印刻度标签,则需要使用extra x tick labels/extra y tick labelsxticklabels/ yticklabels。我将其添加到代码中,但已注释掉。要完全删除刻度标签,只需向这些键添加一个空列表,例如xticklabels={}

(实际上,我不明白为什么extra在这种情况下要使用刻度,因此在下面的代码中我使用了xtick/ytickxticklabels/ yticklabels,但这只是个人偏好。)

在此处输入图片描述

\documentclass{amsart}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{pgfplots}
\pgfplotsset{compat=1.11}
\begin{document}
\begin{tikzpicture}
\pgfmathsetmacro{\extraxtick}{sqrt((1 + sqrt(33))/2)}
\pgfmathsetmacro{\extraytick}{(1 + sqrt(33))/2}
\begin{axis}[width=5in,axis equal image,clip=false,
    axis lines=middle,
    xmin=-3.5,xmax=3.5,samples=201,
    ymin=-3,ymax=13,
    restrict y to domain=-3:13,
    ticklabel style={font=\tiny,fill=white},
    xtick={-\extraxtick,\extraxtick},
    ytick={\extraytick},
    xticklabels={},
    yticklabels={},
    %xticklabels={$-\sqrt{\frac{1 + \sqrt{33}}{2}}$,$\sqrt{\frac{1 + \sqrt{33}}{2}}$},
    %yticklabels={$\frac{1 + \sqrt{33}}{2}$},
    axis line style={latex-latex},
    xlabel=$x$,ylabel=$y$,
    xlabel style={at={(ticklabel* cs:1)},anchor=north west},
    ylabel style={at={(ticklabel* cs:1)},anchor=south west}
]
\addplot[samples=201,domain=-3.5:3.5,blue] {x^2} node[anchor=west, pos=0.9,font=\footnotesize]{$y = x^{2}$};
\addplot[samples=201,domain=-3:3,blue] {1 + sqrt(9 - x^2)};
\addplot[samples=201,domain=-3:3,blue] {1 - sqrt(9 - x^2)};
\draw [fill] (\extraxtick, \extraytick) circle [radius=1.5pt]
             (-\extraxtick, \extraytick) circle [radius=1.5pt];
\end{axis}

\end{tikzpicture}

\end{document}

相关内容