用matlab画隐函数曲面 2009.doc_第1页
用matlab画隐函数曲面 2009.doc_第2页
用matlab画隐函数曲面 2009.doc_第3页
用matlab画隐函数曲面 2009.doc_第4页
用matlab画隐函数曲面 2009.doc_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

用matlab画隐函数曲面 2009-02-28 15:00 matlab是一款功能强大的通用工程数学软件。利用matlab的作图功能可以轻而易举地绘制出各种复杂函数图形。利用ezplot甚至可以直接绘制隐函数曲线F(x,y)=0而无需将其写成y=f(x)的形式。然而十分可惜的是与之对应的ezsurf和ezmesh却对隐函数曲面F(x,y,z)=0的绘制无能为力。那么matlab究竟有没有用来绘制诸如F(x,y,z)=0的命令呢?答案毫无疑问是肯定的。事实上利用matlab的等值面函数isosurface就可以轻松搞定。关于isosurface的具体用法大家可以自己参看help。下面两个函数就是我利用isosurface编写的通用隐函数曲面绘制命令。1.隐函数曲面网格图函数implicitmeshfunction h=implicitmesh(f,xlimit,ylimit,zlimit,gd)%implicitmesh(f,span,gd):画隐函数曲面f(x,y,z)=0的网格图,% 各坐标范围均限定在span=lb,ub,% 网格数为gd,默认为25%implicitmesh(f,xspan,yspan,zspan,gd):画隐函数曲面f(x,y,z)=0,% 各坐标范围分别限定在xspan,yspan,zspan%h=implicitmesh(.):画隐函数曲面并输出句柄%例一:%implicitmesh(inline(x.*y+z.2),-5 5)%注意*一定要设成点运算%例二:%f=(x,y,z)x.2+y.2+0*z-1;%注意如果f中不含某个变量一定要加上诸如0*y的项。%implicitmesh(f,-1 1,10)%例三:%f=(x,y,z)(x.2 + (9/4)*y.2 + z.2 - 1).3 - x.2.*z.3 - (9/80)*y.2.*z.3;%g=(x,y,z)(sqrt(x.2+y.2)-2).2+z.2-.09;%implicitmesh(f,-1.5 1.5,-.8 .8,-1.5 1.5,50);%hold on%可以添加图形%h=implicitmesh(g,-2.3,2.3);%colormap hsv;set(h,facecolor,none);%可以设置各种效果%axis off;axis equal;if nargin=2 ylimit=xlimit;zlimit=xlimit;gd=25;elseif nargin=3 gd=ylimit;ylimit=xlimit;zlimit=xlimit;elseif nargin=4 gd=25;elseif nargin=5else error(Error in input arguments)endx=linspace(xlimit(1),xlimit(2),gd);y=linspace(ylimit(1),ylimit(2),gd);z=linspace(zlimit(1),zlimit(2),gd); x,y,z=meshgrid(x,y,z);val=f(x,y,z);f,v=isosurface(x,y,z,val,0);if isempty(f) warning(There is no graph in the range.); p=;else newplot; p=patch(Faces,f,Vertices,v,CData,v(:,3),facecolor,w,EdgeColor,flat); isonormals(x,y,z,val,p);view(3);grid onendif nargout=0else h=p;end下面是效果图,用的是帮助文件里的3个例子 2.隐函数曲面表面图函数implicitsurffunction h=implicitsurf(f,xlimit,ylimit,zlimit,gd)%implicitsurf(f,span,gd):画隐函数曲面f(x,y,z)=0的网格图,% 各坐标范围均限定在span=lb,ub,% 网格数为gd,默认为25%implicitsurf(f,xspan,yspan,zspan,gd):画隐函数曲面f(x,y,z)=0,% 各坐标范围分别限定在xspan,yspan,zspan%h=implicitsurf(.):画隐函数曲面并输出句柄%例一:%implicitsurf(inline(x.*y+z.2),-5 5)%注意*一定要设成点运算%例二:%f=(x,y,z)x.2+y.2+0*z-1;%注意如果f中不含某个变量一定要加上诸如0*y的项。%implicitsurf(f,-1 1,10)%例三:%f=(x,y,z)(x.2 + (9/4)*y.2 + z.2 - 1).3 - x.2.*z.3 - (9/80)*y.2.*z.3;%g=(x,y,z)(sqrt(x.2+y.2)-2).2+z.2-.09;%h=implicitsurf(f,-1.5 1.5,-.8 .8,-1.5 1.5,50);%set(h,AmbientStrength,.5);%可以设置各种效果%hold on%可以添加图形%h=implicitsurf(g,-2.3,2.3,-2.3,2.3,-.3,.3);%colormap hsv;set(h,AmbientStrength,.8,FaceAlpha,.5);%可以设置各种效果%axis off;axis equal;shading interp;camlight;lighting gouraud;if nargin=2 ylimit=xlimit;zlimit=xlimit;gd=25;elseif nargin=3 gd=ylimit;ylimit=xlimit;zlimit=xlimit;elseif nargin=4 gd=25;elseif nargin=5else error(Error in input arguments)endx=linspace(xlimit(1),xlimit(2),gd);y=linspace(ylimit(1),ylimit(2),gd);z=linspace(zlimit(1),zlimit(2),gd); x,y,z=meshgrid(x,y,z);val=f(x,y,z);f,v=isosurface(x,y,z,val,0);if isempty(f) warning(There is no graph in the range.); p=;else newplot; p=patch(Faces,f,Vertices,v,CData,v(:,3),facecolor,flat,EdgeColor,k); isonormals(x,y,z,val,p);view(3);grid onen

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论