matlab 隐函数三维图问题

问题描述:

matlab 隐函数三维图问题
我用的isosurface和 patch,我的程序是:
function sita45
[x,y,z]=meshgrid(linspace(-150,150,200),linspace(-150,150,200),linspace(-150,150,200));
v=(3*x./(x+y+z)-1.13).^2+(3*y./(x+y+z)-0.75).^2+(3*z./(x+y+z)-1.13).^2+0.28-(2/3)*(log(300./abs(x+y+z))).^2;
p=patch(isosurface(x,y,z,v,0));
view(3)
set(p,'FaceColor','blue','EdgeColor','none');
camlight; lighting phong
画出来是关于原点对称的,但是我只要正的那个图.约束条件应该是x+y+z>0,我就不知道应该怎样画了.而且有了这个条件以后log里面也不用加绝对值了.
注意:不能直接把x,y,z的范围分别改成正的,因为我并不是只要第一象限,可以改一下试试就明白.
1个回答 分类:综合 2014-11-11

问题解答:

我来补答
function sita45
[x,y,z]=meshgrid(linspace(-150,150,200),linspace(-150,150,200),linspace(-150,150,200));
v=(3*x./(x+y+z)-1.13).^2+(3*y./(x+y+z)-0.75).^2+(3*z./(x+y+z)-1.13).^2+0.28-(2/3)*(log(300./abs(x+y+z))).^2;
v(x+y+z
再问: 太感谢了,还有一个问题,我还要在这个图上加两个函数: x=y=z;就是一条直线 ((x-y).^2+(y-z).^2+(z-x).^2)*4.5=x+y+z;这是一个圆锥 怎样将这两个图加到原来的图上去?最好把整个程序给我,谢谢啦! P.S.能给我你的QQ吗?我不是专门做这个的,水平太菜啦,希望有其他问题还能请教你。
再答: function sita45 plot3([0 150],[0 150],[0 150],'k');hold on [x,y,z]=meshgrid(linspace(-20,150)); v=(3*x./(x+y+z)-1.13).^2+(3*y./(x+y+z)-0.75).^2+(3*z./(x+y+z)-1.13).^2+0.28-(2/3)*(log(300./abs(x+y+z))).^2; c=cat(4,v,-x-y-z);%加这句 v=max(c,[],4);%加这句 p=patch(isosurface(x,y,z,v,0)); set(p, 'FaceColor', 'blue', 'EdgeColor', 'none'); q=patch(isosurface(x,y,z,max(cat(4,((x-y).^2+(y-z).^2+(z-x).^2)*4.5-x-y-z,-x-y-z),[],4),0),'FaceColor', 'r', 'EdgeColor', 'none'); camlight;lighting phong;alpha .4;grid on
 
 
展开全文阅读
剩余:2000
下一页:绘图
也许感兴趣的知识