Estou tentando visualizar duas funções em pgfplots e não consigo transmitir minha mensagem principal de que ambas terminam no mesmo ponto. Como posso mudar esse comportamento, de preferência sem ferramentas externas adicionais?
Aqui está meu pequeno exemplo:
\documentclass[tikz]{standalone}
\usepackage{tikz,pgfplots}
\pgfplotsset{compat=1.8}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
xmin=0.0,
xmax=2,
ymin=0,
ymax=1.75,
axis x line=bottom,
axis y line=left,
xlabel=control parameter $r$,
ylabel=energy $(J)$,
ytick={}, yticklabels={},
xtick={1},
xticklabels={1},
restrict x to domain=0:2,
]
\addplot+[smooth,no marks, samples at={1.0,0.999,0.99,0.96,...,0.001,0}] {1.12*(1-x)^0.5};
\addplot+[smooth, densely dashed, no marks,samples=1000]{1.75*(1-x)^0.5};
\end{axis}
\end{tikzpicture}
\end{document}
Com a seguinte saída:
Idealmente, ambas as funções terminariam exatamente em (1,0), mas mesmo com um grande número de amostras ou fornecendo explicitamente o valor x de 1,0, não consigo chegar perto. Tentei usar o gnuplot como alternativa, mas encontrei o problema mencionado emMelhore a precisão do pfgplots com gnuplot, que o pgfplots não descarta coordenadas ilimitadas do gnuplot.
Para um expoente de exatamente 1/2, a função sqrt produz melhores resultados, mas só funciona neste caso especial.
Alguma ideia?
Responder1
Você pode usar sqrt
a função em vez de elevar zero à potência de 0,5.
\documentclass{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.8}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
xmin=0.0,
xmax=2,
ymin=0,
ymax=1.75,
axis x line=bottom,
axis y line=left,
xlabel=control parameter $r$,
ylabel=energy $(J)$,
ytick=\empty,
xtick={1},
xticklabels={1},
restrict x to domain=0:2,
]
\addplot+[smooth,no marks, samples at={1.0,0.999,0.99,0.96,...,0.001,0}] {1.12*sqrt(1-x)};
\addplot+[smooth, densely dashed, no marks,samples=1000]{1.75*sqrt(1-x)};
\end{axis}
\end{tikzpicture}
\end{document}