楼主: oliyiyi
3882 2

使用 TikZ 画曲线的一阶导数以及动画 [推广有奖]

版主

已卖:2993份资源

泰斗

1%

还不是VIP/贵宾

-

TA的文库  其他...

计量文库

威望
7
论坛币
117070 个
通用积分
31670.9540
学术水平
1454 点
热心指数
1573 点
信用等级
1364 点
经验
384134 点
帖子
9629
精华
66
在线时间
5508 小时
注册时间
2007-5-21
最后登录
2025-7-8

初级学术勋章 初级热心勋章 初级信用勋章 中级信用勋章 中级学术勋章 中级热心勋章 高级热心勋章 高级学术勋章 高级信用勋章 特级热心勋章 特级学术勋章 特级信用勋章

楼主
oliyiyi 发表于 2015-12-18 21:07:10 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
选自:这里。今天忙里偷闲上了下 TeX Stack Exchange,看到一个很赞的帖子,问题的作者应该是个老师,想通过 TikZ 画导数的推导过程,也就是一个动画的过程,坛子上的达人给出了很优秀的回答,有 TikZ\PStricks\MP等等方法,本文选取了 TikZ 的实现方式,供网友学习!




  1. %!TEX program = pdflatex

  2. \documentclass{standalone}

  3. \usepackage{mathpazo}
  4. \usepackage{tikz}
  5. \usetikzlibrary{arrows,intersections}

  6. \begin{document}
  7. % TikZ 设定
  8. \tikzset{thick,
  9.         >=stealth',
  10.         dot/.style={draw,fill=white,circle,inner sep=0pt,minimum size=4pt}
  11.         }

  12. \begin{tikzpicture}
  13.     % 画坐标系 并且定义了 O 、xmax 和 ymax
  14.     \coordinate (O) at (0,0);
  15.     \draw[->] (-0.3,0) -- (8,0) coordinate[label={below:$x$}] (xmax);
  16.     \draw[->] (0,-0.3) -- (0,5) coordinate[label={right:$f(x)$}] (ymax);
  17.     % 给出直线 x 与曲线 y 的路径
  18.     \path[name path=x] (0.3,0.5) -- (6.7,4.7);
  19.     \path[name path=y] plot[smooth] coordinates {(-0.3,2) (2,1.5) (4,2.8) (6,5)};

  20.     % 利用 intersections 包的计算方法,得到了直线与曲线的交点坐标,分别命名为 i-1 和 i-2 (图中分别为 P 和 Q) 过点 P 的水平线与过 Q 的竖直延长线的交点标记为 M.

  21.     \begin{scope}[name intersections = {of= x and y,name = i}]
  22.         % 将PQ所形成的三角形区域(PQM)填充为灰色
  23.         \fill[gray!20] (i-1) -- (i-2 |- i-1) -- (i-2) -- cycle;
  24.         % 在空白处标记 Sekante
  25.         \draw (0.3,0.5) -- (6.7,4.7) node[pos=0.8,below right] {Sekante};
  26.         % 画出曲线路径 y,与之前代码几乎一样
  27.         \draw[red] plot[smooth] coordinates {(-0.3,2) (2,1.5) (4,2.8) (6,5)};
  28.         % 从 P 向 x 轴引垂线,垂足坐标为 (i-1 |- O),标签为 x_0
  29.         \draw (i-1) node[dot,label={above:$P$}] (i-1) {} -- node[left] {$f(x_0)$} (i-1 |- O) node[dot,label={below:$x_0$}] {};
  30.         % Q 点向 M 引垂线
  31.         \path (i-2) node[dot,label={above:$Q$}] (i-2) {} -- (i-2 |- i-1) node[dot,label={right:$M$}] (i-12) {};
  32.         % M 向 x 轴引垂线,并且标注
  33.         \draw (i-12) -- (i-12 |- O) node[dot,label={below:$x_0 + \varepsilon$}] {};
  34.         % 连接 Q 与 M,并且标注
  35.         \draw[blue,<->] (i-2) -- node[right] {$f(x_0 + \varepsilon) - f(x_0)$} (i-12);
  36.         % 连接 P 与 M
  37.         \draw[blue,<->] (i-1) -- node[below] {$\varepsilon$} (i-12);
  38.         % x 轴上两个垂足之间标记
  39.         \path (i-1 |- O) -- node[below] {$\varepsilon$} (i-2 |- O);
  40.         % Q 的水平延长线
  41.         \draw[gray] (i-2) -- (i-2 -| xmax);
  42.         % 标注 Q 点的垂直距离,最精彩的是用到了 xshift=-0.5cm,简直赞!
  43.         \draw[gray,<->] ([xshift=-0.5cm]i-2 -| xmax) -- node[fill=white] {$f(x_0 + \varepsilon)$}  ([xshift=-0.5cm]xmax);
  44.     \end{scope}

  45. \end{tikzpicture}

  46. \end{document}
复制代码

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:Coordinates coordinate intersect Document exchange 动画

缺少币币的网友请访问有奖回帖集合
https://bbs.pinggu.org/thread-3990750-1-1.html

沙发
oliyiyi 发表于 2015-12-18 21:07:48

缺少币币的网友请访问有奖回帖集合
https://bbs.pinggu.org/thread-3990750-1-1.html

藤椅
oliyiyi 发表于 2015-12-18 21:08:39
  1. 我们可以让这个图动起来,参见代码:


  2. %!TEX program = pdflatex

  3. \documentclass{article}

  4. \usepackage{mathpazo}
  5. \usepackage{tikz}
  6. \usetikzlibrary{arrows,intersections}

  7. \begin{document}
  8. % 为了使用 Acrobat 删除外围区域,需要设置没有页码
  9. \pagestyle{empty}
  10. % TikZ 设定
  11. \tikzset{thick,
  12.         > = stealth',
  13.         dot/.style = {draw,fill=white,circle,inner sep=0pt,minimum size=4pt}
  14.         }
  15. \foreach \Q in {4,4.1,4.2,...,5,4.9,4.8,...,4.1} { %<-- added
  16. \begin{tikzpicture}
  17.     % 画坐标系 并且定义了 O 、xmax 和 ymax
  18.     \coordinate (O) at (0,0);
  19.     \draw[->] (-0.3,0) -- (8,0) coordinate[label={below:$x$}] (xmax);
  20.     \draw[->] (0,-0.3) -- (0,5) coordinate[label={right:$f(x)$}] (ymax);
  21.     % 给出直线 x 与曲线 y 的路径
  22.     \path[name path=x] (0.3,0.5) -- (6.7,4.7);
  23.     \path[name path=y] plot[smooth] coordinates {(-0.3,2) (2,1.5) (\Q,2.8) (6,5)}; %<-- modified

  24.     % 利用 intersections 包的计算方法,得到了直线与曲线的交点坐标,分别命名为 i-1 和 i-2 (图中分别为 P 和 Q) 过点 P 的水平线与过 Q 的竖直延长线的交点标记为 M.

  25.     \begin{scope}[name intersections = {of= x and y,name = i}]
  26.         % 将PQ所形成的三角形区域(PQM)填充为灰色
  27.         \fill[gray!20] (i-1) -- (i-2 |- i-1) -- (i-2) -- cycle;
  28.         % 在空白处标记 Sekante
  29.         \draw (0.3,0.5) -- (6.7,4.7) node[pos=0.8,below right] {Sekante};
  30.         % 画出曲线路径 y,与之前代码几乎一样
  31.         \draw[red] plot[smooth] coordinates {(-0.3,2) (2,1.5) (\Q,2.8) (6,5)}; %<-- modified
  32.         % 从 P 向 x 轴引垂线,垂足坐标为 (i-1 |- O),标签为 x_0
  33.         \draw (i-1) node[dot,label={above:$P$}] (i-1) {} -- node[left] {$f(x_0)$} (i-1 |- O) node[dot,label={below:$x_0$}] {};
  34.         % Q 点向 M 引垂线
  35.         \path (i-2) node[dot,label={above:$Q$}] (i-2) {} -- (i-2 |- i-1) node[dot,label={right:$M$}] (i-12) {};
  36.         % M 向 x 轴引垂线,并且标注
  37.         \draw (i-12) -- (i-12 |- O) node[dot,label={below:$x_0 + \varepsilon$}] {};
  38.         % 连接 Q 与 M,并且标注
  39.         \draw[blue,<->] (i-2) -- node[right] {$f(x_0 + \varepsilon) - f(x_0)$} (i-12);
  40.         % 连接 P 与 M
  41.         \draw[blue,<->] (i-1) -- node[below] {$\varepsilon$} (i-12);
  42.         % x 轴上两个垂足之间标记
  43.         \path (i-1 |- O) -- node[below] {$\varepsilon$} (i-2 |- O);
  44.         % Q 的水平延长线
  45.         \draw[gray] (i-2) -- (i-2 -| xmax);
  46.         % 标注 Q 点的垂直距离,最精彩的是用到了 xshift=-0.5cm,简直赞!
  47.         \draw[gray,<->] ([xshift=-0.5cm]i-2 -| xmax) -- node[fill=white] {$f(x_0 + \varepsilon)$}  ([xshift=-0.5cm]xmax);
  48.     \end{scope}

  49. \end{tikzpicture}
  50. \eject %<-- added
  51. }  %<-- added
  52. \end{document}
  53. 1
  54. 2
  55. 3
  56. 4
  57. 5
  58. 6
  59. 7
  60. 8
  61. 9
  62. 10
  63. 11
  64. 12
  65. 13
  66. 14
  67. 15
  68. 16
  69. 17
  70. 18
  71. 19
  72. 20
  73. 21
  74. 22
  75. 23
  76. 24
  77. 25
  78. 26
  79. 27
  80. 28
  81. 29
  82. 30
  83. 31
  84. 32
  85. 33
  86. 34
  87. 35
  88. 36
  89. 37
  90. 38
  91. 39
  92. 40
  93. 41
  94. 42
  95. 43
  96. 44
  97. 45
  98. 46
  99. 47
  100. 48
  101. 49
  102. 50
  103. 51
  104. 52
  105. 53
  106. 54
  107. 55
  108. 56
  109. 57
  110. %!TEX program = pdflatex

  111. \documentclass{article}

  112. \usepackage{mathpazo}
  113. \usepackage{tikz}
  114. \usetikzlibrary{arrows,intersections}

  115. \begin{document}
  116. % 为了使用 Acrobat 删除外围区域,需要设置没有页码
  117. \pagestyle{empty}
  118. % TikZ 设定
  119. \tikzset{thick,
  120.         > = stealth',
  121.         dot/.style = {draw,fill=white,circle,inner sep=0pt,minimum size=4pt}
  122.         }
  123. \foreach \Q in {4,4.1,4.2,...,5,4.9,4.8,...,4.1} { %<-- added
  124. \begin{tikzpicture}
  125.     % 画坐标系 并且定义了 O 、xmax 和 ymax
  126.     \coordinate (O) at (0,0);
  127.     \draw[->] (-0.3,0) -- (8,0) coordinate[label={below:$x$}] (xmax);
  128.     \draw[->] (0,-0.3) -- (0,5) coordinate[label={right:$f(x)$}] (ymax);
  129.     % 给出直线 x 与曲线 y 的路径
  130.     \path[name path=x] (0.3,0.5) -- (6.7,4.7);
  131.     \path[name path=y] plot[smooth] coordinates {(-0.3,2) (2,1.5) (\Q,2.8) (6,5)}; %<-- modified

  132.     % 利用 intersections 包的计算方法,得到了直线与曲线的交点坐标,分别命名为 i-1 和 i-2 (图中分别为 P 和 Q) 过点 P 的水平线与过 Q 的竖直延长线的交点标记为 M.

  133.     \begin{scope}[name intersections = {of= x and y,name = i}]
  134.         % 将PQ所形成的三角形区域(PQM)填充为灰色
  135.         \fill[gray!20] (i-1) -- (i-2 |- i-1) -- (i-2) -- cycle;
  136.         % 在空白处标记 Sekante
  137.         \draw (0.3,0.5) -- (6.7,4.7) node[pos=0.8,below right] {Sekante};
  138.         % 画出曲线路径 y,与之前代码几乎一样
  139.         \draw[red] plot[smooth] coordinates {(-0.3,2) (2,1.5) (\Q,2.8) (6,5)}; %<-- modified
  140.         % 从 P 向 x 轴引垂线,垂足坐标为 (i-1 |- O),标签为 x_0
  141.         \draw (i-1) node[dot,label={above:$P$}] (i-1) {} -- node[left] {$f(x_0)$} (i-1 |- O) node[dot,label={below:$x_0$}] {};
  142.         % Q 点向 M 引垂线
  143.         \path (i-2) node[dot,label={above:$Q$}] (i-2) {} -- (i-2 |- i-1) node[dot,label={right:$M$}] (i-12) {};
  144.         % M 向 x 轴引垂线,并且标注
  145.         \draw (i-12) -- (i-12 |- O) node[dot,label={below:$x_0 + \varepsilon$}] {};
  146.         % 连接 Q 与 M,并且标注
  147.         \draw[blue,<->] (i-2) -- node[right] {$f(x_0 + \varepsilon) - f(x_0)$} (i-12);
  148.         % 连接 P 与 M
  149.         \draw[blue,<->] (i-1) -- node[below] {$\varepsilon$} (i-12);
  150.         % x 轴上两个垂足之间标记
  151.         \path (i-1 |- O) -- node[below] {$\varepsilon$} (i-2 |- O);
  152.         % Q 的水平延长线
  153.         \draw[gray] (i-2) -- (i-2 -| xmax);
  154.         % 标注 Q 点的垂直距离,最精彩的是用到了 xshift=-0.5cm,简直赞!
  155.         \draw[gray,<->] ([xshift=-0.5cm]i-2 -| xmax) -- node[fill=white] {$f(x_0 + \varepsilon)$}  ([xshift=-0.5cm]xmax);
  156.     \end{scope}

  157. \end{tikzpicture}
  158. \eject %<-- added
  159. }  %<-- added
  160. \end{document}
复制代码


缺少币币的网友请访问有奖回帖集合
https://bbs.pinggu.org/thread-3990750-1-1.html

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注jltj
拉您入交流群
GMT+8, 2025-12-9 05:48