我正在尝试绘制以下函数:y=\sqrt[5]{4x^4-x^5}
第一次没有成功,所以我在这里搜索了一些可能对我有帮助的东西,并找到了这。不幸的是,当我编辑代码时,它对我来说不起作用,所以我想问是否有办法绘制根函数的图形?
\documentclass[svgnames, border=3pt]{standalone}
\usepackage{pst-plot}
\usepackage{auto-pst-pdf}
\begin{document}
\psset{unit=2cm, algebraic, arrowinset=0.12, arrowsize=3pt, linejoin=1, showorigin=false}
\begin{pspicture*}(-2.6,-2.6)(2.6,2.6)
\psaxes[linecolor=LightSteelBlue, tickcolor=LightSteelBlue, arrows =->, ticksize=2pt -2pt, labelFontSize=\scriptstyle](0,0)(-2.6,-2.6)(2.6,2.6)[$x$,-135] [$y$,-135]
\uput[dl](0,0){$O$}
\psset{linewidth=1.2pt, linecolor=IndianRed, plotpoints=200, plotstyle=curve}
\psplot{-2.6}{1}{-(x^5-4*x^4)^(1/5)}%
\psplot{1}{2.6}{(4*x^4-x^5)^(1/5)}%
\psline[linewidth=0.6pt, linecolor=Crimson!50](-2.8,-3.133)(2.8,2.467)
\end{pspicture*}
\end{document}
输出:由 Geogebra 提供
答案1
这是尝试回答这个问题,基于以下假设:
- 你想要一个 tikz(而不是 pstricks 或 pgfplots)代码,并且
- 您希望保留 pspicture 的元素。
实现此目的的可能代码是
\documentclass[tikz,svgnames, border=3pt]{standalone}
\begin{document}
\begin{tikzpicture}[>=stealth,line cap=round]
\draw[->,LightSteelBlue] (-2.6,0) -- (2.6,0) node[below left]{$x$};
\draw[->,LightSteelBlue] (0,-2.6) -- (0,2.6) node[below left]{$y$};
\draw[line width=1.2pt,smooth,samples at={-2.6,-2.5,...,-0.1,-0.05,-0.01,0,0.01,0.05,0.1,0.2,...,2.6}] plot (\x,{\fpeval{(4*(\x)^4-(\x)^5)^(1/5)}});
\draw[line width=0.6pt,Crimson!50](-2.8,-3.133)--(2.8,2.467);
\end{tikzpicture}
\end{document}
注意
\fpeval
因为在计算非常小的数的根时,基本的 pgf 数学不太准确,- 在较旧的 TeX 安装中,你需要加载
xfp
,并且 samples at
用于增加原点周围样本的密度。
答案2
运行lualatex
:
\documentclass[svgnames, border=3pt]{standalone}
\usepackage{pst-plot}
\begin{document}
\psset{unit=2cm, algebraic, arrowinset=0.12, arrowsize=3pt, linejoin=1, showorigin=false}
\begin{pspicture}(-2.6,-2.6)(4.75,2.6)
\psaxes[linecolor=LightSteelBlue, tickcolor=LightSteelBlue, arrows =->, ticksize=2pt -2pt, labelFontSize=\scriptstyle](0,0)(-2.6,-2.6)(4.5,2.6)[$x$,-135] [$y$,-135]
\uput[dl](0,0){$O$}
\psset{linewidth=2pt, linecolor=IndianRed, plotpoints=1200, plotstyle=line}
\psplot{-2}{4}{(4*x^4-x^5)^(0.2)}%
\psplot[linecolor=blue]{4}{4.5}{-(abs(4*x^4-x^5))^(0.2)}%
\psline[linewidth=0.6pt, linecolor=Crimson!50](-2.8,-3.133)(2.8,2.467)
\end{pspicture}
\end{document}
答案3
你已经看到了 LaTeX 中数学的一些局限性。公平地说,LaTeX 是用于排版的,你不应该指望它取代 Geogebra。这是一个评估你将在 LaTeX 中使用多少复杂数学的机会,否则今天绘制 5 次方根的问题可能会变得pgfplots:addplot 在 (sin(x) - x cos(x)) / x^3 上的收敛问题。正如我在那里的回答中所说,“解决大多数问题的利器是计算机代数系统 (CAS)。该sagetex
软件包可让您访问名为智者以及 Python 编程。”CAS 的学习曲线更陡峭,但可以解决更多的问题:积分、导数、微分方程、矩阵逆、图论等。Python 为您提供了一种强大的编程语言,可以取代许多人已经掌握的一些较为过时的 LaTeX 编程。
以下是sagetex
解决您问题的方法:
\documentclass{article}
\usepackage{sagetex,xcolor,pgfplots}
\pgfplotsset{compat=1.16}
\begin{document}
\begin{sagesilent}
LowerX = -5
UpperX = 5
LowerY = -5
UpperY = 5
step = .01
t = var('t')
g(t)= real_nth_root(4*t^4-t^5, 5)
x_coords = [t for t in srange(LowerX,UpperX,step)]
y_coords = [g(t).n(digits=6) for t in srange(LowerX,UpperX,step)]
output = r""
output += r"\begin{tikzpicture}[scale=1.0]"
output += r"\begin{axis}[xmin=%f,xmax=%f,ymin= %f,ymax=%f,width=10cm,"%(LowerX,UpperX,LowerY, UpperY)
output += r"xlabel=$x$,ylabel=$y$,axis x line=middle,axis y line=middle]"
output += r"\addplot[thin, blue, unbounded coords=jump] coordinates {"
for i in range(0,len(x_coords)-1):
if (y_coords[i])<LowerY or (y_coords[i])>UpperY:
output += r"(%f , inf) "%(x_coords[i])
else:
output += r"(%f , %f) "%(x_coords[i],y_coords[i])
output += r"};"
output += r"\end{axis}"
output += r"\end{tikzpicture}"
\end{sagesilent}
\sagestr{output}
\end{document}
Cocalc 中的输出是:
简要说明:
sagesilent
环境是在后台进行的工作,只有您指定后才会打印出来。LowerX = -5, UpperX = 5, LowerY = -5, UpperY=5
设置屏幕上显示内容的参数,step = .01
设置 x 值之间的间距。g(t)= real_nth_root(4*t^4-t^5, 5)
表示将绘制函数的 5 次方根,但是由于复数域上有 5 个这样的根,因此我们指定将使用实值答案。x_coords = [t for t in srange(LowerX,UpperX,step)]
创建将使用的特定 x 坐标列表:-5、-4.99、-4.98、...、4.99(Python 不包含最后一个数字。您可以修改为 UpperX+step 以转到 5.00)。使用 6 位有效数字计算 y 坐标。图片以文本字符串的形式创建,因为它sagetex
作为 3 步编译过程运行。如果您在此站点中搜索,则sagetex
可以找到有关此内容的更多解释。\sagestr{output}
采用在中创建的工作,sagesilent
以便在编译的第三步中,所有来自 Python/Sage 的计算/详细信息都得到排版。for 循环for i in range(0,len(x_coords)-1):
检查 y 值是否显示在屏幕上。如果不是,则 y 值是无穷大,不会绘制。否则,将会绘制。
LaTeX、CAS 和 Python 编程可以帮助您解决和排版几乎所有问题。但是,CAS Sage 不包含在您的发行版中。访问它的最简单方法是通过免费的可钙帐户。您还可以将 Sage 下载到您的计算机并使其与您的 LaTeX 发行版配合使用。这需要更多时间,也可能更成问题。它也需要更多维护:由于 Sage 和 LaTeX 的更新时间表不同,这种协调可能会中断。使用 Cocalc 意味着他们确保一切都保持最新并正常工作。如果您不需要 CAS 的数学能力,那么其他解决方案(例如lua
)可能更合适。