作业帮 > 综合 > 作业

大侠,我刚才问那个"matlab怎样把2维图叠加成3维图"的那人,

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/14 03:31:55
大侠,我刚才问那个"matlab怎样把2维图叠加成3维图"的那人,
我有个含xyz的3元方程
是1./2.*(820000.*z.*9.8./0.05415).*[y.^2.*(x-y./3)-4./3.*((2000000-1000000)./(1820000-1000000)).*x.^3-(((2.*x-y).*y).^0.5).^2.*((-2.*((((2.*x-y).*y).^0.5)./x).*((((2.*x-y).*y).^0.5)./x.*cos(5.*pi./6)+((x.^2-(((2.*x-y).*y).^0.5).^2).^0.5./x).*sin(5.*pi./6)).*0.05415./(1820000.*x.^2.*z.*9.8)-(4./3).*2000000./1820000+(2./3-((x.^2-(((2.*x-y).*y).^0.5).^2).^0.5./x)+(1./3).*((x.^2-(((2.*x-y).*y).^0.5).^2).^0.5./x).^3)+1000000./1820000.*(2./3+((x.^2-(((2.*x-y).*y).^0.5).^2).^0.5./x)-(1./3).*(((x.^2-(((2.*x-y).*y).^0.5).^2).^0.5./x)).^3)).*x./[(1000000./1820000-1).*((((2.*x-y).*y).^0.5)./x).^2])]-((((2.*x-y).*y).^0.5).*sin(acos(y./x-1)-(5.*pi./6)))=0
刚才用你给的第二个方法isosurface得到了其在x[0 0.000001],y[0 0.000001],z[0 50000]的3维图形
但第一个方法不知道怎么样才能得到他的图形,不知道怎样设定xyz的取值区间,你能帮我列下程序吗,谢谢取值区间为x[0 0.000001],y[0 0.000001],z[0 50000]
主要第一个程序没设置xyz区间的地方,我不会弄;第二个开头有,比较好搞
这个表达式可真够长的. 之前说过,使用ezplot画图的代码如果曲线不连续会有问题,这个问题对于现在这个函数表现更为明显,所以我把这部分代码改了改.其实第一种方法的xyz区间设置也很容易:x和y都在ezplot函数中,z是for循环的那个ii.需要注意的是,表达式中有z作为分母的项,所以z不能取0.代码如下:syms x y z
f=1/2*(820000*z*9.8/0.05415)*(y^2*(x-y/3)-4/3*((2000000-1000000)/...
    (1820000-1000000))*x^3-(((2*x-y)*y)^0.5)^2*((-2*((((2*x-y)*y)^...
    0.5)/x)*((((2*x-y)*y)^0.5)/x*cos(5*pi/6)+((x^2-(((2*x-y)*y)^...
    0.5)^2)^0.5/x)*sin(5*pi/6))*0.05415/(1820000*x^2*z*9.8)-(4/3)*...
    2000000/1820000+(2/3-((x^2-(((2*x-y)*y)^0.5)^2)^0.5/x)+(1/3)*...
    ((x^2-(((2*x-y)*y)^0.5)^2)^0.5/x)^3)+1000000/1820000*(2/3+((x...
    ^2-(((2*x-y)*y)^0.5)^2)^0.5/x)-(1/3)*(((x^2-(((2*x-y)*y)^0.5)...
    ^2)^0.5/x))^3))*x/((1000000/1820000-1)*((((2*x-y)*y)^0.5)/x)-...
    ^2)))((((2*x-y)*y)^0.5)*sin(acos(y/x-1)-(5*pi/6)));
clf
for ii=linspace(1,50000,10)
    h=ezplot(subs(f,z,ii),[0 0.000001],[0 0.000001]);
    for jj=1:length(h)
        set(h(jj),'zData', ii*ones(size(get(h(jj),'xData'))));
    end
    hold on
end
zlabel('z');
view(-25,30)
axis auto 绘图效果: