用matlab画球谐函数 dz2 图像出错

问题描述:

用matlab画球谐函数 dz2 图像出错
function y;
figure;
p=-pi:pi/100:pi;t=0:2*pi/150:pi;[P,T]=meshgrid(p,t);
theta=pi/2-P;phi=T;
R=Ypz(theta,phi);[X,Y,Z]=sph2cart(T,P,R);mesh(X,Y,Z);
axis equal;
xlabel('X');ylabel('Y');zlabel('Z');title('Ydz^2')
function y=Ypz(theta,phi);
y=sqrt(5/16/pi)*abs(3.*cos (theta).*cos (theta).*cos(phi));

因为我自己不会用matlab所以是参考《基于MATLAB》这篇文章的,链接如下:
但是在画dz^2的时候出现了问题,画出来的图像是这样的:

但实际上应该是这样
中间的那个

1个回答 分类:综合 2014-10-15

问题解答:

我来补答
原因分析
你把公式输错了,得到的图当然有问题.
把最后的一句
y=sqrt(5/16/pi)*abs(3.*cos (theta).*cos (theta).*cos(phi));
改成
y=sqrt(5/16/pi)*abs(3.*cos(theta).*cos(theta)-1);
即可(不知你原来的公式从哪里来的?)

 
 
进一步改进
我给稍微调整了一下视角,并加了光照效果,可能更接近原图:
function y
figure;
p=-pi:pi/100:pi;t=0:2*pi/150:pi;[P,T]=meshgrid(p,t);
theta=pi/2-P;phi=T;
R=Ypz(theta,phi);[X,Y,Z]=sph2cart(T,P,R);
surf(X,Y,Z,'facecolor',[0 .7 1],'edgecolor','none');
light
lighting phong
material shiny
axis equal;
view(60,15)
xlabel('X');ylabel('Y');zlabel('Z');title('Y_{dz^2}')
function y=Ypz(theta,phi);
y=sqrt(5/16/pi)*abs(3.*cos(theta).*cos(theta)-1);
 
 
展开全文阅读
剩余:2000
也许感兴趣的知识