我刚开始学习 pgfplots,我想绘制一些函数:立方根、反函数和一些三角函数。
问题在于,对于 y=1/x 函数,它连接了定义域的负部分和正部分之间的点:我们看不到渐近线。
\documentclass{minimal}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}[]
\addplot [domain=-10:10, samples=100]{x^(-1)};
\end{axis}
\end{tikzpicture}
\end{document}
使用函数 y=x^{1/3} 时,它不会显示域的负部分。使用三角函数时,它根本做不到任何正确的事情……
\addplot[domain=-27:27]{x^(1/3)};
\addplot[domain=-2*pi:2*pi]{cos(rad(x))};
如果你能帮助我一点的话我将非常感谢。
非常感谢您的回答,这真的很有帮助。最后一件事:三次根函数的定义域中有一个负数部分无法显示。您知道为什么吗?
\begin{tikzpicture}
\begin{axis}[
width=8cm,xlabel={$x$},
ylabel={$y$},grid=both, axis x line=middle, axis y line=middle,
title={$f(x)=x^{1/3}$}]
\addplot[blue,domain=-27:27, no markers,samples=100] {x^(1/3)};
\end{axis}
\end{tikzpicture}
注意:是的,立方根函数具有部分负域,并且没有虚部。注意:很抱歉,我坚持在这条评论中提出我的第一个问题之一,这应该是一个“答案”,我只是这里的新手,因为我还没有注册,所以我不知道如何在新的“问题评论”中询问与该主题相关的问题
答案1
为了将图的正负部分1/x
分开,您需要确保函数在 处求值x=0
。如果您的域是对称的,您可以指定奇数个样本(samples=101
例如)。您还必须确保非实数值不会默默被丢弃,而会导致图中出现跳跃。为此,请指定unbounded coords=jump
(而不是默认行为discard
)。
PGF 中的三角函数需要度数,因此您必须使用deg(x)
(不是rad(x)
,这是用于将度数转换为弧度) 将弧度转换为度数。
\documentclass{article}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}[enlargelimits=false]
\addplot [domain=-10:10, samples=101,unbounded coords=jump]{x^(-1)};
\end{axis}
\end{tikzpicture}
\begin{tikzpicture}
\begin{axis}[enlargelimits=false]
\addplot[domain=-2*pi:2*pi, samples=100]{cos(deg(x))};
\end{axis}
\end{tikzpicture}
\end{document}
答案2
其他答案提供了巧妙的绘图方法1/x
,但没有人涵盖如何绘图x^(1/3)
这个问题出现在很多不同的制图程序/计算器中。立方根通常使用对数来计算,这就是为什么它们有时似乎没有为负数定义的原因。当然,我们知道我们可以对任何实数取立方根,所以我们必须欺骗程序/计算器。
一种方法是绘制
x/|x| * (|x|)^(1/3)
绘制立方根函数,并偷偷地适当切换符号。当然,这个函数没有定义在0
,所以它实际上不是平等的立方根函数,但它对我们很有帮助:)
\documentclass{standalone}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}
\addplot[blue,domain=-10:10, samples=200]{x/abs(x)*abs(x)^(1/3)};
\end{axis}
\end{tikzpicture}
\end{document}
答案3
我认为你的期望太高了,因为 pgfplots 不是计算机代数系统 (CAS)。所以你需要通过修改数据来帮助它。此外,samples
选项也有很大不同,因为图实际上是在连接点,要查看某个值是否无界,必须在该点进行评估,否则结果将是有限的,它会连接这些点。
\documentclass{standalone}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}[restrict y to domain=-9.9:9.9]
\addplot [domain=-10:10, samples=200]{x^(-1)};
\addplot[blue,domain=-10:10, samples=200]{x^(1/3)};
\addplot[red,domain=-2*pi:2*pi, samples=200]{sin(deg(x))};
\end{axis}
\end{tikzpicture}
\end{document}