matlab中怎么把f=@(x,y,z)x.^2+y.^2+4*z.^4+(4*y-4).*z.^2这个方程化成立体的形式,类似下图

(注意:只是类似,让他有立体感)然后颜色也要有渐变色,像是一个截面的感觉... (注意:只是类似,让他有立体感)然后颜色也要有渐变色,像是一个截面的感觉 展开
dukinkin
2014-04-02 · TA获得超过1.3万个赞
知道大有可为答主
回答量:2444
采纳率:90%
帮助的人:891万
展开全部

你这个是个三元函数,要是画图就是四维的了

按你的意思,你说要画满足f(x,y,z)=0方程的曲面吧

那么比较麻烦,先要解出方程z=fz(x,y),再根据fz画图

由于是四次方程,所以有四个解,还要考虑在实数范围

根据以上种种,写出了程序


f=@(x,y,z)x.^2+y.^2+4*z.^4+(4*y-4).*z.^2;

%从f(x,y,z)=0 解出来的z(x,y),有四组解分别是z1(x,y) z2(x,y) -z1(x,y) -z2(x,y)

z1=@(x,y) sqrt((1-sqrt(- x.^2 - 2*y + 1) - y)/2);

z2=@(x,y) sqrt((1+sqrt(- x.^2 - 2*y + 1) - y)/2);


[xx,yy]=meshgrid(-3:0.1:3,-3:0.1:0.6);%x范围-1~1 y范围-1.5~0.5(实数范围内y不会超过0.5)

zz1=z1(xx,yy);

zz1(abs(imag(zz1))>1e-6)=nan;%考虑在实数范围内,去除虚数部分

zz1=real(zz1);

zz2=z2(xx,yy);

zz2(abs(imag(zz2))>1e-6)=nan;

zz2=real(zz2);

zz3=-zz1;

zz4=-zz2;

mesh(xx,yy,zz1);hold on;

mesh(xx,yy,zz2);

mesh(xx,yy,zz3);

mesh(xx,yy,zz4);hold off;

xlabel('x');

ylabel('y');

zlabel('z');



得到的图像如下


像是两个筒其中有一点连起来

由于在边界处,计算的点出现虚数被删除,曲面边缘出现有点不连续

追问
你好厉害,但是我不是想画这个图,这个图我能画出来,我只是想在它上面立体感强,如我发的图上有等势线,然后是立体的感觉,好的话我再追加
追答
不是太明白你的意思
匿名用户
2014-04-02
展开全部
不会这个呢
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式