Octave で「ソンブレロ」を描画
3 次元空間の曲面,いわゆる「ソンブレロ」を描く。
z = sin(sqrt(x^2 + y^2)) / (sqrt(x^2 + y^2))
$z = \displaystyle \frac{\sin \big(\sqrt{x^2 + y^2}\big)}{\sqrt{x^2 + y^2}}$
sombrero()
sombrero(n)
z = sombrero(…)
[x, y, z] = sombrero(…)
Plot the familiar 3-D sombrero function.
The function plotted is
引数無しで呼べば [-8, 8] での曲面を描く。
n
がスカラーならば n
本のグリッドで曲面を描く(n=41
がデフォルト)。
戻り値を 1 個指定した場合は z
座標値を返す。
戻り値を 3 個指定した場合は x
, y
, z
座標値を返し,引き続いて surf(x, y, z)
で曲面, mesh(x, y, z)
でワイヤーフレームを描くことができる。
sombrero()
colormap("pink")
sombrero(100)
[x, y, z] = sombrero(21);
colormap("autumn")
surf(x, y, z)
colormap("spring")
mesh(x, y, z)
sombrero()
の結果を使わずに meshgrid()
を計算し,z
座標を計算して,さらに mesh()
でワイヤーフレームを描くのは以下のようになる。
colormap("summer")
tx = ty = linspace(-8, 8, 21)';
[x, y] = meshgrid(tx, ty);
r = sqrt(x .^ 2 + y .^ 2) + eps;
z = sin(r) ./ r;
mesh(x, y, z);
xlabel("x");
ylabel("y");
zlabel("z");
title("3-D Sombrero plot");