Main Content

divergence

벡터장의 발산 계산

설명

예제

div = divergence(X,Y,Z,Fx,Fy,Fz)는 벡터 성분 Fx, Fy, Fz를 포함하는 3차원 벡터장의 수치적 발산을 계산합니다.

벡터 성분 Fx, Fy, Fz에 대한 좌표를 정의하는 배열 X, Y, Z는 단조(Monotonic) 배열이어야 하나, 간격이 균일할 필요는 없습니다. X, Y, Z는 동일한 크기의 3차원 배열이어야 하며, 이는 meshgrid로 생성할 수 있습니다.

div = divergence(Fx,Fy,Fz)는 샘플 점의 디폴트 그리드를 가정합니다. 디폴트 그리드 점 X, Y, Z는 표현식 [X,Y,Z] = meshgrid(1:n,1:m,1:p)로 결정됩니다. 여기서 [m,n,p] = size(Fx)입니다. 메모리를 절약하고 점 간 절대 거리를 고려하지 않으려면 이 구문을 사용하십시오.

예제

div = divergence(X,Y,Fx,Fy)는 벡터 성분 Fx, Fy를 포함하는 2차원 벡터장의 수치적 발산을 계산합니다.

Fx, Fy에 대한 좌표를 정의하는 행렬 X, Y는 단조(Monotonic) 행렬이어야 하나, 간격이 균일할 필요는 없습니다. X, Y는 동일한 크기의 2차원 행렬이어야 하며, 이는 meshgrid로 생성할 수 있습니다.

div = divergence(Fx,Fy)는 샘플 점의 디폴트 그리드를 가정합니다. 디폴트 그리드 점 X, Y는 표현식 [X,Y] = meshgrid(1:n,1:m)으로 결정됩니다. 여기서 [m,n] = size(Fx)입니다. 메모리를 절약하고 점 간 절대 거리를 고려하지 않으려면 이 구문을 사용하십시오.

예제

모두 축소

바람의 흐름을 나타내는 3차원 벡터장 데이터 세트를 불러옵니다. 데이터 세트는 크기가 35×41×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차원 벡터장의 경우, X, Y는 동일한 크기의 2차원 행렬이어야 하며, 크기는 2×2보다 작을 수 없습니다.

  • 3차원 벡터장의 경우, X, Y, Z는 동일한 크기의 3차원 배열이어야 하며, 크기는 2×2×2보다 작을 수 없습니다.

데이터형: single | double
복소수 지원 여부:

입력 좌표에서의 벡터장 성분으로, 행렬 또는 3차원 배열로 지정됩니다. Fx, Fy, FzX, Y, Z와 크기가 동일해야 합니다.

데이터형: single | double
복소수 지원 여부:

세부 정보

모두 축소

수치적 발산

벡터장의 수치적 발산은 특정 점에서 알려진 벡터장 값을 사용하여 발산의 값을 추정하는 한 가지 방법입니다.

3개의 변수로 구성된 3차원 벡터장 F(x,y,z)=Fx(x,y,z)e^x+Fy(x,y,z)e^y+Fz(x,y,z)e^z의 경우, F의 발산은 다음과 같이 정의됩니다.

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

2개의 변수로 구성된 2차원 벡터장 F(x,y)=Fx(x,y)e^x+Fy(x,y)e^y의 경우, 발산은 다음과 같이 정의됩니다.

div F=·F=Fxx+Fyy.

알고리즘

divergence는 유한 차분을 사용하여 정의에서 편도함수를 계산합니다. 내부 데이터 점의 경우 편도함수는 중심 차분을 사용하여 계산됩니다. 가장자리에 있는 데이터 점의 경우 편도함수는 단방향(전향) 차분을 사용하여 계산됩니다.

예를 들어, 위치 XY에서 행렬 FxFy로 표현되는 크기 m×n의 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 이전에 개발됨