任意曲线下的面积 tikz

任意曲线下的面积 tikz

我用它tikz来创建两条任意曲线并填充它们之间的区域。我想做的是:

在此处输入图片描述

这是我的方法:

\documentclass{standalone}
\usepackage{amsmath}
\usepackage{tikz}

\begin{document}

\begin{tikzpicture}[line join=round]
\draw [-latex,thick] (-0.5,0)  -- (4.5,0) node[below]{$x$};
\draw [-latex,thick] (0,-0.5)  -- (0,3.5) node[left]{$y$};

\draw [fill=white!50!blue,opacity=0.3, smooth,samples=100,domain=0.5:3.5] plot(\x, {sin(\x*200)*0.25+0.5}) -- plot(\x, {sin(\x*200)*0.25+2.5}) -- cycle; 

\draw (0,0) node[below left]{$0$} ;
\draw (2,1.5) node[]{$D$} ;
\draw [blue, domain=-0.25:4, smooth, variable=\x] plot (\x, {sin(\x*200)*0.25+0.5});
\draw [blue, domain=-0.25:4, smooth, variable=\x] plot (\x, {sin(\x*200)*0.25+2.5});
\draw [blue] (0.5,-0.25) -- (0.5,3) ;
\draw [blue] (3.5,-0.25) -- (3.5,3);
\draw (0.5,0) node[below left]{$a$} ;
\draw (3.5,0) node[below right]{$b$};
\draw (4,3) node[right]{$y=\psi(x)$} ;
\draw (4,1) node[right]{$y=\varphi(x)$};
\end{tikzpicture}

\end{document}

我得到的是:

在此处输入图片描述

我不知道如何修复这些交叉线。

我也很难sin(\x*200)*0.25+2.5定义轴,得到非常相似的东西:

在此处输入图片描述

答案1

\documentclass[tikz, border=1cm]{standalone}
\begin{document}
\begin{tikzpicture}
\draw [fill=white!50!blue, opacity=0.3, smooth, samples=100, domain=0.5:3.5] plot(\x, {sin(\x*200)*0.25+0.5}) -- plot[domain=3.5:0.5] (\x, {sin(\x*200)*0.25+2.5}) -- cycle; 
\draw[yshift=-3cm, fill=white!50!red, opacity=0.3, smooth, samples=100, domain=0.5:3.5] plot({sin(\x*200)*0.25+0.5},\x) -- plot[domain=3.5:0.5] ({sin(\x*200)*0.25+2.5},\x) -- cycle; 
\end{tikzpicture}
\end{document}

两个阴影区域

答案2

通常,当计算机出现奇怪的现象时,这是因为它正在按照你的指令进行操作。

问题出在这一行:

\draw [fill=white!50!blue,opacity=0.3, smooth,samples=100,domain=0.5:3.5] plot(\x, {sin(\x*200)*0.25+0.5}) -- plot(\x, {sin(\x*200)*0.25+2.5}) -- cycle; 

您已告诉它按照函数 sin(200X)+0.5,然后将其连接到 0.5 到 3.5 的图上,该图遵循函数 sin(200X)+2.5 然后连接到起点。因此,您的区域围合从右下角到左上角,然后从右上角回到左下角。

如何解决这个问题?好吧,你需要告诉 LaTeX 从右到左绘制其中一个函数,而不是从左到右。是时候重温那些尘封的高中代数技能了。我们将\x一个函数中的所有实例替换为4-\x(因为域是 0.5–3.5)。将有问题的行替换为:

\draw [fill=white!50!blue,opacity=0.3, smooth,samples=100,domain=0.5:3.5] plot(\x, {sin(\x*200)*0.25+0.5}) -- plot(4-\x, {sin((4-\x)*200)*0.25+2.5}) -- cycle; 

将会产生预期的结果。

对于第二张图,你实际上是在做一个反函数图,这意味着交换X. 在 TikZ 术语中,这意味着在坐标和绘图语句中交换第一个和第二个参数。

相关内容