试图策划(x * cos^2(x)) / (sin(x))
输出非常奇怪。只有视觉故障。有人知道如何修复吗?
分数维:
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{pgfplots}
% The next line does not change anything
% \pgfplotsset{compat=1.17}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
domain=-2*pi:2*pi,
axis lines = middle,
axis equal image,
width=14cm,
enlargelimits={abs=0.4},
no markers,
samples=200,
]
\addplot[domain=-2*pi:2*pi]{(x*cos(deg( x ))^2)/( sin( deg( x) ) )};
\end{axis}
\end{tikzpicture}
\end{document}
答案1
您有一个dimension too large
(在 x=0 附近除以零)。一种解决方案是像这样拆分:
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{pgfplots}\pgfplotsset{compat=1.16}
% The next line does not change anything
% \pgfplotsset{compat=1.17}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
domain=-2*pi:2*pi,
ymin=-6, ymax=6,
axis lines = middle,
axis equal image,
width=14cm,
enlargelimits={abs=0.4},
no markers,
samples=199,
]
\addplot[domain=0.2:2*pi]{(x*(cos(deg( x )))^2) /( sin( deg( x) ) )};
\addplot[domain=-2*pi:-0.2]{(x*(cos(deg( x )))^2) /( sin( deg( x) ) )};
\end{axis}
\end{tikzpicture}
\end{document}
答案2
如果你尝试绘制该函数,没问题:
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{pgfplots}
% The next line does not change anything
\pgfplotsset{compat=1.17}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
% domain=-2*pi:2*pi,
% axis lines = middle,
% axis equal image,
width=14cm,
enlargelimits={abs=0.4},
no markers,
samples=100,
]
\addplot{(x*cos(deg( x ))^2)/( sin( deg( x) ) )};
\end{axis}
\end{tikzpicture}
\end{document}
答案3
我无法将其作为评论,因为它太长了。给出的两个答案有些误导,因为那些几乎垂直的线不是图形的一部分。此外,该函数在 x=0 处没有定义。你的函数图应该更像这样:
这最接近接受的答案,但垂直线不是函数的一部分,并且在 (0,1) 处有一个洞。函数的定义域将是分母 sin(x) 不为 0 的所有 x 值。也就是说,x 不能是 pi 的倍数。当 pi 的倍数非零时,图像具有垂直渐近线。当 x=0 时,存在可移除的不连续性,因为极限定律以及著名的极限,即当 x 接近于 0 时 sin(x)/x 变为 1。所以在 (0,1) 处应该有一个洞来表示图像在那里没有定义。要生成的代码如下所示。它利用了 John Kormylo 关于 的评论restrict y to domain
。这可以防止函数趋于无穷大从而破坏图像的问题。尝试删除该行并运行它。您将获得类似于您发布的代码的输出。错误dimension too large
是由 x=pi 和 x=-pi 而不是 x=0 引起的。
\documentclass{standalone}
\usepackage[utf8]{inputenc}
\usepackage[dvipsnames]{xcolor}
\usepackage{pgfplots}
\pgfmathdeclarefunction{f}{1}{%
\pgfmathparse{x*cos(deg(x))^2/sin(deg(x))}%
}
\tikzset{Line Style1/.style={smooth,thick, dashed,samples=400}}
\tikzset{Line Style2/.style={smooth,thick, samples=800}}
\pgfplotsset{holdot/.style={color=NavyBlue,fill=white,only marks,mark=*}}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
restrict y to domain=-6.4:6.4,
domain=-2*pi:2*pi,
axis lines = middle,
axis equal image,
width=14cm,
enlargelimits={abs=0.4},
no markers,
samples=200,
]
\addplot[Line Style2, color=NavyBlue, domain=-6.4:6.4] (\x,{f(\x)});
\addplot[holdot] coordinates{(0,1)};
\end{axis}
\end{tikzpicture}
\end{document}