作业帮 > 综合 > 作业

MATLAB画图怎么画出这个图像

来源:学生作业帮 编辑:拍题作业网作业帮 分类:综合作业 时间:2024/04/29 11:04:47
MATLAB画图怎么画出这个图像
我试了很多种方法,总是画不出下面这个函数的图像
f=sqrt((x+2)^2+(y-2)^2+(z-2)^2)-sqrt((x+2)^2+(y-2)^2+(z+2)^2)-9
这是四维绘图,而且xyz之间没有关系,不能降维,只能给你画f为定值的隐函数图像,为了好计算说明f可取整数.但是f在等于某些值时,这个方程无解,即没有xyz值满足你的方程,所以你画不出这个方程的图像.也就是sqrt((x+2)^2+(y-2)^2+(z-2)^2)-sqrt((x+2)^2+(y-2)^2+(z+2)^2)的值域在-3到3之间,要画出图则sqrt((x+2)^2+(y-2)^2+(z-2)^2)-sqrt((x+2)^2+(y-2)^2+(z+2)^2)-9-f=0必须有解,这时解出f可能的值就是6,7,8,和-9,-10,-11,-12.下面是f=8和-10时的图像.
clear all
[x,y,z]=meshgrid(-20:1:20,-20:01:20,-20:1:20);
 
f1=sqrt((x+2).^2+(y-2).^2+(z-2).^2)-sqrt((x+2).^2+(y-2).^2+(z+2).^2)+1;%f=-10
f2=sqrt((x+2).^2+(y-2).^2+(z-2).^2)-sqrt((x+2).^2+(y-2).^2+(z+2).^2)-1;%f=8
 
[d1,m1]=isosurface(x,y,z,f1,0);
[d2,m2]=isosurface(x,y,z,f2,0);
 
figure(1)
patch('faces',d1,'vertices',m1,'facevertexcData',jet(length(m1)),'facecolor','k','edgecolor','flat');
grid on
view(3);
xlabel('X'),ylabel('Y'),zlabel('Z');title('f=-10');
figure(2)
patch('faces',d2,'vertices',m2,'facevertexcData',jet(length(m2)),'facecolor','k','edgecolor','flat');
grid on
view(3);
xlabel('X'),ylabel('Y'),zlabel('Z');title('f=8');