如何在 tikz 图中使用求和

如何在 tikz 图中使用求和

我需要使用 tikz 绘制此函数,但我不知道如何在 tikz 中使用求和。如果有人能帮助我,我将不胜感激。 功能 我的代码是这样的:

\documentclass{article}

\usepackage{pgfplots}
\usepackage{tikz}

\usepackage[paperwidth=20cm, paperheight=10cm, margin=0.0cm]{geometry}

\begin{document}
\hspace{-0.4cm}    
\begin{tikzpicture}[
  declare function={p(\k,\n) =((\n!*(\k*(\k-1)))/((\n^(\k))*((\n-(\k-
1))!)));}
                    ]
\begin{axis}[axis lines=middle, grid=both, width=20cm, height=10cm, grid 
style={line width=.2pt, draw=gray!10},major grid style={line 
width=.3pt,draw=gray!50},
            xlabel=$k$, ylabel=$y$, 
            ylabel style={anchor=south},
            xlabel style={anchor=west},
            ymax=1, xmax=21.5,
            domain=0:21.5, samples at={0,...,21},
                    ]
\addplot+ [blue, thick, mark size={1.6pt}, mark options={draw=blue, 
fill=white!75!cyan}] {p(x,20)};
\end{axis}
\end{tikzpicture}

\end{document}

这绘制了 x 的函数,但我不知道如何对从 k=2 到 x+1 的函数求和。

答案1

你可以使用 Lua 来计算和。然后你当然要使用 LuaLaTeX 来排版。

\documentclass{article}

\usepackage{pgfplots}
\pgfplotsset{compat=newest}

\usepackage{luacode}
\begin{luacode*}
function factorial(n)
    assert(n >= 0, "Factorial is only valid for positive integers")
    if n == 0 then
        return 1
    end
    return n*factorial(n-1)
end

function p(x)
    assert(x == math.floor(x), "x must be an integer")
    res = 0
    for k = 2, x+1 do
        res = res + factorial(x)/factorial(x-(k-1)) * k*(k-1)/(x^k)
    end
    tex.sprint(res)
end
\end{luacode*}

\begin{document}

\begin{tikzpicture}[
  declare function={p(\n) = \directlua{p(\n)};}
  ]
  \begin{axis}[
    use fpu=false, % very important!
    xlabel=$x$, ylabel=$p(x)$,
    samples at={0,...,21},
    only marks,
    ]
    \addplot {p(x)};
  \end{axis}
\end{tikzpicture}

\end{document}

在此处输入图片描述

相关内容