%%
% Gradient
% https://jp.mathworks.com/help/matlab/ref/gradient.html
clear; clc;     % 変数をクリア、コマンドウィンドウの表示を消去
x = -2:0.2:2;   % -2から2まで0.2ずつ値を増やした要素を持つ行ベクトルを作成
y = x';         % 'は転置(transpose)
z = exp(-(x.^2 + y.^2));    % exp(-r^2) (2次元正規分布)
[px,py] = gradient(z);      % 勾配; grad z を数値的に計算
%
figure;                     % 新たにグラフ描画ウィンドウを作成
contour(x,y,z);             % z(x,y)のグラフの等高線を描く
hold on;                    % 今表示されているグラフを保持して次のコマンドを上書き
quiver(x,y,px,py);          % ベクトル場[px(x,y), py(x,y)]を描く
hold off;                   % hold onを解除
%%
figure;
surf(x,y,z);                % z(x,y)の3次元グラフを描く