函数定义的曲面

显函数定义的曲面

MATLAB用fmesh函数和fsurf函数绘空间曲面的图形。 fmesh函数的语法格式为:

fmesh(f) 在 x 和 y 的默认区间 [-5 5] 为表达式 z=f(x,y) 创建网格图。

fmesh(f,xyinterval) 将在指定区间绘图。要对 x 和 y 使用相同的区间,请将 xyinterval 指定为 [min max] 形式的二元素向量。要使用不同的区间,请指定 [xmin xmax ymin ymax] 形式的四元素向量。

fmesh(funx,funy,funz) 在默认区间 [-5 5](对于 u 和 v)绘制由 x=funx(u,v)、y=funy(u,v)、z=funz(u,v) 定义的参数化网格。

fmesh(funx,funy,funz,uvinterval) 在指定区间绘制参数化网格。要对 u 和 v 使用相同的区间,请将 uvinterval 指定为 [min max] 形式的二元素向量。要使用不同的区间,请指定 [umin umax vmin vmax] 形式的四元素向量。

fmesh(___,LineSpec) 设置网格的线型、标记符号和颜色。例如,'-r' 指定红色线条。在前面的任何输入参数组合之后使用此选项。

fmesh(___,Name,Value) 使用一个或多个名称-值对组参数指定网格的属性。可以将此选项与前面语法中的任何输入参数组合一起使用。

fmesh(ax,___) 将图形绘制到 ax 指定的坐标区中,而不是当前坐标区 gca 中。

fs=fmesh(___) 返回 FunctionSurface 对象或 ParameterizedFunctionSurface 对象,具体情况取决于输入。

fsurf函数的语法格式为:

fsurf(f) 在默认区间 [-5 5](对于 x 和 y)为函数 z=f(x,y) 创建曲面图。

fsurf(f,xyinterval) 将在指定区间绘图。要对 x 和 y 使用相同的区间,请将 xyinterval 指定为 [min max] 形式的二元素向量。要使用不同的区间,请指定 [xmin xmax ymin ymax] 形式的四元素向量。

fsurf(funx,funy,funz) 在默认区间 [-5 5](对于 u 和 v)绘制由 x=funx(u,v)、y=funy(u,v)、z=funz(u,v) 定义的参数化曲面。

fsurf(funx,funy,funz,uvinterval) 将在指定区间绘图。要对 u 和 v 使用相同的区间,请将 uvinterval 指定为 [min max] 形式的二元素向量。要使用不同的区间,请指定 [umin umax vmin vmax] 形式的四元素向量。

fsurf(___,LineSpec) 设置线型、标记符号和曲面颜色。例如,'-r' 指定红色线条。在前面的任何输入参数组合之后使用此选项。

fsurf(___,Name,Value) 使用一个或多个名称-值对组参数指定曲面属性。在前面语法中的任何输入参数组合后使用此选项。

fsurf(ax,___) 将图形绘制到 ax 指定的坐标区中,而不是当前坐标区 (gca) 中。

fs=fsurf(___) 返回 FunctionSurface 对象或 ParameterizedFunctionSurface 对象,具体情况取决于输入。

三维显函数是可以写成z=f(x,y)形式显式表达的函数。下面结合实例介绍如何绘制三维显函数的曲面图。

绘函数\(z=\operatorname{sin}{(}x)+\operatorname{cos}{(}y)\)的图形。

在命令窗口键入

code.matlab
fmesh(@(x,y) sin(x)+cos(y))

生成图3-11。

Document Image
\[\]

图3-11 三维函数网格图

下面绘曲面图。

code.matlab
fsurf(@(x,y) sin(x)+cos(y))

生成图3-12。

Document Image
\[\]

图3-12 三维函数曲面图

直角坐标系参数函数定义的曲面

三维参数函数中,坐标x,y,z都可以写成参数u和v的函数,即x=f(u,v),y=g(u,v),z=h(u,v)。下面结合实例介绍直角坐标系下三维参数函数的曲面绘制。

绘参数函数

\[x=\operatorname{cos}{(}u)\operatorname{sin}{(}v),y=\operatorname{sin}{(}u)\operatorname{sin}{(}v),z=\operatorname{cos}{(}v)+\operatorname{log}{(}\operatorname{tan}{(}v/2))+0.2u\]

的曲面图。

在命令窗口键入

code.matlab
x=@(u,v) cos(u).*sin(v);
y=@(u,v) sin(u).*sin(v);
z=@(u,v) cos(v)+log(tan(v./2))+0.2.*u;
fsurf(x,y,z,[0 12.4 0.1 2])

生成图3-13。

Document Image
\[\]

图3-13 参数曲面图

柱面坐标系参数函数定义的曲面

下面结合实例介绍柱面坐标系下三维参数函数的曲面绘制。

绘柱面坐标系函数\(x=r\operatorname{sin}{(}a),y=r\operatorname{cos}{(}a),z=\operatorname{sin}{(}7a)/(1+r{)}^{2}\)的图形。

在命令窗口键入

code.matlab
funx=@(r,a) r.*sin(a);
funy=@(r,a) r.*cos(a);
funz=@(r,a) sin(7.*a)./(1+r).^2;
fsurf(funx,funy,funz,[0 10 0 2*pi])
axis equal

生成图3-14。

Document Image
\[\]

图3-14 柱面坐标系函数的图形

球面坐标系参数函数定义的曲面

下面结合实例介绍球面坐标系下三维参数函数的曲面绘制。绘球面坐标系函数

\(x=(2+\operatorname{sin}{(}7u+5v))\operatorname{cos}{(}u)\operatorname{sin}{(}v)\)

\(y=(2+\operatorname{sin}{(}7u+5v))\operatorname{sin}{(}u)\operatorname{sin}{(}v)\)

\[z=(2+\operatorname{sin}{(}7u+5v))\operatorname{cos}{(}v)\]

的图形。

在命令窗口键入

code.matlab
r=@(u,v) 2 + sin(7.*u + 5.*v);
funx=@(u,v) r(u,v).*cos(u).*sin(v);
funy=@(u,v) r(u,v).*sin(u).*sin(v);
funz=@(u,v) r(u,v).*cos(v);
fsurf(funx,funy,funz,[0 2*pi 0 pi])
camlight

生成图3-15。

Document Image
\[\]

图3-15 球面坐标系函数曲面图

隐函数定义的曲面

隐函数不能用显函数或参数函数显式表达。下面结合实例介绍隐函数定义的曲面绘制。

绘隐函数\((\frac{{x}^{2}}{4}+\frac{{y}^{2}}{9}+\frac{{z}^{2}}{3}{)}^{2}-2x-y=0\)定义的图形。

在命令窗口键入

code.matlab
[x,y,z]=meshgrid(-4:0.05:4);
v =((x.^2/4)+(y.^2/9)+(z.^2/3)).^2-2.*x-y;
p=patch(isosurface(x,y,z,v,0));
isonormals(x,y,z,v,p)
p.FaceColor='red';
p.EdgeColor='none';
view(3);
axis tight
camlight
lighting gouraud

生成图3-16。

Document Image
\[\]

图3-16 隐函数的图形