tikz 中导数的几何解释

tikz 中导数的几何解释

我正在使用 tikz 尝试制作一张与此类似的图片

在此处输入图片描述

但我在生成点和斜率时遇到了一些问题。这是我的代码

\begin{tikzpicture}
\draw[very thin,color=gray!30] (0,0)
   grid[xstep=0.3, ystep=0.3] (2.7,2.7);
  \draw[->, line width=1pt] (0,0) -- (2.85,0)
    node[below] {$x$};
  \draw[->, line width=1pt] (0,0) -- (0,2.85)
    node[left] {$u$};
      \draw[domain=-0:2.1,smooth,variable=\x,blue] plot ({\x},{(\x-1)^3+1});
\node[circle,fill,inner sep=1.1pt,outer sep=-1pt] at (1.08,1) {};
\node[circle,fill,inner sep=1.1pt,outer sep=-1pt] at (0.32,0.7) {};
\node[circle,fill,inner sep=1.1pt,outer sep=-1pt] at (1.91,1.73) {};
  \draw[dashed,color=red!75!black] (0.32,0) node[below] {\fontsize{0.1}{0.1}$u_{n-1}$}-- ( 0.32,0.64);
  \draw[dashed,color=red!75!black] (1.91,0) node[below] {\fontsize{0.1}{0.1}$u_{n+1}$}-- ( 1.91,1.68);
  \draw[dashed,color=red!75!black] (1.08,0) node[below] {\fontsize{0.1}{0.1}$u_{n}$}-- ( 1.08,0.94);
  \draw[dashed,color=green!45!black,thick] (0.15,0.85)-- ( 2.5,1.37);
    \end{tikzpicture}

这是我的结果

在此处输入图片描述

正如我所说,我在制作斜坡时遇到了问题。有什么建议可以让我更有效地定位它们吗?

答案1

你的函数在 1 处有一个鞍点。你可能想要一个具有正斜率和负斜率的函数。这可以通过添加 来实现(negative constant)*\x。我还让 TiZ 计算y各个点的值,为此我使用declare function

\documentclass[tikz,border=3.14pt]{standalone}
\usetikzlibrary{calc}
\begin{document}
\begin{tikzpicture}[scale=3,declare function={f(\x)=(\x-1)^3-0.4*\x+1.5;}]
\draw[very thin,color=gray!30] (0,0)
   grid[xstep=0.3, ystep=0.3] (2.7,2.7);
  \draw[->, line width=1pt] (0,0) -- (2.85,0)
    node[below] {$x$};
  \draw[->, line width=1pt] (0,0) -- (0,2.85)
    node[left] {$u$};
\draw[domain=-0:2.1,smooth,variable=\x,blue] plot ({\x},{f(\x)});
\foreach \X/\Y in {0.3/{$u_{n-1}$},1/{$u_{n}$},1.5/{$u_{n+1}$}}
{\fill (\X,{f(\X)})  circle(1pt);
\draw[dashed,color=red!75!black] (\X,{f(\X)}) -- (\X,0)
node[below,font=\footnotesize]{\Y};}
\draw[thick] ($(1,{f(1)})-0.75*(1,-0.4)$) --
($(1,{f(1)})+0.75*(1,-0.4)$) node[below right]{exact};
\draw[dashed,color=green!45!black,thick] (1,{f(1)}) -- ++($1.5*(0.3,{f(0.3)})-1.5*(1,{f(1)})$)
node[left]{backward} (1,{f(1)})-- ++($-0.5*(0.3,{f(0.3)})+0.5*(1,{f(1)})$);
\draw[dashed,color=green!45!black,thick] (1,{f(1)}) -- ++($1.5*(1.5,{f(1.5)})-1.5*(1,{f(1)})$)
node[below right]{forward} (1,{f(1)}) -- ++($-0.5*(1.5,{f(1.5)})+0.5*(1,{f(1)})$);
\draw[dashed,color=purple,thick] (0.3,{f(0.3)}) 
++($1.25*(1.5,{f(1.5)})-1.25*(0.3,{f(0.3)})$) node[above right]{central}
-- ++($-1.5*(1.5,{f(1.5)})+1.5*(0.3,{f(0.3})$);
\end{tikzpicture}
\end{document}

在此处输入图片描述

(我同意@CarLaTeX的观点,水平标签有点“令人惊讶”,但这很容易改变。)

相关内容