2変数関数のグラフの鳥瞰図を線画で描くには、 mesh() という関数を使う。 meshc() は同時に等高線も描く。
シェーディングされた面の集まりとして描くには、 surf(), surfc() を使う。
size(meshgrid(a:(b-a)/m:b,c:(d-c)/n:d))
とすると、 [n+1 m+1] という結果が返ってくる。
,
,
,
,
,
の場合、
7行6列の行列が返る。
の各辺を m, n 等分するグリッドを作る
[X,Y]=meshgrid(a:(b-a)/m:b,c:(d-c)/n:d);
>> a=0;b=5;c=0;d=3;m=5;n=6;
>> size(meshgrid(a:(b-a)/m:b,c:(d-c)/n:d))
ans =
7 6
>> [X,Y]=meshgrid(a:(b-a)/m:b,c:(d-c)/n:d)
X =
0 1 2 3 4 5
0 1 2 3 4 5
0 1 2 3 4 5
0 1 2 3 4 5
0 1 2 3 4 5
0 1 2 3 4 5
0 1 2 3 4 5
Y =
0 0 0 0 0 0
0.5000 0.5000 0.5000 0.5000 0.5000 0.5000
1.0000 1.0000 1.0000 1.0000 1.0000 1.0000
1.5000 1.5000 1.5000 1.5000 1.5000 1.5000
2.0000 2.0000 2.0000 2.0000 2.0000 2.0000
2.5000 2.5000 2.5000 2.5000 2.5000 2.5000
3.0000 3.0000 3.0000 3.0000 3.0000 3.0000
素朴な発想?
% [-2,2]×[-1,1] で x^2-y^2 のグラフを描く
nx=50;
ny=40;
hx=4/nx;
hy=2/ny;
X=-2:hx:2;
Y=-1:hy:1;
Z=zeros(ny+1,nx+1);
for i=0:nx
x=-2+i*hx;
for j=0:ny
y=-1+j*hy;
Z(j+1,i+1)=x^2-y^2;
end
end
clf
mesh(X,Y,Z)
MATLABらしい書き方?
nx=50;
ny=40;
hx=4/nx;
hy=2/ny;
[X,Y]=meshgrid(-2:hx:2,-1:hy:1);
Z=X.^2-Y.^2;
clf
mesh(X,Y,Z)
mesh(), meshc(), surf(), surfc() の違いを見ておこう。
2017-06-19