我想绘制对数函数的图形,如下
f(x)=\ln(2\frac{x^2+1}{x^2-1})
f(x)=\ln(2\frac{x^2+1}{x^2+2})
以及它们的渐近线(在两种情况下都是y=\ln2
)。
我尝试过\pgfplots
,但没能制作出图形。你会怎么做?
答案1
这是一个可能的解决方案pgfplots
。
\documentclass{article}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}[domain=1:5,
samples=100,
grid=both,
no markers,
axis equal]
\addplot +[thick] {ln(2*(x*x+1)/(x*x-1))};
\addplot +[thick, domain=0:5] {ln(2)};
\addplot +[thick, dashed] coordinates {(1,0)(1,4)};
\end{axis}
\end{tikzpicture}
\end{document}
许多选项都是不言自明的,所有其他选项都可以在文档中找到,但您感兴趣的核心是axis
环境的定义和命令的使用\addplot
。
- outer
tikzpicture
创建一个定义 tikz/pgf 命令的环境; axis
用于定义情节环境;- 选项
domain=X_min:X_max
指定函数的输入从X_min
到X_max
samples=N
通过使用更多的点来采样曲线使绘图更加平滑;grid
在图中设置网格;no markers
避免用点绘图,只打印线;axis equal
是不言而喻的:均衡轴。
最终\addplot
命令使用如下:
- 添加选项,
+[thick]
将选项附加到预设,如果您想覆盖先前的样式,只需使用例如[thick, green]
; - 括号中的参数是要绘制的函数,如
{ln(2*(x*x+1)/(x*x-1))}
。 - 最后
\addplot
使用坐标绘制处的垂直渐近线x=1
。
输出
答案2
我确实认为你的函数有拼写错误F因为分子等于分母,所以F本身就是常数,并且F和它的渐近线重合。我随机改变了F以下。
第二个示例遵循 Ti 的“22.5 绘制函数”一节钾Z' 手册https://www.ctan.org/pkg/pgf。
\documentclass{memoir}
\usepackage{tikz,pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}[grid=major,domain=-20:20, smooth]
\addplot[samples=400]
{ln(2*(x*x+1)/(x*x+2))};
\addplot[]
{ln(2)};
\end{axis}
\end{tikzpicture}
\begin{tikzpicture}[domain=-5:5]
\draw[very thin,color=gray]
(-5,-1) grid (5,2);
\draw[->]
(-5,0) -- (5.2,0)
node[right] {$x$};
\draw[->]
(0,-1.2) -- (0,2.2)
node[above] {$y$};
\draw[color=red]
plot (\x,{ln(2)})
node[above] {$\ln2$};
\draw[color=blue,samples=400,smooth]
plot (\x,{ln(2*(\x*\x+1)/(\x*\x+2))})
node[below] {$f$};
\end{tikzpicture}
\end{document}
编辑应 OP 要求:我删除了该grid
部分,并通过循环或多或少手动添加了数字\foreach
:它绘制一条线并自动添加数字。观察:第二个和第三个示例不需要pgfplots
。
\documentclass{memoir}
\usepackage{tikz}
\newcommand{\xPlotMin}{-5}
\newcommand{\xPlotMax}{5}
\newcommand{\yPlotMin}{-1}
\newcommand{\yPlotMax}{2}
\newcommand{\axisSmallLength}{0.1}
%Be aware the simple implementation of the axis below might give silly results for unsuitable values.
\begin{document}
\begin{tikzpicture}[domain=\xPlotMin:\xPlotMax]
\draw[->]
({\xPlotMin-2*\axisSmallLength},0) -- ({\xPlotMax+2*\axisSmallLength},0)
node[right] {$x$};
\foreach \x in {\xPlotMin,...,-1, 1,2,...,\xPlotMax}
{\draw (\x,\axisSmallLength) -- (\x,-\axisSmallLength) node[below] {$\x$};}
\draw[->]
(0,{\yPlotMin-2*\axisSmallLength}) -- (0,{\yPlotMax+2*\axisSmallLength})
node[above] {$y$};
\foreach \y in {\yPlotMin,...,-1, 1,2,...,\yPlotMax}
{\draw (\axisSmallLength,\y) -- (-\axisSmallLength,\y) node[left] {$\y$};}
\draw[color=red]
plot (\x,{ln(2)})
node[above] {$\ln2$};
\draw[color=blue,samples=400,smooth]
plot (\x,{ln(2*(\x*\x+1)/(\x*\x+2))})
node[below] {$f$};
\end{tikzpicture}
\end{document}