数模论坛

 找回密码
 注-册-帐-号
搜索
热搜: 活动 交友 discuz
查看: 18802|回复: 21

求助高手MATLAB三维画图!!注意,又有新问题了!

[复制链接]
发表于 2005-4-29 19:46:39 | 显示全部楼层 |阅读模式
<>小弟跪求以下几个图形的MATLAB画法:
                                单叶双曲面                 (x^2)/9+(y^2)/16-(z^2)/25=1
                                双叶双曲面                 (x^2)/9+(y^2)/16-(z^2)/25=-1
                                椭圆抛物面                 (x^2)/16+(y^2)/25=2z
                                双曲抛物面                 (x^2)/16-(y^2)/25=2z
                                二次锥面                                                (x^2)/9+(y^2)/16-(z^2)/25=0</P><>大哥们帮帮忙啊,会画几个就教几个啊,小弟先谢了!!给出程序啊!!谢谢!!
</P>
[此贴子已经被作者于2005-5-2 23:21:52编辑过]

 楼主| 发表于 2005-4-29 20:16:32 | 显示全部楼层
<>对了,以上图形最好用参数方程画,其实也就是最好把图在圆域画出,不然象椭圆抛物面   (x^2)/16+(y^2)/25=2z
在一般的直角坐标画出来就象一张鱼网一样的,有四个尖角的,这样看不出来图形上面上一个椭圆啊!</P><>最后,希望高手快点帮忙啊!!</P>
发表于 2005-4-30 07:50:31 | 显示全部楼层
<>我看了一下,用参数方程作了如下程序,效果还好,你看看吧,其他的同理可以全部做完</P><>a=3;b=4;c=5;
z=zeros(1,length(x));
for i=-10:1:10
    ai=a*sqrt(1+i^2/c^2);
    bi=b*sqrt(1+i^2/c^2);
    x=linspace(-ai,ai,50);
    z(:,=i;
    y=sqrt((1-x.^2/ai^2)*bi^2);
    plot3(x,y,z);
    hold on
    plot3(x,-y,z);
    hold on
   
end</P>
发表于 2005-4-30 07:50:32 | 显示全部楼层
<>我看了一下,用参数方程作了如下程序,效果还好,你看看吧,其他的同理可以全部做完</P><>a=3;b=4;c=5;
z=zeros(1,length(x));
for i=-10:1:10
    ai=a*sqrt(1+i^2/c^2);
    bi=b*sqrt(1+i^2/c^2);
    x=linspace(-ai,ai,50);
    z(:,=i;
    y=sqrt((1-x.^2/ai^2)*bi^2);
    plot3(x,y,z);
    hold on
    plot3(x,-y,z);
    hold on
   
end</P>
发表于 2005-4-30 07:53:02 | 显示全部楼层
把上面i=-10:1:10改为i=-10:0.1:10好看些
发表于 2005-4-30 08:41:02 | 显示全部楼层
<>以上的有一点错误,忽略了一点细节 改正如下</P><>a=3;b=4;c=5;
x=linspace(-a,a,50);
z=zeros(1,length(x));
for i=-10:0.1:10
    ai=a*sqrt(1+i^2/c^2);
    bi=b*sqrt(1+i^2/c^2);
    x=linspace(-ai,ai,50);
    z(:,=i;
    y=sqrt((1-x.^2/ai^2)*bi^2);
    plot3(x,y,z);
    hold on
    plot3(x,-y,z);
    hold on
end</P>
 楼主| 发表于 2005-5-1 06:02:08 | 显示全部楼层
<>大哥真是厉害!果然不错!但是</P><>    椭圆抛物面   (x^2)/16+(y^2)/25=2z
    双曲抛物面   (x^2)/16-(y^2)/25=2z
这两个方程和第一个是不一样的啊?z是一次的,没有平方的啊!</P><>还有有些地方有点不明白,能不能告诉我你的QQ,我们QQ上聊一下啊!</P><P>我的QQ是87747199,我一般下午和晚上都在线的,你加我注明MATLAB就可以了,真是谢谢了!</P>
发表于 2005-5-1 07:44:52 | 显示全部楼层
<>其实这两个更简单,是你还没有理解我画图的思想,我的想法是对每个z,在z=i这个平面上画出椭圆,其实以上画的图都是由点组成的,只是每个椭圆取的点多</P><>对 椭圆抛物面 可以这样:</P><>a=4;b=5;
x=linspace(-a,a,50);
z=zeros(1,length(x));
for i=0:0.3:10
    ai=a*sqrt(2*i);
    bi=b*sqrt(2*i);
    x=linspace(-ai,ai,50);
    z(:,=i;
    y=sqrt((1-x.^2/ai^2)*bi^2);
    plot3(x,y,z);
    hold on
    plot3(x,-y,z);
    hold on
end</P><P> 双曲抛物面有两个参数方程,可以有两种方法,仔细琢磨,不难,下面是其中一种:</P><P> clear
a=4;b=5;
x=linspace(-10,10,100);
y=zeros(1,length(x));
for i=-10:0.2:10
    z=x.^2/(2*a^2)-i^2/(2*b^2);        
    y(:,=i;
    plot3(x,y,z,'b');
    hold on
    plot3(-x,y,z,'b');
    hold on
view([-62.50,4.00]);
end</P>
 楼主| 发表于 2005-5-10 04:14:38 | 显示全部楼层
谢谢了,不过有没有人可以编出动画啊??
发表于 2005-5-1 23:53:22 | 显示全部楼层
<>楼上是不是太复杂了啊!我觉得用3行就可以实现的程序没有必要那样!</P>
<>单叶双曲面   (x^2)/9+(y^2)/16-(z^2)/25=1</P>
<>程序如下:
[t,z]=meshgrid(-2*pi:pi/10:2*pi,-10:.5:10);
x=3*sqrt(z.^2/25+1)*cos(t);y=3*sqrt(z.^2/25+1)*sin(t);
mesh(x,y,z)</P>
<P>椭圆抛物面   (x^2)/16+(y^2)/25=2z</P>
<P>程序如下:</P>
<P>[x,y]=meshgrid(-8:.5:8,-8:.05:8);
z=(x.^2/16+y.^2/25)/2;
mesh(x,y,z)
    </P>
<P>双曲抛物面   (x^2)/16-(y^2)/25=2z</P>
<P>程序如下:</P>
<P>[x,y]=meshgrid(-8:.5:8,-8:.05:8);
z=(x.^2/16-y.^2/25)/2;
mesh(x,y,z)
</P>
[此贴子已经被作者于2005-5-1 21:16:47编辑过]

您需要登录后才可以回帖 登录 | 注-册-帐-号

本版积分规则

小黑屋|手机版|Archiver|数学建模网 ( 湘ICP备11011602号 )

GMT+8, 2024-4-25 14:17 , Processed in 0.054667 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表