如何获取特定函数的多个图?

如何获取特定函数的多个图?

我试图了解如何从一组函数中获取多个绘图,并将它们绘制在同一个窗口中而不会造成混乱;IE、边框、轴、网格等等……例如,假设我想在同一窗口中绘制 100 个函数集,S = {f : f(x)=sin(4*(x-i))/(x-i)+cos(2*i)sin(3*i) 0<i<=5 i∈{0.05, 0.10, ... , 5.0}}并且不会杂乱,这样我就可以旋转、缩放等,最终将其作为“水印”背景,以对角线方式飞过文档。我确信,只要对函数进行足够的调整,它看起来会非常棒,但让我们举个例子S


我有一些 C++ 代码——这只是一个简单的for循环——它可以帮助我创建函数列表——你知道,元编程,编写代码来编写代码。一旦我弄清楚 LaTeX 中函数绘图的一般形式是什么样的,这个问题的元编程方面就会变得相当简单——我以前从未使用 LaTeX 绘制过任何东西。


我怎样才能用这些图表替换图像?

\backgroundsetup{%
  scale=5.75,       %% change accordingly
  angle=25,       %% change accordingly
  opacity=.1,    %% change accordingly
  color =black,  %% change accordingly
  contents={\begin{tikzpicture}[remember picture,overlay]
        \node at ([yshift=12.5pt,xshift=5pt]current page.center) {\includegraphics[width=5cm]{wave.jpg}};%\includegraphics[width=5cm]{wave.jpg}
    \end{tikzpicture}}
}

答案1

\documentclass[pstricks]{standalone}
\usepackage{pst-plot}

\begin{document}

\begin{pspicture}(0,-2)(10,5)
 \multido{\ri=0.05+0.10,\iA=0+1}{100}{%
  \psplot[algebraic,plotpoints=1000,linecolor=blue!\iA]%
    {0}{10}{ sin(4*(x-\ri))/(x-\ri)+cos(2*\ri)*sin(3*\ri)}}
\end{pspicture}

\end{document}

在此处输入图片描述

答案2

不可否认,pstricks对于这种事情来说它更有效率,因为它可以直接为函数编写后记代码,而 TikZ/pgf在编译时计算所有点的坐标时会浪费时间。

但尽管如此,解决方案很简单TikZ

\documentclass{standalone} 
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}[samples=400,domain=0:10,black!25]
\foreach \i in {0.05,0.10,...,10.00}
  \draw plot %
    (\x,{sin(4*(\x-\i)*180/pi)/(\x-\i)+cos(2*\i*180/pi)*sin(3*\i*180/pi)});
\end{tikzpicture}
\end{document}

在此处输入图片描述

答案3

下面是使用 Asymptote 创建与页面宽度完全相同的背景图像的示例。(如果页面尺寸不同,则高度会缩小,就像当前编写的代码一样。)由于 C++ 似乎是您的首选语言,您可能会喜欢 Asymptote 语法的相似性,尤其是与 之类的东西相比\multido

这应该在启用该选项的情况下进行编译shell-escape

\documentclass{article}
\usepackage{lipsum} %for dummy text only.
\usepackage{asypictureB}
\usepackage{background}

\backgroundsetup{scale = 1, anchor, angle = 0, position = current page.center,
            contents={\includegraphics{background-image.pdf}}}

\title{Title}
\author{Author}
\date{\today}

\begin{document}
\maketitle
%
\begin{asypicture}{name=compile_background}
settings.outformat = "pdf";
size(@the@paperwidth, @the@paperheight);
import graph;
// Deal with what happens when denominator equals 0:
real sinc(real x) { 
    if (x == 0) return 1;
    else return sin(x)/x;
}
for (real i = 0.05; i <= 10; i += 0.05) {
    real f(real x) {
        return 4*sinc(4*(x-i)) + cos(2i)*sin(3i);
    }
    path g = graph(f, 0, 10, n=400, operator ..);
    draw(g, 0.25*black + 0.75*white);
}
shipout(prefix="background-image");
\end{asypicture}
%
\lipsum[2-11]
\end{document}

结果(仅第一页):

在此处输入图片描述

答案4

已编辑,不显示轴。

这对你有什么用处?

\documentclass{article} 

% Declare initial packages
\usepackage{pgfplots}

% Normal distribution macro
\pgfmathdeclarefunction{gauss}{2}{%
  \pgfmathparse{1/(#2*sqrt(2*pi))*exp(-((x-#1)^2)/(2*#2^2))}%
}

\begin{document}

\begin{tikzpicture}
\begin{axis}[
      hide x axis,
      hide y axis,
      no markers, 
      domain=2.5:25.5, 
      samples=100,
      xlabel=\empty, 
      ylabel=\empty,
      every axis x label/.style={at=(current axis.right of origin),anchor=west},
      every axis y label/.style={at=(current axis.above origin),anchor=south},
      height=5cm, width=12cm,
      xmin = 4, xmax=24,
      xtick={14}, ytick=\empty,
      enlargelimits=false, 
      clip=false,
      grid=major
  ]

        \foreach \k in {5,6,...,14} {%
  \addplot [very thick,cyan!50!black] {gauss(\k,3.416969)};
  }
\end{axis}
\end{tikzpicture}

\end{document}

相关内容