我有两个函数的高斯图
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}