非轴对称板形

非轴对称板形

我正在尝试获取下列数据:

在此处输入图片描述

在此处输入图片描述

它们必须在外边缘保持一些边界条件(零斜率、零位移),因此极坐标中的函数为:

在此处输入图片描述

上面的数字对应于 m=1,2。我正在 TiKz 中尝试使用此代码:

\begin{tikzpicture}
\begin{axis}[view={60}{20},unit vector ratio=1 1 1]
\addplot3[mesh,color=black,surf, colormap/cool,
samples=30,trig format=rad,
domain=-1:1, y domain=0:2*pi,
z buffer=sort]
({x*cos(2*y)},
{x*sin(2*y)},{((1-(x^2))^2)*(cos(2*y))});
\end{axis}
\end{tikzpicture}

我只得到:

在此处输入图片描述

我希望有人能帮助我。

答案1

这当然不是一个答案,因为我无法用你指定的函数重新创建光盘。但是,这个答案的作用是向你展示如何在你找到我的代码中的函数或错误后绘制蓝色曲线。为此,它有助于让 Ti 知道该函数Z 使用declare function并在需要时使用它。在 中f(\x,\y,\z) \x\y和在您的公式中扮演和\z的角色。只需使用 3d 参数图即可添加曲线。但请注意,如果曲线位于表面后面,则 pgfplots 不会隐藏它们(无需额外努力)。r\thetam

\documentclass[tikz,border=3.14mm]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.16}
\begin{document}
\begin{tikzpicture}[declare function={f(\x,\y,\z)=((1-\x*\x)*(1-\x*\x))*cos(\z*\y);}]
\begin{axis}[view={60}{20},unit vector ratio=1 1 0.6]
\addplot3[mesh,color=black,%surf, colormap/cool,
samples=31,trig format=rad,
domain=0:1, y domain=0:2*pi,
z buffer=sort]
({x*cos(y)},
{x*sin(y)},{f(x,y,1)});
\addplot3[mesh,color=blue,thick,%surf, colormap/cool,
samples=31,samples y=1,trig format=rad,
domain=-1:1, 
z buffer=sort]
({x*cos(0)},
{x*sin(0)},{f(x,0,1))});
\addplot3[mesh,color=blue,thick,%surf, colormap/cool,
samples=31,samples y=1,trig format=rad,
domain=-1:1, 
z buffer=sort]
({x*cos(pi/2)},
{x*sin(pi/2)},{f(x,pi/2,1)});
\end{axis}
\end{tikzpicture}
\end{document}

在此处输入图片描述

如您所见,输出与您想要的不太相似。但是,恕我直言,这不是 pgfplot 的错。相反,对于较小的值,r该函数接近余弦的 1 倍,它假设值介于-1和之间+1,从而解释了接近原点的疯狂形状。

答案2

不幸的是,我的第一个近似没有成功。最后我完成了它(没有蓝线),这是代码:

\begin{tikzpicture}
\begin{axis}[view={30}{30},unit vector ratio=1 1 1]
\addplot3[surf, mesh/interior colormap= {white}{color=(white) color=(white)},
line width=0.5pt,faceted color=black,
samples=31,trig format=rad,
domain=0:1.176, y domain=0:2*pi,
z buffer=sort]
({(x)*cos(y)},
{(x)*sin(y)},{(0.5*sin(y)*cos(2*(x+0.804)*pi)/(1+(x+0.804)^2))});
\end{axis}
\end{tikzpicture}

生成结果:

在此处输入图片描述

另一幅图:

\begin{tikzpicture}
\begin{axis}[view={-20}{30},unit vector ratio=1 1 1]
\addplot3[surf, mesh/interior colormap= {white}{color=(white) color=(white)},
line width=0.5pt,faceted color=black,
samples=31,trig format=rad,
domain=0:1.176, y domain=0:2*pi,
z buffer=sort]
({(1*x)*cos(y)},
{(1*x)*sin(y)},{(0.5*sin(2*y)*cos(2*(x+0.804)*pi)/(1+(x+0.804)^2))});
\end{axis}
\end{tikzpicture}

在此处输入图片描述

相关内容