威布尔密度图(尺寸太大)

威布尔密度图(尺寸太大)

我只想绘制参数为 10 和 1 的威布尔密度图。但是 pgfplot 给出了dimensions too large错误。restrict y to domain没有帮助。
有什么帮助吗?

\documentclass{standalone}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
[declare function={f(\x,\a,\b)= (\a/\b)*(\x/\b)^(\a-1)*exp(-(\x/\b)^\a);}]
\begin{axis}[samples=150]
\addplot[color=blue]{f(x,10,1)};
\end{axis}                   
\end{tikzpicture}
\end{document}

答案1

正如评论中提到的,LaTeX 无法处理您在计算过程中获得的值。但您可以使用它gnuplot来进行计算。请在以下代码中找到两种方法。首先使用函数raw gnuplot,其次“仅”gnuplot使用先前定义的命令\Weibull

% used PGFPlots v1.14 and gnuplot v5.0 patchlevel 3
\documentclass[border=5pt]{standalone}
\usepackage{pgfplots}
\begin{document}
    \begin{tikzpicture}
            \newcommand*\Weibull[3]{(#2/#3)*(#1/#3)^(#2-1)*exp(-(#1/#3)^#2)}
        \begin{axis}[
            smooth,
        ]
            \addplot [color=blue,very thick] gnuplot [raw gnuplot] {
                % set number of samples
                set samples 100;
                f(x,a,b)= (a/b)*(x/b)**(a-1)*exp(-(x/b)**a);
                plot [x=0:2] f(x,10,1);
            };
            \addplot [color=red,very thick,dashed,samples=100,domain=0:2]
                gnuplot {\Weibull{x}{10}{1}};
        \end{axis}
    \end{tikzpicture}
\end{document}

该图显示了上述代码的结果

相关内容