我想
acos(7/x)+acos(-2/x)+acos(5/x)-pi
重新策划domain=-20:20
。
我问自己,我是否可以将其绘制为一曲线(不是具有不同域的两条曲线)。
所以我选择unbounded coords=jump
(比如这里)
\addplot[red, domain=-20:20] {f(x)}; % works not :(
但他给出了错误! Missing number, treated as zero.
有可能吗?
\documentclass[margin=5pt, tikz]{standalone}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}[
trig format=rad,
declare function={
a=7;
b=-2;
c=5;
f(\x)=acos(a/\x)+acos(b/\x)+acos(c/\x)-pi;
m=max(a,b,c);
},
]
\begin{axis}[
axis lines=middle,
samples=222,
xmin=-20,
unbounded coords=jump,
]
\addplot[blue, domain = m:20] {f(x)}; % works :)
%\addplot[red, domain=-20:20] {f(x)}; % works not :(
\end{axis}
\end{tikzpicture}
\end{document}
答案1
acos
如果其参数的绝对值大于 1,则未定义。您可以定义一个“正则化”版本,例如,inf
如果参数没有意义,则产生结果。
\documentclass[margin=5pt, tikz]{standalone}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}[
trig format=rad,
declare function={
a=7;
b=-2;
c=5;
Acos(\x)=(abs(\x)>1?inf:acos(max(-1,min(1,\x))));
f(\x)=Acos(a/\x)+Acos(b/\x)+Acos(c/\x)-pi;
m=max(a,b,c);
},
]
\begin{axis}[
axis lines=middle,
samples=222,
xmin=-20,
unbounded coords=jump,
]
%\addplot[blue, domain = m:20] {f(x)}; % works :)
\addplot[red, domain=-20:20] {f(x)}; % works :)
\end{axis}
\end{tikzpicture}
\end{document}
答案2
您可以使用参数图。问题是和f(-m)
不是f(m)
无限的,所以线被插值了。
\documentclass[margin=5pt, tikz]{standalone}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}[
trig format=rad,
declare function={
a=7;
b=-2;
c=5;
f(\x)=acos(a/\x)+acos(b/\x)+acos(c/\x)-pi;
m=max(a,b,c);
g(\t)=ifthenelse(\t>0,\t+m,\t-m);
}]
\begin{axis}[
variable=t, domain=-20:20, no markers,
axis lines=middle,
samples=222,% overkill
xmin=-20,
xmax=20,
unbounded coords=jump
]
\addplot[blue,coordinate] ({g(t)},{f(g(t))});
\end{axis}
\end{tikzpicture}
\end{document}