matlab画半圆

(2014-01-07 05:41:01)

clear % 清除所有workspace中的变量。

[x,y] = meshgrid ([-1:.05:1]);

% 这是在打网点,自变量x和y的取值范围都是从-1到1,每个点的间距是0.05,间距越细密图形越精确;matlab画图都是通过把区间离散化为格点的方法画图的,计算每一个格点的函数值然后把每个点及其对应的函数值描上就是在画图。这里由于是二元函数,自变量所在是一个区域,所以最后格点就组成了一个网。

Z=sqrt(1-X.^2-Y.^2)+eps;

% 这就是在计算球面方程每一个点的函数数值了,+eps就是加matlab认为的非常非常小的一个数,这么做是只是为了让图形不至于出现可能的小坑,不加也无所谓;X右下方的.表示是在进行点对点运算,因为在这里,X和Y都是矩阵,如果不加点,matlab就会把X^2进行矩阵运算,但我们这里不是要这么做,我们只是在求每一点的函数值,也就是把每一个x格点平方就可以了,所以必须加点,让matlab知道我们是想这么算。

Z((X.^2+Y.^2)>1)=0;

% 这个含义很明显啊,(X.^2+Y.^2)>1显然没法开根号,要是不让z=0,matlab就会给你算出虚数,说不定也给画在图上,你想看到吗?所以就让所有这样的点数值为零。

mesh(X,Y,abs(Z))

% 就是在画三维图

title('球面x.^2+y.^2+z.^2=1'); axis([-1 2 -1 1 0 1]);

这些都是在设置画出来的图形。title是在加标题,axis是在标坐标轴上的点。

这里每一行的matlab命令后都有分号,加分号是为了不让这一行计算的结果显示在命令窗口里,导致窗口显示的东西过多。不加分号就自动输出了结果。如果我们需要看到什么结果,就不加分号就完了