我想在坐标系中绘制函数 f(x)=(-1+4x^2)*e^2 的图形。使用 Geogebra 中的“将图形视图导出为 pgf/TikZ”,我得到了以下代码(此处显示的代码是我对颜色和箭头样式进行了一些细微更改后得到的)。
\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
[scale=2,line cap=round,line join=round,x=1.0cm,y=1.0cm]
\draw [color=black!70,dash pattern=on 1pt off 1pt, xstep=0.5cm,ystep=0.5cm] (-1.45,-1.28) grid (1.45,2.48);
\draw[->,line width=1,color=black] (-1.45,0) -- (1.45,0);
\foreach \x in {-1,1}
\draw[shift={(\x,0)},color=black] (0pt,2pt) -- (0pt,-2pt) node[below] {\footnotesize $\x$};
\draw[color=black] (1.31,0.04) node [anchor=south west] { x};
\draw[->,line width=1,color=black] (0,-1.28) -- (0,2.48);
\foreach \y in {-1,1,2}
\draw[shift={(0,\y)},color=black] (2pt,0pt) -- (-2pt,0pt) node[left] {\footnotesize $\y$};
\draw[color=black] (0.05,2.28) node [anchor=west] { y};
\clip(-1.45,-1.28) rectangle (1.45,2.48);
\draw[line width=1,color=black!80,fill=black!80,fill opacity=0.6, smooth,samples=50,domain=0.0:0.5] plot(\x,{(4*\x^2-1)*2.7183^\x}) -- (0.5,0) -- (0,0) -- cycle;
\draw[line width=1,smooth,samples=100,domain=-1.5:1.5] plot(\x,{(-1+4*\x^2)*2.7183^\x});
\end{tikzpicture}
\end{document}
上面的代码给了我这个结果:
我尝试安装 TikZ CSV这一页 按照给出的步骤这里 但这只会使日志中充斥着“未定义的控制序列”消息。
相反,我尝试使用杰克的答案代码改进 exp 函数。结果看起来好一点,但仍然不正确:
原始图表在 Geogebra 中的显示方式如下(Wolfram Alpha 显示类似结果):
显然 exp 代码帮助不够,所以可能其中还有 bug?有人能帮我解决这个问题吗?是否可以通过其他方式正确绘制图表?如果可以,代码会是什么样子?
答案1
GeoGebra
是一个为学生创建交互式工具的绝佳工具,虽然它使用导出功能生成的代码非常令人印象深刻,但它通常无法击败手工制作的解决方案,特别是在可读性和清洁度方面。
这是一个手工制作的解决方案,使用pgfplots
% arara: pdflatex
% !arara: indent: {overwrite: true, trace: on}
\documentclass{standalone}
\usepackage{pgfplots}
% axis style
\pgfplotsset{every axis/.append style={
axis x line=middle,
axis y line=middle,
axis line style={<->},
xlabel={$x$},
ylabel={$y$},
},
framed/.style={axis background/.style ={draw=black}},
}
% arrow style
\tikzset{>=stealth}
\begin{document}
\begin{tikzpicture}
\begin{axis}[framed,
xmin=-5,xmax=5,
ymin=-5,ymax=5,
minor xtick={-3,-1,...,3},
minor ytick={-3,-1,...,3},
grid=both
]
\addplot[-] expression[domain=-2.3:2.3,samples=50]{(-1+4*x^2)*exp(x)};
\addplot[fill] expression[domain=0:0.5]{(-1+4*x^2)*exp(x)}\closedcycle;
\end{axis}
\end{tikzpicture}
\end{document}