绘制余弦波的总和

绘制余弦波的总和

我需要画一个由这些余弦波相加而成的波

在此处输入图片描述

这是我在 LuaLaTeX 中的尝试:

\documentclass{article}

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

\usepackage{luacode}
\begin{luacode*}

function p(x)
    assert(x == math.floor(x), "x must be an integer")
    res = 0
    for W = 0, 4000 do
        res = res + (1/2) * (1 + math.cos(2*math.pi*x*W))
    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}

我期望的图形形状具有中心绝对最大值,局部最大值随着中心最大值的远离而减小

在此处输入图片描述

图表未显示任何内容

答案1

我仍然不是现在使用 LuaLaTeX 的酷孩子之一。此解决方案将使用纯 LaTeX(即 pdflatex)完成。

我使用了tikzmathTikZ 库,不需要 PGFPlots。另外,我不知道您是否真的需要1+在求和中,因为它只会将图形向上移动,但您可以根据需要自定义以下内容。也许\n = 6

\documentclass{standalone}

\usepackage{tikz}
\usetikzlibrary{math}

\begin{document}

\begin{tikzpicture}[scale=.5]
    \tikzmath{
        function f(\x, \n) {
            %\y = \n+1;
            \y = 0;
            for \i in {0,...,\n} {
                \y = \y + cos(deg(2 * pi * \x) * \i);
            };
            \y = \y / 2;
            return \y;
        };
    }
    \draw[->] (-5,0) -- (5,0) node[below] {\(x\)};
    \draw[->] (0,-1) -- (0,4) node[left] {\(p(x)\)};
    \draw[domain=-4:4, samples=201, smooth] plot (\x, {f(\x,6)});
\end{tikzpicture}

\end{document}

在此处输入图片描述


回答评论:这实际上应该有效,你只需要添加use fpu=false,正如你所说(另请参阅此问题)。

\documentclass[convert]{standalone}

\usepackage{tikz}
\usepackage{pgfplots}
\usetikzlibrary{math}

\begin{document}

\begin{tikzpicture}[scale=.5]
    \tikzmath{
        function f(\x, \n) {
            %\y = \n+1;
            \y = 0;
            for \i in {0,...,\n} {
                \y = \y + cos(deg(2 * pi * \x) * \i);
            };
            \y = \y / 2;
            return \y;
        };
    }
    \begin{axis}[use fpu=false]
        \addplot[domain=-4:4, samples=201] {f(x,6)};
    \end{axis}
\end{tikzpicture}

\end{document}

在此处输入图片描述

相关内容