在 TikZ 中绘制二次函数图像,核心是使用\draw plot命令结合domain选项定义函数定义域,并通过samples控制采样点数量以获得平滑曲线。以下是两种主要方法及详细示例。
方法一:使用直角坐标系与plot命令绘制标准二次函数
这是最直接的方法,通过plot (\x, {<二次函数表达式>})来生成图像。关键点在于函数表达式需用花括号{}包裹,并使用\x作为变量。
\documentclass{article} \usepackage{tikz} % 引入TikZ绘图包 \begin{document} \begin{tikzpicture} % 1. 绘制坐标轴 \draw[->] (-3,0) -- (3,0) node[right] {$x$}; % x轴 \draw[->] (0,-1) -- (0,5) node[above] {$y$}; % y轴 \draw[very thin, gray] (-2.9,-0.9) grid (2.9,4.9); % 辅助网格 % 2. 绘制二次函数 y = x^2 \draw[domain=-2:2, smooth, thick, blue] plot (\x, {\x*\x}) node[right] {$y=x^2$}; % % 参数说明: % domain=-2:2 定义x的取值范围为[-2, 2] % smooth 使曲线平滑 % thick, blue 定义线宽和颜色 % plot (\x, {\x*\x}) 核心绘图命令,计算每个\x对应的y值 % 3. 可选:标记顶点 \filldraw[red] (0,0) circle (2pt) node[below right] {顶点(0,0)}; % 绘制点 \end{tikzpicture} \end{document}代码解析与效果:
- 此代码绘制了函数 $y = x^2$ 在区间 $[-2, 2]$ 上的图像。
\draw[->]用于绘制带箭头的坐标轴 。grid命令添加了辅助网格,便于观察坐标 。plot (\x, {\x*\x})是核心,TikZ 会计算定义域内每个采样点\x对应的\x*\x值并连接成线 。node[right] {$y=x^2$}为曲线添加了标签。- 最终生成一个开口向上、顶点在原点的蓝色抛物线。
方法二:使用function库与declare function定义复杂二次函数
对于系数复杂或需要重复调用的二次函数,可以使用\usetikzlibrary{math}或declare function预先定义函数,使代码更清晰。
\documentclass{article} \usepackage{tikz} \usetikzlibrary{math} % 引入数学计算库,用于复杂函数定义 \begin{document} \begin{tikzpicture} % 预先声明二次函数 f(x) = -0.5*x^2 + 2*x + 1 \tikzmath{ function f(\x) { return -0.5*\x*\x + 2*\x + 1; }; } % 绘制坐标轴 \draw[->] (-1,0) -- (5,0) node[right] {$x$}; \draw[->] (0,-1) -- (0,4) node[above] {$y$}; % 使用已定义的函数 f(x) 进行绘图 \draw[domain=-0.5:4.5, samples=50, smooth, thick, red] plot (\x, {f(\x)}) node[above right] {$y=-\frac{1}{2}x^2+2x+1$}; % % samples=50 增加了采样点,使曲线更精确 % 标记关键点:顶点和与y轴交点 \tikzmath{ \xVertex = 2; % 顶点横坐标 x = -b/(2a) \yVertex = f(\xVertex); } \filldraw[blue] (\xVertex, \yVertex) circle (2pt) node[above left] {顶点(2,3)}; % \filldraw[blue] (0, {f(0)}) circle (2pt) node[left] {与y轴交点(0,1)}; % \end{tikzpicture} \end{document}代码解析与优势:
- 此方法绘制了 $y = -\frac{1}{2}x^2 + 2x + 1$ 的图像。
\tikzmath环境允许进行变量计算和函数声明,这里定义了f(\x)。samples=50指定了采样点数量,对于变化剧烈的曲线,增加此值可避免图像锯齿化。- 通过计算标记了顶点 $(2, 3)$ 和与y轴的交点 $(0, 1)$,使得图形更具信息性。
- 这种方法将数学计算与绘图分离,提高了代码的可读性和可维护性,尤其适合绘制多个相关函数或进行动态标注。
关键参数对比与选择建议
为了更清晰地展示不同参数对绘图效果的影响,下表对比了核心选项:
| 参数/命令 | 作用与示例值 | 对图像的影响 | 适用场景 |
|---|---|---|---|
domain | 定义变量范围,如-2:2 | 决定了函数在x轴上的显示区间。 | 绘制函数的局部或全部特征。 |
samples | 采样点数量,如 ` | ||
25, | |||
| 100` | 值越大,曲线越平滑,但编译时间可能增加。默认通常为25。对于二次函数,25通常足够;若domain范围极大或需极高精度,可增加。 | 平衡图像质量与编译效率。 | |
smooth | 布尔选项(加或不加) | 启用后,TikZ 会在采样点间进行插值,生成光滑曲线。绘制函数图像时应始终启用。 | 几乎所有连续函数的绘图。 |
plot表达式 | plot (\x, {a*\x*\x + b*\x + c}) | 直接定义函数关系。表达式需用{}包裹,支持四则运算和幂运算(\x^2或\x*\x)。 | 标准二次函数或简单表达式。 |
declare function | declare function={f(\x)=-\x*\x/2+2*\x+1;} | 预先定义函数名,便于重复调用和复杂计算。 | 函数需要多次绘制、用于计算坐标或表达式复杂时。 |
综合建议:对于简单的二次函数(如 $y=ax^2+bx+c$),直接使用方法一的plot命令最为快捷。若需要绘制多个函数、添加复杂的标注或进行图像变换(如平移、缩放),则推荐采用方法二,通过函数定义库使代码结构更清晰。无论哪种方法,确保smooth选项被启用,并根据domain范围适当调整samples数量,是获得高质量函数图像的关键 。
参考来源
- 如何在 LaTeX 中画一个树状图(使用tikz和tikz-qtree包中的宏绘制树、森林、二叉树)
- 用tikz画球坐标系下的体积微元
- Latex-TiKZ绘制数学平面几何图教程
- tikz 折线 箭头_4. TikZ画箭头、网格、圆、点、椭圆、圆弧
- tikz 折线 箭头_[LaTeX 绘图] tikz 绘制流程图,概述和两个示例
- Tikz 画流程图