![任意曲线下的面积 tikz](https://linux22.com/image/444303/%E4%BB%BB%E6%84%8F%E6%9B%B2%E7%BA%BF%E4%B8%8B%E7%9A%84%E9%9D%A2%E7%A7%AF%20tikz.png)
我用它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 术语中,这意味着在坐标和绘图语句中交换第一个和第二个参数。