tikz 中的 cdf,绘制错误的值

tikz 中的 cdf,绘制错误的值

我正在尝试在 tikz 中绘制 cdf,但是它绘制了错误的值,我不知道原因。

\documentclass{article

\usepackage{pgfplots}
\usepackage{tikz}

\begin{document}
\begin{tikzpicture}[
declare function={p(\k,\n) = 1-((\n!)/((\n^(\k))*((\n-\k)!)));}
                    ]
\begin{axis}[axis lines=middle, 
            xlabel=$k$, ylabel=$y$, 
            ylabel style={anchor=south},
            xlabel style={anchor=west},
            ymax=1.2, xmax=12.5,
            domain=0:12.5, samples at={0,...,12},
            no markers
                    ]
\addplot+ [ycomb, red, very thick] {p(x,2)}; % <----
\end{axis}
\end{tikzpicture}

\end{document}}

这是 k 次试验中重复结果的概率,有 n 种可能结果。当 n=2 时,如果 k 为 3 或更大,则概率显然必须为 1,但 tikz 并未绘制此图。

Latex 图

该函数在 wolfram alpha 中应具有完全相同的方程:

正确的情节

答案1

pgfplots只能计算n!非负数n,因此必须n单独处理负数情况。在这个简单情况下,将所有项乘以阶乘即可(\n>=\k)

\documentclass{article}

\usepackage{pgfplots}
\usepackage{tikz}

\begin{document}
\begin{tikzpicture}[
  declare function={p(\k,\n) = 1-(\n>=\k)*((\n!)/((\n^(\k))*((\n-\k)!)));}
                    ]
\begin{axis}[axis lines=middle, 
            xlabel=$k$, ylabel=$y$, 
            ylabel style={anchor=south},
            xlabel style={anchor=west},
            ymax=1.2, xmax=12.5,
            domain=0:12.5, samples at={0,...,12}
                    ]
\addplot+ [ycomb, red, very thick] {p(x,2)};
\end{axis}
\end{tikzpicture}

\end{document}

给出以下内容(为了清楚起见,我添加了一些标记):

在此处输入图片描述

相关内容