用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
来源:学生作业帮助网 编辑:作业帮 时间:2024/11/18 06:15:56
用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
用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的时候出现了问题,画出来的图像是这样的:
但实际上应该是这样
中间的那个
用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
原因分析
你把公式输错了,得到的图当然有问题.
把最后的一句
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);