- 1、本文档共8页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
用matlab画隐函数曲面 2009
用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.隐函数曲面网格图函数implicitmesh
function 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.隐函数曲面表面图函数implicitsurf
function h=implicitsurf(f,xlimit,ylimit,zlimit,gd)%implicitsurf(f,span,gd):画隐函数曲面f(x,y,z)=0的网格图,%????????????????????????? 各坐标范围均限定在span=[lb,ub],%????????????????????????? 网格数为gd,默认为25%implicitsu
文档评论(0)