mdsk.net
当前位置:首页 >> 用mAtlAB如何使分段函数绕y轴旋转成为三维图形? >>

用mAtlAB如何使分段函数绕y轴旋转成为三维图形?

不太懂你的意思.help一下 plot3,surf, mesh也许对你有帮助

% 函数数据R=-78.292;k=-0.586593;x = linspace(0, 42, 50).';z = x.^2 ./ ( R*(1+sqrt(1-(1+k)*x.^2/R^2)) );% 旋转曲面数据n = 20; % 旋转一周所取点的个数theta = (0:n)/n*2*pi;sintheta = sin(theta); sintheta(n+1) = 0;X = x * cos(theta);Y = x * sintheta;Z = z * ones(1,n+1);% 绘图surf(X,Y,Z)

你是之所以出现错误是因为,符号类型变量k不能直接和数值比较大小,你可以这样来实现你要的功能. 建立f_z函数m文件 function y=f_z(s,e) %s 累加起始值 %e 累加结束值 syms a z k; if s=0 %如果s,e符号不同则需要分段级数累加 y=symsum(0*z^(-k),k,s,0)+symsum(a^k*z^(-k),k,1,e); elseif s> g=f_z(0,inf) g = -a/(a-z) 当然你可以计算任意,累加的值,比如说 >>g=f_z(-100,2) g = a/z+a^2/z^2 >> g=f_z(2,inf) g = -a^2/z/(a-z)

首先,你用的plot画出来的是一个二维的图形,即使通过旋转,在视觉上你也只能看到一个投影的平面图,为了解决这个问题我们得把你需要的曲线用plot3画成空间曲线,这样就能看到旋转效果命令如下:>> p=-2*pi:0.01:2*pi;>> z=zeros(size(p))

clf;shg,x=3*pi*(-1:0.05:1);y=x;[X,Y]=meshgrid(x,y);Z=X.*Y;h=surf(X,Y,Z);colormap(jet);axis offn=12;mmm=moviein(n);for i=1:nrotate(h,[0 0 1],20);mmm(:,i)=getframe;pause(0.5)endmovie(mmm,5,10)

f=@(x,y)((58+(x-50)*0.25+(y-200)*0.512).*(x>50&y>200)+(58+(x-50)*0.25).*(x>50&y>0&y<=200)+(58+(y-200)*0.512).*(x>0&x<=50&y>200)+58.*(x>0&x<=50&y>0&y<=200));[x,y]=meshgrid(0:50,0:200);surf(x,y,f(x,y))行不行!

^学习一自下mesh()函数2113作图5261即可:4102>> [D1,D2]=meshgrid(0:0.05:1);>> f = @(D1,D2) (4*D2-4*D1.*D2-2*D2.^16532).*(D2<D1&D1+D2<1) + 2*(1-D1).^2.*(D2<D1&D1+D2>=1)+(4*D2-4*D2.^2-2*D1.^2).*(D2>=D1&D1+D2<1) + (2-4*D1+4*D1.*D2-2*D2.^2).*(D2>D1&D1+D2>=1);>> p = f(D1,D2);>> mesh(D1,D2,p);>> xlabel('D1');ylabel('D2');zlabel('p_0')

一般plotyy是绘制左右y轴的.你可以试试hold on.画一个图之后 hold on在画另外一个,然后另外一个图就是在你之前那个图上面画出来的.

如果没有理解错的话,应该是以题中函数自变量x正方向为轴进行旋转.这样得到的曲面如下图所示:只需要在原来代码后面加入如下片段即可:figure[X,Y,Z] = cylinder(y);surf(X,Y,Z)axis square

先根据平面的表示式获得旋转图的z=f(x,y)的表示式,再绘图 help meshgrid help plot3 help mesh help surface

pxlt.net | so1008.com | ntxp.net | rprt.net | fkjj.net | 网站首页 | 网站地图
All rights reserved Powered by www.mdsk.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com