
Quiero trazar
acos(7/x)+acos(-2/x)+acos(5/x)-pi
más domain=-20:20
.
Me pregunto si puedo trazar esto comounocurva(no como dos curvas con dominios diferentes).
Entonces elijo unbounded coords=jump
(comoaquí)
\addplot[red, domain=-20:20] {f(x)}; % works not :(
pero me da el error! Missing number, treated as zero.
¿Hay alguna posibilidad?
\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}
Respuesta1
acos
no está definido si el valor absoluto de su argumento es mayor que 1. Puede definir una versión "regularizada" que produzca, por ejemplo, inf
si el argumento no tiene sentido.
\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}
Respuesta2
Puedes utilizar un gráfico paramétrico. El problema es que f(-m)
y f(m)
NO son infinitos, por lo que la línea se interpola.
\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}