假设我们有某种像这样的平方三维图:
最小工作示例(MWE):
\documentclass{standalone}
\usepackage{tikz, pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}[samples=20]
\addplot3[surf, domain=-2:2] {-x^2-y^2};
\end{axis}
\end{tikzpicture}
\end{document}
结果截图:
x
我怎样才能用两个方向和的某些四次多项式公式(y
例如-1/3*x^4+x^2
和)替换当前图形-1/3*y^4+y^2
?
期望结果的草稿
最后它看起来应该是这样的:
草稿或多或少是一座圆形的火山,中间有一个火山口,我希望你能想象。:-)
我不知道为什么,但是有几种方法......
\addplot3[surf, domain=-2:2] {(-1/3*y^4+y^2)*(-1/3*y^4+y^2)};
... 没有像我预期的那样出现。
答案1
类似这样的事?(根据迹象表明,这就是所谓的墨西哥帽潜力。)
\documentclass[tikz,border=3.14mm]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.16}
\begin{document}
\begin{tikzpicture}
\begin{axis}[samples=20,zmin=0,zmax=1]
\addplot3[surf, domain=0:1,domain y=0:360,z buffer=sort]
({x*cos(y)},{x*sin(y)},{3*(0.5*x^2-x^4)+0.5});
\end{axis}
\end{tikzpicture}
\end{document}
或者,如果你
\addplot3[surf, domain=-1:1] {(x^2+y^2)-0.5*(x^2+y^2)^2};
你会得到
是的,可以将图扩展到轴,但它并不像人们想象的那么简单(或者我遗漏了一些明显的东西)。
\documentclass[tikz,border=3.14mm]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.16}
\begin{document}
\begin{tikzpicture}[declare function={f(\x,\y)=(\x^2+\y^2)-0.5*(\x^2+\y^2)^2;}]
\begin{axis}[samples=20,zmin=0,zmax=1,xmin=-1,xmax=1,ymin=-1,ymax=1]
% \clip (-1,-1,{f(-1,-1)}) -- (1,-1,{f(1,-1)}) -- (1,1,{f(1,1)})
% -- (1,1,1) -- (-1,-1,1); % not needed
\addplot3[surf, domain=-2:2,samples=50,point meta={max(f(x,y),0)}] {f(x,y)};
\end{axis}
\end{tikzpicture}
\end{document}
获得更浅的局部最小值的一种方法是增加绘图范围。
\documentclass[tikz,border=3.14mm]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.16}
\begin{document}
\begin{tikzpicture}[declare function={f(\x,\y)=(\x^2+\y^2)-0.5*(\x^2+\y^2)^2;}]
\pgfmathsetmacro{\myxmax}{2}
\pgfmathsetmacro{\myzmin}{f(\myxmax,0)}
\begin{axis}[samples=20,zmin=\myzmin,zmax=1,xmin=-\myxmax,xmax=\myxmax,ymin=-\myxmax,ymax=\myxmax]
\addplot3[surf, domain=-2:2,samples=50,point meta={max(f(x,y),\myzmin)}] {f(x,y)};
\end{axis}
\end{tikzpicture}
\end{document}