作业帮 > 综合 > 作业

用matlab画三维图像

来源:学生作业帮 编辑:大师作文网作业帮 分类:综合作业 时间:2024/11/11 19:24:19
用matlab画三维图像
曲面分别为y=x.^(2);y=x+2;4z=x.^(2)+y.^(2);z=x+3
需要在同一坐标系内画出 最好能得到所围的闭区域
用matlab画三维图像
对于多个曲面围成封闭区域的问题,似乎没有通用的好方法,只能具体问题具体分析. 由前两个方程可以求得,封闭区间的x范围是-1~2,y范围是0~4,如图所示:再进一步由第三个方程得z<=5,所以可用以下代码绘制曲面:x = -1:0.1:2;
y = x.^2;
z = 0:0.1:5;
[X1,Z1] = meshgrid(x,z);
Y1 = meshgrid(y,z);
mesh(X1,Y1,Z1)
hold on

y = x+2;
[X2,Z2] = meshgrid(x,z);
Y2 = meshgrid(y,z);
mesh(X2,Y2,Z2)

z = x+3;
y = 0:0.1:4;
[X3,Y3] = meshgrid(x,y);
Z3 = meshgrid(z,y);
mesh(X3,Y3,Z3)
hold off

view(-25,45)如果想把超出范围的部分消掉,可以在三个mesh函数前分别加上:X1(Y1>X1+2|Z1>X1+3) = NaN;
Z2(Y2<X2.^2|Z2>X2+3) = NaN;
Z3(Y3<X3.^2|Y3>X3+2) = NaN;但这样会导致曲面相交的位置不平整,效果差强人意:更好的做法应该是计算出各曲面相交的曲线,然后用patch来实现,但做起来还要花不少时间,就先这样吧.
再问: 还差一个函数啊
再答: 哦,抱歉。你写的都挤在一起,没注意到。 参考代码x = -1:0.1:2;
y = x.^2;
z = 0:0.1:5;[X1,Z1] = meshgrid(x,z);
Y1 = meshgrid(y,z);
X1(Y1>X1+2|Z1>X1+3|Z1<(X1.^2+Y1.^2)/4) = NaN;
mesh(X1,Y1,Z1)
hold ony = x+2;
[X2,Z2] = meshgrid(x,z);
Y2 = meshgrid(y,z);
Z2(Y2<X2.^2|Z2>X2+3|Z2<(X2.^2+Y2.^2)/4) = NaN;
mesh(X2,Y2,Z2)z = x+3;
y = 0:0.1:4;
[X3,Y3] = meshgrid(x,y);
Z3 = meshgrid(z,y);
Z3(Y3<X3.^2|Y3>X3+2) = NaN;
mesh(X3,Y3,Z3)x = -1:.1:2;
y = 0:0.1:4;
[X4,Y4] = meshgrid(x,y);
Z4 = (X4.^2+Y4.^2) / 4;
Z4(Y4<X4.^2|Y4>X4+2) = NaN;
mesh(X4,Y4,Z4)hold off
view(155,32)
rotate3d
 如果不想消除超出范围的部分,把四句赋值为NaN的语句去掉即可(换了一下视角):