我在绘制方程式 $y^4 - y^2 = x$ 时遇到了一些麻烦。有人能帮我吗?非常感谢!
答案1
这是 PGF 解决方案。为了响应您对绘制多个形式函数的请求y^4 - y^2 = x - n
,我添加了一个\foreach
循环。
已更新轴标签
\documentclass[border=0.5cm]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.15}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
xmin=-5, xmax=5,
ymin=-2, ymax=2,
axis lines=center,
xlabel={$x$},
ylabel={$y$},
samples=100]
\foreach \n in {-3,...,3}
\addplot[red] (x^4 - x^2 +\n,x);
\end{axis}
\end{tikzpicture}
\end{document}
动画版...
\documentclass[tikz,border=0.5cm]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\begin{document}
\foreach \n in {-3,...,3,2,1,...,-2}
{
\begin{tikzpicture}
\begin{axis}[
xmin=-5, xmax=9,
ymin=-3, ymax=3,
axis lines=center,
xlabel={$x$},
ylabel={$y$},
samples=100]
\addplot[red] (x^4 - x^2 +\n,x);
\node [fill=red!20!white,text width=1.2cm,anchor=base,minimum height=0.5cm,minimum width=1.5cm,align=left] at (-3,-2.5) {$n=\n$};
\end{axis}
\end{tikzpicture}
}
\end{document}
答案2
这个答案可以作为绘制的一个可能的解决方案$y^4 - y^2 = x$
。
\documentclass[10pt]{article}
\usepackage{pstricks-add}
\usepackage{pst-func}
\begin{document}
\psset{xunit=1.0cm,yunit=1.0cm,algebraic=true,dimen=middle,dotstyle=o,dotsize=5pt 0,linewidth=1pt,arrowsize=3pt 2,arrowinset=0.15}
\begin{pspicture*}(-1,-2)(4,3)
\psaxes[labelFontSize=\scriptstyle,xAxis=true,yAxis=true,Dx=1.,Dy=1.,ticksize=-2pt 0,subticks=2]{->}(0,0)(-1,-1.5)(4,2)
\psplotImp[linecolor=red,stepFactor=0.1,algebraic](-2.0,-3.0)(4.0,3.0){-1.0*y^2+1.0*y^4-1.0*x^1}
\rput[tl](1,2){$-x + y^{4} - y^{2} = 0$}
\rput[tl](3.8,.4){$x$}
\rput[tl](.2,2){$y$}
\end{pspicture*}
\end{document}
附录
通过插入新代码,\psplotImp[linecolor=yellow,stepFactor=0.1,algebraic](-4.0,-3.0)(4.0,2.0){-2.0-1.0*y^2+1.0*y^4-1.0*x^1}
您可以绘制新的隐式函数,并且\rput[tl](1,1){\small $ -x +1+ y^{4} - y^{2} = 0$}
可以使用笛卡尔坐标将标签放置在您喜欢的特定位置。
\documentclass[10pt]{article}
\usepackage{pstricks-add}
\usepackage{pst-func}
\begin{document}
\psset{xunit=1.0cm,yunit=1.0cm,algebraic=true,dimen=middle,dotstyle=o,dotsize=5pt 0,linewidth=1pt,arrowsize=3pt 2,arrowinset=0.15}
\begin{pspicture*}(-3,-2)(4,3)
\psaxes[labelFontSize=\scriptstyle,xAxis=true,yAxis=true,Dx=1.,Dy=1.,ticksize=-2pt 0,subticks=2]{->}(0,0)(-4,-1.5)(4,2)
\psplotImp[linecolor=red,stepFactor=0.1,algebraic](-4.0,-3.0)(4.0,3.0){-1.0*y^2+1.0*y^4-1.0*x^1}
\psplotImp[linecolor=green,stepFactor=0.1,algebraic](-4.0,-3.0)(4.0,2.0){1.0-1.0*y^2+1.0*y^4-1.0*x^1}
\psplotImp[linecolor=yellow,stepFactor=0.1,algebraic](-4.0,-3.0)(4.0,2.0){-2.0-1.0*y^2+1.0*y^4-1.0*x^1}
\rput[tl](1,2){\small $-x + y^{4} - y^{2} = 0$}
\rput[tl](1,1){\small $ -x +1+ y^{4} - y^{2} = 0$}
\rput[tl](3.8,.4){$x$}
\rput[tl](.2,2){$y$}
\end{pspicture*}
\end{document}
答案3
正如 @percusse 所建议的,这是 Asymptote 版本:
//
// yx.asy
//
// run
// asy yx.asy
//
// to get yx.pdf
//
settings.tex="pdflatex";
import graph; import math; import palette;
size(12cm);
import fontsize;defaultpen(fontsize(8pt));
real xmin=-3.6, xmax=5;
real ymax=1.6, ymin=-ymax;
real dxmin=0, dxmax=0.1;
real dymin=0.1, dymax=dymin;
xaxis("$x$",xmin-dxmin,xmax+dxmax,RightTicks(Step=1,step=0.2,OmitTick(0,2.2)),above=true);
yaxis("$y$",ymin-dymin,ymax+dymax,LeftTicks (Step=1,step=0.2,OmitTick(0,1.4)),above=true);
real[] n={-3, -2, -1, 0, 1, 2, 3};
pen[] p=Gradient(n.length, blue,red);
for(int i=0;i<n.length;++i){
pair f(real y){return (y^4-y^2+n[i], y);}
draw(graph(f,ymin,ymax), p[i]+0.7bp);
label("$\scriptstyle{n="+string(n[i])+"}$",f(1.15), p[i],UnFill);
}
clip(box((xmin-dxmin,ymin-dymin),(xmax+dxmax,ymax+dymax)));
label("$y^4-y^2=x-n$",point(dir(80)),plain.N);
答案4
重构塞巴斯蒂亚诺的回答。
\documentclass[pstricks]{standalone}
\usepackage{pst-func}
\begin{document}
\begin{pspicture}(-1.5,-2.5)(6,3)
\psaxes{->}(0,0)(-1,-2)(5.5,2.5)[$x$,-90][$y$,180]
\psplotImp[linecolor=red,stepFactor=.1,algebraic](-2,-2)(5,2){y^4-y^2-x}
\rput[tl](1,2){$y^4 - y^2 = x$}
\end{pspicture}
\end{document}
编辑
您还可以使用以下选项之一,而不用使用\psplotImp
。
\rput{-90}(0,0){\psplot[linecolor=red,algebraic]{-1.65}{1.65}{x^4-x^2}}
或者
\psparametricplot[linecolor=red]{-1.65}{1.65}{t^4-t^2|t}