fimplicit3绘制三维隐函数
基本语法:
fimplicit3(f) %在默认区间 [-5 5](对于 x)和 y(对于 z)上绘制 f(x,y,z) = 0 定义的三维隐函数
fimplicit3(f,interval) %interval为 x、y 和 z 指定绘图区间
基础示例:
f = @(x,y,z) x.^2 + y.^2 - z.^2; %所要绘制的隐函数方程
interval = [-5 5 -5 5 0 5]; %[xmin xmax ymin ymax zmin zmax]
fimplicit3(f,interval) %绘图
详情参考官方文档:fimplicit3
fimplicit3绘制空间定限截面柱体
柱体的隐函数方程:
设目标方程为: ∣ x ∣ + ∣ y ∣ = 1 |x|+|y|=1 ∣x∣+∣y∣=1
clc,clear,close all;
figure;
f = @(x,y,z) abs(x)+abs(y)-1;
fimplicit3(f,[-2,2,-2,2,-1,4]);
添加线条样式:
只是让图例更好看一些,
clc,clear,close all;
figure;
f = @(x,y,z) abs(x)+abs(y)-1;
fimplicit3(f,[-2,2,-2,2,-1,4],...
'FaceColor', '#4DBEEE', 'FaceAlpha',0.5,'EdgeColor','none');
%'FaceColor' 面的颜色 'FaceAlpha' 面的透明度[0-1] 'EdgeColor' 线条颜色
添加平面(截面)方程:
clc,clear,close all;
figure;
f = @(x,y,z) abs(x)+abs(y)-1;
fimplicit3(f,[-2,2,-2,2,-1,4],...
'FaceColor', '#4DBEEE', 'FaceAlpha',0.5,'EdgeColor','none');
hold on
fimplicit3(@(x,y,z) x+y+z-2,[-2,2,-2,2,-1,4],...
'FaceColor', 'k', 'FaceAlpha',0.5,'EdgeColor','none');
平面在柱体中截出的效果(鼠标拖动旋转视角):
有了以上对fimplicit3函数的用法经验,读者可自行尝试绘制更复杂的三维空间图形;
比如这样一个窝窝头:
clc,clear,close all;
% 函数句柄,注意要用点运算符
f = @(x,y,z) (x.^2+y.^2+z.^2).^3-x.^2.*z.^3-y.^2.*z.^3;
axis vis3d %3维坐标系
fimplicit3(f,[-2,2,-2,2,-2,2],'EdgeColor', 'none', 'FaceAlpha',0.9);
xlabel('x轴'); ylabel('y轴'); zlabel('z轴'); % 加上坐标轴的标签
for i = 1:36
camorbit(10,0,'data',[1 1 1]) %%[0 0 1]表示按z轴旋转。36*10=360表示旋转一周
drawnow %%即时显示旋转的结果
end
二型线积分-斯托克斯公式例题
对于二型线积分的空间曲线问题(三个未知量),可利用斯托克斯公式(两个未知量的二维平面曲线问题对应使用格林),将二型线积分转化为一型面积分或二型面积分两种形式计算;
两种形式计算的结果等价,差别在于计算量。因此,对于一些空间界面图形,不好想象在xoy、yoz、xoz平面上的投影时,一般转为二型面积分计算即可;当然,空间想象能力足够强,计算能力好的同学两种形式均可尝试得数。
正是因为这个小问题,才有了以上利用Matlab绘制空间三维图形的介绍;
例:
yoz上的投影:
xoy上的投影:
xoz上的投影:
除了xoy上的地面投影好想也好算,yoz和xoz上的投影面积分均不太好直接想象出来,所以这道题的标准答案在各类参考书上都是以斯托克斯公式转为二型面积分进行计算,但现在既然我们已经有了各个面上的投影,也可以尝试用一型面积分的逐个投影来计算: