8

たとえば、関数をプロットしたい

f(x,y) =sin(x^2+y^2)/(x^2+y^2),       x^2+y^2 <=4π

Mathematicaでは、次のように実行できます。

Plot3D[Sin[x^2 + y^2]/(x^2 + y^2), {x, -4, 4}, {y, -4, 4}, 
 RegionFunction -> (#1^2 + #2^2 <= 4 Pi &)]

RegionFunctionプロットするx、yの領域を指定した 場合。ここに画像の説明を入力してください

4

2 に答える 2

5

これは、見たくない領域の関数値を無限大に設定する、特に洗練されたソリューションではありません。

[x, y] = meshgrid(-4:0.1:4, -4:0.1:4);
z = sin(x.^2+y.^2)./(x.^2+y.^2);
idx = x.^2 + y.^2 > 4*pi;
z(idx) = -Inf;
surf(x, y, z); axis vis3d;

編集します。実際、より細かいグリッド(たとえば、-4:0.01:4)を試して追加shading interpしても、それほど悪くはありません。

于 2012-11-14T04:30:08.620 に答える
3

3lectrologosのソリューションのわずかなバリエーションで、必要なものを維持することに重点を置いています。

x = -4*pi:0.01:4*pi;
y = -4*pi:0.01:4*pi;
[X,Y] = meshgrid(x,y);
Clean = (X.^2 + Y.^2)<=4*pi;
Y = Y.*Clean;
X = X.*Clean;

X(~any(X,2),:) = [];
X(:, ~any(X,1)) = [];
Y(~any(Y,2),:) = [];
Y(:, ~any(Y,1)) = [];

F = sin(X.^2+Y.^2)./(X.^2+Y.^2);
mesh(X,Y,F)

この場合、(0,0)がソリューションプロファイルに含まれていることを確認する必要があることに注意してください。

編集:より簡単なプロットのための行列の圧縮

于 2012-11-14T05:07:30.373 に答える