我正在尝试在 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 并未绘制此图。
该函数在 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}
给出以下内容(为了清楚起见,我添加了一些标记):