使用 Latex 渲染圖

使用 Latex 渲染圖

我很好奇如何渲染一張像我所包含的那樣的圖片。在此輸入影像描述

如果這是一個新手問題,我很抱歉,但我花了相當多的時間嘗試用 tikz 模仿類似的東西。

答案1

這是為了給你一個開始。間隔邊界的位置x儲存在清單中。

\documentclass[tikz,border=3mm]{standalone} 
\begin{document}
\begin{tikzpicture}[declare function={f(\x)=0.4+0.2*sin(\x*120)+0.05*\x;}]
 \def\mylist{0,3,4.5,5.75,7.5}
 \draw[dashed]foreach \X in \mylist { (\X,-0.2) -- (\X,2)};
 \draw plot[domain={{\mylist}[0]}:{{\mylist}[1]},smooth] 
    (\x,{f(\x)});
 \draw plot[domain={{\mylist}[1]}:{{\mylist}[2]},smooth] 
    (\x,{0.7-1/(\x-{\mylist}[3])});
 \draw plot[domain={{\mylist}[2]}:{{\mylist}[3]},smooth] 
    (\x,{0.6*(\x-{\mylist}[2])+0.6});
 \draw plot[domain={{\mylist}[3]}:{{\mylist}[4]},smooth] 
    (\x,{-0.2*pow(\x-({\mylist}[3]+{\mylist}[4])/2,2)+0.5});
 \draw plot[domain={{\mylist}[0]-1}:{{\mylist}[0]},smooth] 
    (\x,{-0.2*pow(\x-(2*{\mylist}[0]-1)/2,2)+1});
 \draw ({min(\mylist)-2},0) -- ({max(\mylist)+1},0);
 \draw[red,stealth-] ({{\mylist}[0]},{f({\mylist}[0])}) -- ++ (-1,0.25)
  node[left]{$v^+_{j-\frac{1}{2}}$};
 \draw[red,stealth-] ({{\mylist}[1]},{f({\mylist}[1])}) -- ++ (-1,1)
  node[above left]{$v^-_{j+\frac{1}{2}}$};
 \path ({{\mylist}[0]},-0.2) node[below]{$x_{j-\frac{1}{2}}$}
    ({{\mylist}[1]},-0.2) node[below]{$x_{j+\frac{1}{2}}$};
\end{tikzpicture}
\end{document}

在此輸入影像描述

相關內容