Main Content

divergence

ベクトル場の発散を計算

説明

div = divergence(X,Y,Z,Fx,Fy,Fz) はベクトル成分 FxFyFz をもつ 3 次元ベクトル場の数値発散を計算します。

ベクトル成分 FxFyFz の座標を定義する配列 XYZ は、単調でなければなりませんが、等間隔でなくてもかまいません。meshgrid で生成される XYZ は同じサイズの 3 次元配列でなければなりません。

div = divergence(Fx,Fy,Fz) は、サンプル点の既定のグリッドを想定します。既定のグリッド点 XYZ[m,n,p] = size(Fx) である式 [X,Y,Z] = meshgrid(1:n,1:m,1:p) で決定されます。この構文は、点の間の絶対距離を考慮せず、メモリを節約する場合に使用します。

div = divergence(X,Y,Fx,Fy) はベクトル成分 FxFy をもつ 2 次元ベクトル場の数値発散を計算します。

FxFy の座標を定義する行列 XY は、単調でなければなりませんが、等間隔でなくてもかまいません。meshgrid で生成される XY は同じサイズの 2 次元行列でなければなりません。

div = divergence(Fx,Fy) は、サンプル点の既定のグリッドを想定します。既定のグリッド点 XY[m,n] = size(Fx) である式 [X,Y] = meshgrid(1:n,1:m) で決定されます。この構文は、点の間の絶対距離を考慮せず、メモリを節約する場合に使用します。

すべて折りたたむ

気流を表す 3 次元ベクトル場のデータセットを読み込みます。データセットにはサイズが 35 x 41 x 15 の配列が含まれます。

load wind

ベクトル場の数値発散を計算します。

div = divergence(x,y,z,u,v,w);

ベクトル ボリューム データの発散をスライス平面として表示します。x=90x=134 をもつ yz 平面、y=59 をもつ xz 平面、z=0 をもつ xy 平面で発散を表示します。色を使用して発散を示します。

h = slice(x,y,z,div,[90 134],59,0);
shading interp
colorbar
daspect([1 1 1]);
axis tight
camlight
set([h(1),h(2)],'ambientstrength',0.6);

Figure contains an axes object. The axes object contains 4 objects of type surface.

2 次元座標とベクトル場を指定します。

[x,y] = meshgrid(-8:2:8,-8:2:8);
Fx = 200 - (x.^2 + y.^2);
Fy = 200 - (x.^2 + y.^2);

ベクトル場の成分 FxFy をプロットします。

quiver(x,y,Fx,Fy)

Figure contains an axes object. The axes object contains an object of type quiver.

2 次元ベクトル場の数値発散を求めます。発散の等高線をプロットします。

D = divergence(x,y,Fx,Fy);
hold on
contour(x,y,D,'ShowText','on')

Figure contains an axes object. The axes object contains 2 objects of type quiver, contour.

入力引数

すべて折りたたむ

入力座標。行列または 3 次元配列として指定します。

  • 2 次元ベクトル場の場合、XY は同じサイズの 2 次元行列でなければならず、そのサイズは 22 列以上でなければなりません。

  • 3 次元ベクトル場の場合、XYZ は同じサイズの 3 次元配列でなければならず、そのサイズは 2 x 2 x 2 以上でなければなりません。

データ型: single | double
複素数のサポート: あり

入力座標のベクトル場の成分。行列または 3 次元配列として指定します。FxFyFzXYZ と同じサイズでなければなりません。

データ型: single | double
複素数のサポート: あり

詳細

すべて折りたたむ

数値発散

ベクトル場の "数値発散" は、特定の点でのベクトル場の既知の値を使用して発散の値を推定する方法です。

3 変数 F(x,y,z)=Fx(x,y,z)e^x+Fy(x,y,z)e^y+Fz(x,y,z)e^z の 3 次元ベクトル場の場合、F の発散の定義は次のようになります。

div F=·F=Fxx+Fyy+Fzz.

2 変数 F(x,y)=Fx(x,y)e^x+Fy(x,y)e^y の 2 次元ベクトル場の場合、発散は次のようになります。

div F=·F=Fxx+Fyy.

アルゴリズム

divergence は、有限差分を使用してその定義で偏導関数を計算します。内部データ点の場合、偏導関数は "中心差分" を使用して計算されます。端のデータ点の場合、偏導関数は "片側 (前進) 差分" を使用して計算されます。

たとえば、位置が XY でサイズが mn 列の行列 FxFy で表される 2 次元ベクトル場 F について考えます。位置は [X,Y] = meshgrid(x,y) で作成された 2 次元グリッドです。ここで、x は長さ n のベクトル、y は長さ m のベクトルです。divergence は偏導関数 ∂Fx / ∂x∂Fy / ∂y を次のように計算します。

  • dFx(:,i) = (Fx(:,i+1) - Fx(:,i-1))/(x(i+1) - x(i-1)) および

    dFy(j,:) = (Fy(j+1,:) - Fy(j-1,:))/(y(j+1) - y(j-1))

    (内部データ点の場合)

  • dFx(:,1) = (Fx(:,2) - Fx(:,1))/(x(2) - x(1)) および

    dFx(:,n) = (Fx(:,n) - Fx(:,n-1))/(x(n) - x(n-1))

    (左端と右端のデータ点の場合)

  • dFy(1,:) = (Fy(2,:) - Fy(1,:))/(y(2) - y(1)) および

    dFy(m,:) = (Fy(m,:) - Fy(m-1,:))/(y(m) - y(m-1))

    (上端と下端のデータ点の場合)

ベクトル場の数値発散は div = dFx + dFy と等価です。

拡張機能

バージョン履歴

R2006a より前に導入