델 연산자(Del Operator) : Mathematica

Last Updated on 2024-05-13 by BallPen

델 연산자를 통해 기울기(그래디언트, gradient), 발산(다이버전스, divergence), 회전(컬, curl), 라플라시안(laplacian)연산을 하는데요.

매스매티카를 이용해 그러한 연산을 어떻게 하는지를 알아봐요. 만약 매스매티카에 익숙하지 않다면 관련 코드는 무시하시고 내용 흐름만 보시기 바랍니다.

아래는 이번 글의 목차에요.

델 연산을 시작하기 전에 설명에 필요한 2차원 스칼라장 함수 T를 먼저 정의할게요.

\tag{1}
T = -2 \cos(x)\sin(y)

이 함수는 2차원 좌표 (x,y)에 따라 T의 크기가 결정되는데요. 매스매티카의 Plot3D와 ContourPlot 명령어로 그려보면 다음과 같아요.

Plot3D[-2Cos[x]Sin[y], {x, -5, 5},{y, -5, 5}]
ContourPlot[-2Cos[x]Sin[y] , {x, -5, 5},{y, -5, 5}]
[그림 1] Plot3D로 그린 (1)식의 스칼라장
[그림 1] Plot3D로 그린 (1)식의 스칼라장
[그림 2] ContourPlot로 그린 (1)식의 스칼라장
[그림 2] ContourPlot로 그린 (1)식의 스칼라장

[그림 1]에서 T가 큰 곳은 위로 볼록하게, T가 작은 곳은 오목하게 표현됩니다. 또한 [그림 2]에서는 T가 큰 곳은 밝게, T가 작은 곳은 어둡게 표현됩니다.

매스매티카에서 델 연산자를 이용한 기울기 연산은 Grad 명령어를 사용합니다.

(1)식의 스칼라장 함수 T에 Grad 명령어를 적용하여 기울기(gradient) \nabla T를 구하려면 다음과 같이 입력하세요.

Grad[-2Cos[x]Sin[y],{x,y}]

그러면 다음의 벡터장 함수를 출력합니다. 쉼표를 기준으로 첫번째 항은 x성분의 크기이고, 두번째 항은 y성분의 크기에요.

{2 Sin[x] Sin[y],-2 Cos[x] Cos[y]} 

위 출력결과를 익숙한 형태로 바꾸어 표현하면 다음과 같아요.

\tag{2}
\nabla T = 2 \sin(x)\sin(y) \hat x -2 \cos (x) \cos(y) \hat y

그럼 (2)식을 매스매티카의 VectorPlot 명령어로 그려볼게요. [그림 3]이 그 결과인데요. 비교를 위해 [그림 2]를 다시 나타냈어요. 서로 비교해보세요.

VectorPlot[{2Sin[x]Sin[y], -2Cos[x]Cos[y]},{x, -5, 5},{y, -5, 5},VectorScaling->Automatic, VectorSizes->Automatic]
[그림 2] (1)식의 스칼라장
[그림 2] (1)식의 스칼라장
[그림 3] (1)식의 스칼라장에 대한 기울기 델 연산 후의 벡터장
[그림 3] (1)식의 스칼라장에 대한 기울기 델 연산 후의 벡터장

델 연산자를 이용한 발산 연산은 매스매티카에서 Div 명령어를 사용합니다.

(2)식의 벡터장에 발산을 취하면 어떤 결과가 얻어지는지 알아봐요. 이를 위해서는 매스매티카에 다음과 같이 입력해 보세요.

Div[{2 Sin[x] Sin[y],-2 Cos[x] Cos[y]},{x,y}]

그러면 다음처럼 스칼라장 함수가 출력됩니다.

4 Cos[x] Sin[y] 

위 출력 결과를 익숙한 형태로 바꾸면 다음과 같아요. 이때 (2)식의 벡터장을 편의상 \vec K로 나타낼게요.

\tag{3}
\begin{align}
\nabla \cdot \vec K = 4 \cos(x)\sin(y)
\end{align}

(3)식을 매스매티카의 ContourPlot 명령어로 그려볼게요. 그 결과가 [그림 4]에요. 비교를 위해 발산을 취하기 전 벡터장인 [그림 3]을 다시 나타냈어요. 비교해 보세요.

ContourPlot[{4 Cos[x] Sin[y]},{x, -5, 5},{y, -5, 5}]
[그림 3] (2)식의 벡터장
[그림 3] (2)식의 벡터장
[그림 4] (2)식의 벡터장에 대한 발산 델 연산 후의 스칼라장
[그림 4] (2)식의 벡터장에 대한 발산 델 연산 후의 스칼라장

델 연산자를 이용한 회전 연산은 매스매티카에서 Curl 명령어를 사용합니다.


그런데 회전 연산을 위해서는 벡터장이 필요합니다. 위에서 도출한 (2)식이 벡터장이긴 한데요. 그 벡터장에 회전을 연산하면 0이 됩니다.

그래서 아래 (4)식의 임의의 벡터장을 새로 정의할게요.

\tag{4}
\vec V = y \hat x  - x \hat y + 0 \hat z

이 벡터장이 어떤 모습인지 알기 위해 VectorPlot3D 명령어로 그려볼게요. 그 결과가 [그림 5]에요.

그런데 벡터장을 표현하는 화살표들이 복잡해서 z=0인 평면에서의 벡터장만 나타낸 것이 [그림 6]입니다. 이때 사용한 명령어는 SliceVectorPlot3D 명령어에요.

VectorPlot3D[{y, -x, 0}, {x, -3, 3}, {y, -3, 3},{z, -3, 3},VectorScaling -> Automatic, VectorSizes -> Automatic]
SliceVectorPlot3D[{y, -x, 0},{z==0},{x, -2, 2},{y, -2, 2},{z,-2,2}]
[그림 5] VectorPlot3D로 그린 (4)식의 벡터장
[그림 5] VectorPlot3D로 그린 (4)식의 벡터장
[그림 6] SliceVectorPlot3D로 그린 <span class="katex-eq" data-katex-display="false">z=0</span>인 평면에서 (4)식의 벡터장
[그림 6] SliceVectorPlot3D로 그린 z=0인 평면에서 (4)식의 벡터장

동일한 크기를 갖는 벡터들이 회전하고 있는 모습입니다.


그럼 계속 이어서 벡터장의 회전에 대해 설명드릴게요. 이때 사용하는 명령어는 Curl입니다.

(4)식으로 정의된 벡터장에 회전을 취하면 어떤 결과가 얻어질까요? 매스매티카에 다음과 같이 입력해 보세요.

Curl[{y, -x, 0},{x,y,z}]

그러면 다음의 벡터장을 출력합니다.

{0,0,-2} 

이 출력 결과를 익숙한 형태로 바꾸면 다음과 같아요.

\tag{5}
\nabla \times \vec V = 0 \hat x + 0 \hat y -2 \hat z

(5)식을 매스매티카의 VectorPlot3D 명령어로 그려볼게요. 그 결과가 [그림 7]이에요. 비교를 위해 회전을 취하기 전인 [그림 5]를 다시 나타냈어요. 이번에도 서로 비교해 보세요.

VectorPlot3D[{0,0,-2},{x, -3, 3}, {y, -3, 3},{z, -3, 3}]
[그림 5] (4)식의 벡터장
[그림 5] (4)식의 벡터장
[그림 7] (4)식의 벡터장에 대한 회전 델 연산 후의 벡터장
[그림 7] (4)식의 벡터장에 대한 회전 델 연산 후의 벡터장

라플라시안은 스칼라장의 기울기에 대한 회전입니다. 그러므로 스칼라장을 T라고 하면 라플라시안은 \nabla \cdot \nabla T와 같습니다.

라플라시안 연산은 매스매티카에서 Laplacian 명령어를 사용합니다.

(1)식의 스칼라장 T에 라플라시안을 취하면 어떤 결과가 얻어지는지 알아봐요. 매스매티카에 다음과 같이 입력하면 됩니다.

Laplacian[{-2 Cos[x] Sin[y]},{x,y}]

그러면 다음처럼 스칼라장 함수가 출력되는데요. (3)식의 결과와 같아요. 왜냐면 (1)식의 스칼라장에 기울기를 취한 것이 (2)식이고, (2)식에 발산 연산을 한 것이 (3)식이기 때문에 라플라시안 연산 결과와 같아지게 됩니다.

{4 Cos[x] Sin[y]} 

위 출력결과를 익숙한 형태로 표현하면 다음과 같아요.

\tag{5}
\nabla \cdot \nabla T = 4\cos(x)\sin(y)

이에 대한 그래프는 [그림 4]를 참고하면 됩니다.

흥미롭고 도움이 되는 글이었나요? 리뷰를 부탁드립니다.
[Total: 1 Average: 5]

3 thoughts on “델 연산자(Del Operator) : Mathematica”

Leave a Comment