在 tikz 中用五次方根绘制

在 tikz 中用五次方根绘制

我正在尝试绘制以下函数: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

这是尝试回答这个问题,基于以下假设:

  1. 你想要一个 tikz(而不是 pstricks 或 pgfplots)代码,并且
  2. 您希望保留 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)可能更合适。

相关内容