通过求和定义的函数可视化

通过求和定义的函数可视化

我多次访问过这个网站,希望能找到问题的答案,而且很多时候我都找到了我所寻找的东西,所以首先感谢那些分享知识的专家。

我最后还是有一个问题没法解决:我需要在足够大的X域。捕捉实部和虚部其实并不让我害怕,因为我可以很容易地从公式中找到它们,但问题是如何从求和中得到图形。

我在这里找到了类似问题的答案如何在 tikz 图中使用求和但是我是一个对最深层编码充满热情但不切实际的人,我不知道如何消除变量应该是整数的条件,因为我想要一个实数,具有一定的域和样本数。

因此,感谢所有能够提供帮助的人,祝大家有美好的一天!

放入图中的函数

编辑:感谢语法更正。正如评论中所建议的那样,我分享了我的尝试,但我批评它是第一次,因为我能做的最好的就是复制上面链接中给出的答案,将其用作“基础”,并进行我认为必要的所有修改。我使用 LaTeX 已经快两年了,我知道 TikZ 和 PgfPlots 的基础知识,可以制作漂亮的图形,但我从来没有用 Lua 编码的必要性。所以代码如下

\pgfplotsset{compat=newest}
\usepackage{luacode}
\begin{luacode*}
function p(x)
    assert(x == math.floor(x), "x must be an integer")
    res = 0
    for k = -100, 100 do
        res=res+((cos(k*x)*k+sin(x*k))/(k^2+1))
    end
   tex.sprint(res)
end
\end{luacode*}

\begin{document}

\begin{tikzpicture}[
  declare function={p(\n) = \directlua{p(\n)};}
  ]
  \begin{axis}[
    use fpu=false, 
    xlabel=$x$, ylabel=$p(x)$,
    domain=0:40,
    samples=50,
    only marks,
  ]
    \addplot {p(x)};
  \end{axis}
\end{tikzpicture}
\end{document}

我完全知道抄袭别人的代码不是最好的选择,但我现在不知道该怎么做。所以我接受每一个建议,甚至包括去学习那种编程语言的建议:我只是想了解我需要哪些工具来提高 LaTeX 水平并解决与问题相关的问题。

谢谢大家。

答案1

您不一定需要lualatex这些总和。另外,我不明白您是如何得出想要绘制的表达式的,我的结果有些不同,如下所示。以下代码有一个新函数sum。您可以summand通过同名的键定义。它被假定为求和索引(\k,比如)和绘图变量(\x,比如)的函数,按该顺序排列。(我必须将其存储在 pgf 键中,因为pgfplotstikz以不同的方式处理传递给函数的字符串类型参数。我选择这个是因为它可以转换为纯 TiZ 很容易。)因此,为了绘制总和,您需要定义被加数,例如

declare function={imp(\k,\x)=-2*cos(\k*\x)/(1+\k*\k);}

然后可以说

\addplot+[summand=imp] {-1+sum(100,\x)};

接下来我会发布完整的例子以及我得到的实部和虚部结果。

\documentclass[fleqn]{article}
\usepackage[margin=1in]{geometry}
\usepackage[sumlimits]{amsmath}
\DeclareMathOperator{\re}{Re}
\DeclareMathOperator{\im}{Im}
\usepackage{pgfplots}
\pgfplotsset{compat=1.16}
\newcounter{isum}
\pgfplotsset{summand/.initial=max}
\pgfmathdeclarefunction{sum}{2}{%
\begingroup%
\pgfkeys{/pgf/fpu,/pgf/fpu/output format=fixed}%
\edef\myfun{\pgfkeysvalueof{/pgfplots/summand}}%
\pgfmathsetmacro{\mysum}{0}%
\pgfmathsetmacro{\myx}{#2}%
\pgfmathtruncatemacro{\imax}{#1}%
\setcounter{isum}{1}%
\loop
\pgfmathsetmacro{\mysum}{\mysum+\myfun(\value{isum},#2)}%
\ifnum\value{isum}<\imax\relax
\stepcounter{isum}\repeat
\pgfmathparse{\mysum}%
\pgfmathsmuggle\pgfmathresult\endgroup%
}%
\begin{document}
\begin{align}
 p(x)&=\sum_{k=-\infty}^\infty\frac{\mathrm{e}^{\mathrm{i}\,k\,x}}{k+\mathrm{i}}
 \notag\\
 &=\frac{1}{\mathrm{i}}+\sum_{k=1}^\infty\left(
    \frac{\mathrm{e}^{\mathrm{i}\,k\,x}}{k+\mathrm{i}}
    +
    \frac{\mathrm{e}^{-\mathrm{i}\,k\,x}}{-k+\mathrm{i}}\right)\notag\\
 &=\frac{1}{\mathrm{i}}+\sum_{k=1}^\infty
    \frac{(\mathrm{i}-k)\,\mathrm{e}^{\mathrm{i}\,k\,x}+(\mathrm{i}+k)\,\mathrm{e}^{-\mathrm{i}\,k\,x}}{
    -(1+k^2)}\notag\\
 &=-\mathrm{i}-\mathrm{i}\,\sum_{k=1}^\infty\frac{2\,\cos(k\,x)}{(1+k^2)}
 +\sum_{k=1}^\infty\frac{2k\,\sin(k\,x)}{(1+k^2)}\;,
\end{align}
so
\begin{subequations}
\begin{align}
 \re p(x)&=\sum_{k=1}^\infty\frac{2k\,\sin(k\,x)}{(1+k^2)}\;,\\
 \im p(x)&=-1-\sum_{k=1}^\infty\frac{2\,\cos(k\,x)}{(1+k^2)}\;.
\end{align}
\end{subequations}
\begin{figure}[htb]
\centering
\begin{tikzpicture}[declare function={imp(\k,\x)=-2*cos(\k*\x)/(1+\k*\k);
    rep(\k,\x)=2*\k*sin(\k*\x)/(1+\k*\k);},/pgfplots/trig format plots=rad]
  \begin{axis}[xlabel=$x$, ylabel={},
    domain=1:40,
    samples=51,
    no markers,
    smooth,
  ]
    \addplot+[summand=rep] {sum(100,\x)};
    \addplot+[summand=imp] {-1+sum(100,\x)};
    \legend{$\re p(x)$,$\im p(x)$}
  \end{axis}
\end{tikzpicture}
\end{figure}
\end{document}

在此处输入图片描述

相关内容