绘制不连续函数

绘制不连续函数

我如何绘制函数 $f(x) = \frac{732x - 228}{19}何时x≤4\frac{120x^2+122x - 38}{19}何时x>4。我在 latex 中使用了以下代码

\documentclass{article}
\usepackage{tikz}
\usepackage{pgfplots}
\pgfplotsset{holdot/.style={color=blue,fill=white,only marks,mark=*}}

\begin{document}
\begin{tikzpicture}
\begin{axis}
[
xlabel={$x$},
ylabel={$y$},
xmin=1, xmax=10,
ymin=5, ymax=700,
]
\addplot[domain=1:4,blue]{\frac{732x-228}{19}};
\addplot[domain=4:10,blue]{\frac{120x^2+122x - 38}{19}};
\end{axis}
\end{tikzpicture}
\end{document}

答案1

您需要以正确的语法输入函数。 \frac是用于排版分数的命令。对于 中的函数,pgfplots您用 写乘法*,用 写除法/。因此,您的第一个函数变为:

(732*x-228)/19

使用的解析器来自pgf,因此请参阅pgf手册以了解更多详细信息以及可以使用哪些函数。请注意,您无需加载,tikz因为pgfplots它会为您加载。

示例输出

\documentclass{article}

\usepackage{pgfplots}
\pgfplotsset{holdot/.style={color=blue,fill=white,only marks,mark=*}}

\begin{document}
\begin{tikzpicture}
\begin{axis}
[
xlabel={$x$},
ylabel={$y$},
xmin=1, xmax=10,
ymin=5, ymax=700,
]
\addplot[domain=1:4,blue]{(732*x-228)/19};
\addplot[domain=4:10,blue]{(120*x^2+122*x - 38)/19};
\end{axis}
\end{tikzpicture}
\end{document}

答案2

另一种解决方案是使用分段函数,使用逻辑来定义它们的范围。x<=1当域在 x 中小于或等于 1 时,逻辑将计算为 1,当域大于 1 时,逻辑将计算为 0。因此,您可以将函数乘以逻辑,使值等于其域中的函数值,而域外的值等于 0。然后,您可以将函数叠加。

\documentclass{article}
\usepackage{tikz}
\usepackage{pgfplots}
\pgfplotsset{holdot/.style={color=blue,fill=white,only marks,mark=*}}

\begin{document}
\begin{tikzpicture}
\begin{axis}
[
xlabel={$x$},
ylabel={$y$},
xmin=1, xmax=10,
ymin=5, ymax=700,
]
\addplot[domain=1:10,blue]
{
(x<=4) * (732*x - 228)/19 +
(x>4)  * (120*x^2 + 122*x - 38)/19
};
\end{axis}
\end{tikzpicture}
\end{document}

在此处输入图片描述

虽然这个解决方案有点晚了,但它也有一些额外的好处。例如,你只需要使用一个图来创建它,如果需要的话,这可以简化图例输入。另一个好处或缺点是,根据你想要的结果,函数将通过不连续点上的垂直线连接起来。

答案3

在此处输入图片描述

\frac{...}{...}是用于编写方程式的语法,对于数学计算,您应该使用它*来进行乘法、/除法和^指数:

\documentclass{article}
\usepackage{tikz}
\usepackage{pgfplots}
\pgfplotsset{holdot/.style={color=blue,fill=white,only marks,mark=*}}

\begin{document}
\begin{tikzpicture}
\begin{axis}
[
xlabel={$x$},
ylabel={$y$},
xmin=1, xmax=10,
ymin=5, ymax=700,
]
\addplot[domain=1:4,blue]{(732*x - 228)/19}; % <---
\addplot[domain=4:10,blue]{(120*x^2 + 122*x - 38)/19}; % <---
\end{axis}
\end{tikzpicture}
\end{document}

相关内容