如何在 pgfplots 中繪製小函數值?

如何在 pgfplots 中繪製小函數值?

我試圖視覺化 pgfplots 中的兩個函數,但我無法在這兩個函數在同一點結束時得到主要資訊。我怎麼能改變這種行為,最好不需要額外的外在工具?

這是我的小例子:

\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}

輸出如下:

在此輸入影像描述

理想情況下,兩個函數都將精確地結束於 (1,0),但即使有大量樣本或明確給出 x 值 1.0,我也無法接近。我嘗試使用 gnuplot 替代,但遇到了中提到的問題使用 gnuplot 提高 pfgplots 精確度,pgfplots 不會丟棄 gnuplot 中的無界座標。

對於恰好為 1/2 的指數,sqrt 函數會產生更好的結果,但僅適用於這種特殊情況。

有任何想法嗎?

答案1

您可以使用sqrt函數來取代 0 的 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}

在此輸入影像描述

相關內容