绘制当前值较大的函数 - pgfplots

绘制当前值较大的函数 - pgfplots

我有两个函数的高斯图

f(x) = exp(- x^2 / (2 * (0.5)^2))

g(x) = exp(- (x - 2)^2 / (2 * (0.5)^2))

地块

我现在尝试将这两个函数“加在一起”形成一个图,该图沿着从 -∞ 到 1 的绿线,与红线相交,从 1 到 +∞ 应该沿着红线。这样得到的图看起来有点像一个非常弯曲的字母

从数学上来说,我想要绘制的这个函数可以描述如下:

       | f(x) if f(x) ≥ g(x)
R(x) = |
       | g(x) if g(x) > f(x)

我怎样才能把它放入pgfplots情节中?

平均能量损失

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{tikz}
\usepackage{pgfplots}

\begin{document}

\begin{tikzpicture}
    \begin{axis}
        \addplot[samples = 100, domain = -2:4] {
            exp(- x^2 / (2 * (0.5)^2))
        };
        \addplot[samples = 100, domain = -2:4] {
            exp(- (x-2)^2 / (2 * (0.5)^2))
        };
    \end{axis}
\end{tikzpicture}

\end{document}

答案1

我对 有点困惑h(x)。假设它与 相同f(x),你可以这样做。

\documentclass[tikz,border=3.14pt]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\tikzset{declare function={f(\x) = exp(- \x^2 / (2 * (0.5)^2));},
declare function={g(\x) = exp(- (\x - 2)^2 / (2 * (0.5)^2));}
}

\begin{document}

\begin{tikzpicture}
    \begin{axis}[domain=-3:5,samples=100]
        \addplot[red,thick,no marks] {f(x)};
        \addplot[green!50!black,thick,no marks] {g(x)};
        \addplot[blue,thick,no marks] {ifthenelse(f(x)>g(x),f(x),g(x))};
    \end{axis}
\end{tikzpicture}

\end{document}

在此处输入图片描述

答案2

为了简化您的问题:您想要做的R(x) = max(f(x),g(x))事情当然也可以在 TikZ 中完成,因此也可以在 PGFPlots 中完成……

我稍微扩展了您的示例,以展示在您拥有超过 2 个功能的情况下此解决方案的优势。

% used PGFPlots v1.16
\documentclass[border=5pt]{standalone}
\usepackage{pgfplots}
    \pgfplotsset{
        /pgf/declare function={
            % declare a "master function" ...
            a(\x,\b) = exp(- (\x + \b)^2 / (2 * (0.5)^2));
            %
            % ... this allows to easily create the other functions
            f(\x) = a(\x,0);
            g(\x) = a(\x,-1);
            h(\x) = a(\x,-2);
        },
    }
\begin{document}
\begin{tikzpicture}
    \begin{axis}[
        domain=-2:4,
        smooth,
    ]
        \begin{scope}[
            ultra thick,
            no markers,
        ]
            \addplot {f(x)};
            \addplot {g(x)};
            \addplot {h(x)};
        \end{scope}

        \addplot [mark=*,green] {max(f(x),g(x),h(x))};
    \end{axis}
\end{tikzpicture}
\end{document}

该图显示了上述代码的结果

相关内容