高校物理、大学受験、大学物理、プログラミングの記事を書きます。

初学者のためのナブラ演算子を用いた「勾配grad」「発散div」「回転rot」

2019/01/19
 
この記事を書いている人 - WRITER -

物理を学習しているとどうしても数学の知識というのが欠かせません。

特に物理学では向きを持った値というのを取り扱うために、ベクトル解析というものを勉強しておく必要があります。

しかし、ベクトル解析を勉強していると何やら「高校数学では見たこともない記号:ナブラ演算子\(\nabla\)」があり、それは初学者の興味と恐怖を与えるものです。

例えばこんな感じで、

勾配

\(grad\, f\) 

or

  \(\nabla\, f\)

 

発散

\(div\, \boldsymbol{v}\)

or

 \(\nabla\cdot\boldsymbol{v}\)

 

回転

\(rot\, \boldsymbol{v}\)

or

\(\nabla\times\boldsymbol{v}\)

 

初学者がこれを見て「何だこれは?」とならないためにこの記事を書いています。

スポンサーリンク

\(\nabla\)演算子って何?

 

\(\nabla\)演算子ってそもそも何かってことをちょびっと話しておかないと、「そこがわからんのだ」って思われそうなので、最初に話しておきたいと思います。

  • \(\nabla\):「ナブラ」と呼びます。
  • \(\nabla=(\frac{\partial}{\partial x},\frac{\partial}{\partial y},\frac{\partial}{\partial z})\)
    ※\(x,y,z\)が変数

とても簡単にまとめると以上です。

要するに、\(\nabla\)演算子は「誰かを偏微分したくてたまらないやつ」とくらいに思っておきましょう。

 

例えば、\(f(x,y)=2x^{2}+y^{3}\)という関数があって、「誰かを偏微分したくてたまらない演算子(\(\nabla\)演算子)を作用させることを考えます。

とても素直に計算するだけです。

\begin{align*}\nabla f(x,y)=\big(\frac{\partial f(x,y)}{\partial x},\frac{\partial f(x,y)}{\partial y},\frac{\partial f(x,y)}{\partial z}\big)=\big(4x,3y^{2},0\big)\end{align*}

素直に計算してみただけです。

 

もうひとつ例を見てみましょう。

例えば、あるベクトル場\(\boldsymbol{v}(x,y)=(v_{x},v_{y},v_{z},)=(2x^{2},y^{3},0)\)に「誰かを偏微分したくてたまらない演算子(\(\nabla\)演算子)を作用させること考えます。

今度は内積の形で作用させます。

\begin{align*}\nabla\cdot \boldsymbol{v}(x,y)=\big(\frac{\partial }{\partial x},\frac{\partial}{\partial y},\frac{\partial }{\partial z}\big)\cdot \big(v_{x},v_{y},v_{z}\big)=\frac{\partial v_{x}}{\partial x}+\frac{\partial v_{y}}{\partial y}+\frac{\partial v_{z}}{\partial z}=4x+3y^{2}\end{align*}

となります。

まずは素直に「\(\nabla\)演算子を使うとまるでベクトルで学習した内容っぽく計算できるな」って感じて慣れていけばよいのかと思います。

 

しかし、物理数学のベクトル解析で\(\nabla\)演算子を勉強すると「\(grad\),\(div\),\(rot\)」も一緒に習うことになるのでここではもう少し\(\nabla\)演算子を使った単なる演算子の計算にとどまらない意味を持った操作であることを説明したいと思います。

勾配:gradient

 

まずは\(\nabla\)演算子を使った簡単な例は「勾配」です。

なぜ\(grad\)と書くのかというと勾配の英語がgradientだからその冒頭3文字を使って\(grad\)と書くのです。

「勾配」に関する書き方は、\(grad \,f\)だったり\(\nabla f\)だったりしますが、ある関数\(f\)に\(\nabla\)演算子を作用させる操作によってできます。

こんな感じで書きます。

\begin{align*}grad\,f=\nabla f=\big(\frac{\partial f}{\partial x},\frac{\partial f}{\partial y}\big)\end{align*}

簡単な例で見てみましょう。

これを見れば、\(\nabla\)演算子をある関数\(f\)に作用させる操作が「勾配」であることがわかるかと思います。

2変数\(z=f(x,y)\)の場合

2変数\((x,y)\)の場合の全微分を考えましょう。

全微分は上の表式になります。

これをこのように各成分に分解して内積の形で書くと、

\begin{align*}df=(\frac{\partial f}{\partial x},\frac{\partial f}{\partial y})\cdot (dx,dy)\end{align*}

となります。

おっと、「\(\big(\frac{\partial f}{\partial x},\frac{\partial f}{\partial y}\big)\)が出てきたではありませんか」ということになります。

これを、

\begin{align*}grad \,f=\big(\frac{\partial f}{\partial x},\frac{\partial f}{\partial y}\big)\end{align*}

と書いて勾配を表すのです。

では、なぜ勾配と呼ぶのか・・・・wikipediaには「勾配;gradient」について、

ベクトル解析におけるスカラー場の勾配(gradient; グラディエント)は、各点においてそのスカラー場の変化率が最大となる方向への変化率の値を大きさにもつベクトルを対応させるベクトル場である。

このように書いています。

スカラー場の変化率が最大となる方向への変化率と書いてあります。

それを絵で書いてみると、\(\nabla f=\big(\frac{\partial f}{\partial x},\frac{\partial f}{\partial y}\big)\)の向きがどちら向きかがよくわかります。

確かにかなり急な勾配ですね。

というわけで\(\nabla f\)を勾配という意味がわかるように、\(grad f\)と表現するわけです。

 

等高線に対して垂直な方向が\(\nabla f\)の方向

 

もうひとつ!!\(\nabla f\)に関しては、知っておいた方が良い性質があります。

それは、

「等高線に対して垂直な方向が\(\nabla\,f\)の方向」です。

 

では等高線を考えてみましょう。

等高線とは、\(df=0\)(\(f\)の変化量が0)となるような\(dx,dy\)を選ぶことで上の絵のように描くことができます。

このときの\(\nabla\,f\)の方向がどうなるかを見てみれば良いのです。

どうですかね。

ちゃんと、\(\nabla f\)が等高線に対して垂直な方向に向いているのがわかるかと思います。

 

では、3変数だったら?

3変数\(w=f(x,y,z)\)の場合

 

3変数になる表現するための軸が足りないので\(w\)の大きさは色とかで区別するしかないです。

先ほど「2変数で等高線(\(z=f(x,y)\)の値が常に同じ)」を考えたように、「3変数で等位面(\(w=f(x,y,z)\)の値が常に同じ)」場合での\(\nabla \,f\)の方向を考えることができます。

3変数での等位面での\(\nabla f\)の方向は、等位面に対して垂直な方向です。

発散 divergence

 

数学記号での発散の表現は\(div\)か\(\nabla\cdot\)となります。

\(\nabla\)演算子とあるベクトル場\(\boldsymbol{v}\)との内積であると覚えておきましょう。

なぜ\(div\)と書くのかというと発散の英語がdivergenceだからその冒頭3文字を使って\(div\)と書くのです。

また、\(\nabla=(\frac{\partial}{\partial x},\frac{\partial}{\partial y},\frac{\partial}{\partial z})\)を使って、あるベクトルとの内積をとるとそれは発散を意味することになります。

\begin{align*}div\, \boldsymbol{v}=\nabla\cdot\boldsymbol{v}\end{align*}

と書きます。

ナブラ演算子の部分について、「記号を使っていてはわからない」って方は、実際に内積を計算してやると、

\begin{align*}div\, \boldsymbol{v}=\frac{\partial v_{x}}{\partial x}+\frac{\partial v_{y}}{\partial y}+\frac{\partial v_{z}}{\partial z}\end{align*}

となることを覚えておけば良いでしょう。

 

しかし、数学記号で発散と言われてもピンとこないのがふつうであると思います。

まずは簡単にイメージを頭にインプットするために、あるベクトル場を流速ベクトル\(\boldsymbol{v}\)として川の流れを考えて、「発散」について理解していきたいと思います。

発散がない場合

発散がない場合という、「発散」という言葉を使うとよくわからないことでしょうね。

発散がない場合というのは、「発散=出ていった量(流出)ー入ってきた量(流入)」は0という場合を意味しています。

大事なのは、発散は正味に出ていった量ということです。

流量は出ていくんですけど、入ってくる量も合わせて、実際どれだけ出ていったのか?」が発散の意味です。

例えば上の絵のように1次元の流速が一定の流れがある場合を考えます。

この場合は、緑の半透明に入ってきた水の量と出ていった水の量は同じですよね。

だから、「発散=出ていった量(流出)ー入ってきた量(流入)」は0ということになります。

発散記号で書くと、

\begin{align*}div\,\boldsymbol{v}=0\end{align*}

です。

ナブラ演算子を用いると、

\begin{align*}\nabla\cdot\boldsymbol{v}=0\end{align*}

です。

これをナブラ演算子で使わずに記述すると、

\begin{align*}\nabla\times\boldsymbol{v}=\frac{\partial v_{x}}{\partial x}+\frac{\partial v_{y}}{\partial y}+\frac{\partial v_{z}}{\partial z}=0\end{align*}

です。

実際、流れは一定なのですから、

\begin{align*}\frac{dv}{dx}=0\end{align*}

であります。

 

発散がある場合

発散がある場合というのは、「発散=出ていった量(流出)ー入ってきた量(流入)」は0ではないということを意味しています。

湧き出し

上の絵のように右にいくほど(\(x\)の増加とともに)流速が増えていっている場合の流れでは、緑の透明に入ってきた水の量より出ていく水の量の方が多いので、正味の出ていった量というのは0より大きいです。

これを湧き出しと言います。

\begin{align*}div\,\boldsymbol{v}>0\end{align*}

です。

ナブラ演算子を用いると、

\begin{align*}\nabla\cdot\boldsymbol{v}>0\end{align*}

吸い込み

湧き出しの逆の場合を考えましょう。

緑の透明に入ってきた水の量より出ていく水の量の方が多少ない場合は正味の出ていった量というのは0より小さいです。

これを吸い込みと言います。

\begin{align*}div\,\boldsymbol{v}<0\end{align*}

です。

ナブラ演算子を用いると、

\begin{align*}\nabla\cdot\boldsymbol{v}<0\end{align*}

 

なぜ\(\nabla\)演算子との内積が発散なのかを導出する

ではなぜ\(\nabla\)演算子の内積が発散を意味しているのかを考えたいと思います。

1元で考えても3次元で考えても本質は同じであるため、ここでは簡単のために1次元として、「x方向に垂直な面から出ていく正味の流量」を考えることで発散を理解したいと思います。

さて、右の面から出ていく流量と左の面から入ってくる流量というのを考えます。

  • 出ていく流量:\(v_{x}(x+dx)dydz\)
  • 入ってくる流量:\(v_{x}(x)dydz\)
    ※\(dx,dy,dz\)は微小量としています。

すると正味の出ていく流量は、

\begin{align*}v_{x}(x+dx)dydz-v_{x}(x)dydz\end{align*}

ということになります。これをもう少し、式変形してみましょう。

\begin{align*}v_{x}(x+dx)dydz-v_{x}(x)dydz=(v_{x}(x+dx)-v_{x}(x))dydz=\frac{v_{x}(x+dx)-v_{x}(x)}{dx}dxdydz\end{align*}

ここで\(dx→0\)とすると、\(\frac{v_{x}(x+dx)-v_{x}(x)}{dx}=\frac{dv_{x}}{dx}\)だから、

 

「x方向に垂直な面から出ていく正味の流量」

\begin{align*}\frac{dv_{x}}{dx}dxdydz\end{align*}

となります。

今は1次元で考えましたが、3次元に拡張することは容易にできます。

それは「\(y\)方向に垂直な面」「\(z\)方向に垂直な面」の正味の出ていった量を加えれば良いだけです。

もう一度式変形をするまでもなく、

「y方向に垂直な面から出ていく正味の流量」

\begin{align*}\frac{dv_{y}}{dy}dxdydz\end{align*}

「z方向に垂直な面から出ていく正味の流量」

\begin{align*}\frac{dv_{z}}{dz}dxdydz\end{align*}

 

これらを足すと、

\begin{align*}(\frac{dv_{x}}{dx}+\frac{dv_{y}}{dy}+\frac{dv_{z}}{dz})dxdydz\end{align*}

となります。

今考えている直方体は任意な大きさにしていました(とりあえずとても小さいと考えていました)ので、単位体積あたりに出ていった正味の流量は、

\begin{align*}\frac{dv_{x}}{dx}+\frac{dv_{y}}{dy}+\frac{dv_{z}}{dz}\end{align*}

ということになります。

これで発散を数式で表現することができました。

よく見るとちょうど\(\nabla\)演算子との内積になっているのがわかりますよね。

 

回転 rotation

 

数学記号での回転の表現は\(rot\)か\(\nabla\times\)となります。

\(\nabla\)演算子とあるベクトル場\(\boldsymbol{v}\)との外積であると覚えておきましょう。

なぜ\(rot\)と書くのかというと回転の英語がrotationだからその冒頭3文字を使って\(rot\)と書くのです。

また、\(\nabla=(\frac{\partial}{\partial x},\frac{\partial}{\partial y},\frac{\partial}{\partial z})\)を使って、あるベクトルとの外積をとるとそれは回転を意味することになります。

\begin{align*}rot\, \boldsymbol{v}=\nabla\times\boldsymbol{v}\end{align*}

と書きます。

これを成分ごとに書いてみます。

\begin{align*}
\begin{pmatrix}
\frac{\partial }{\partial x}\\
\frac{\partial }{\partial y}\\
\frac{\partial }{\partial z}\\
\end{pmatrix}\times
\begin{pmatrix}
v_{x}\\
v_{y}\\
v_{z}\\
\end{pmatrix}
=
\begin{pmatrix}
\frac{\partial v_{z}}{\partial y}-\frac{\partial v_{y}}{\partial z}\\
\frac{\partial v_{x}}{\partial z}-\frac{\partial v_{z}}{\partial x}\\
\frac{\partial v_{y}}{\partial x}-\frac{\partial v_{x}}{\partial y}\\
\end{pmatrix}
\end{align*}

↑このようになります。

見ての通り、\(grad\)や\(div\)と比較するとめちゃ覚えにくいです。

ですので覚え方を自分なりに持っておく必要があります。

ここでは、2通りの覚え方を紹介しますので覚えやすい方を自分なりに選んで覚えておきましょう。

 

3行3列の行列式から「サラスの公式」を使う

 

もし線形代数を習って、「サラスの公式を知っているよ」って方でしたら覚えやすい方法だと思います。

\begin{align*}
\begin{vmatrix}
\boldsymbol{i} & \boldsymbol{j} &\boldsymbol{k} \\
\frac{\partial }{\partial x} & \frac{\partial }{\partial y} & \frac{\partial }{\partial z}\\
v_{x} & v_{y} & v_{z}
\end{vmatrix}
\end{align*}

このように3行3列の行列式を用意します。

ここで、\(\boldsymbol{i}\)、\(\boldsymbol{j}\)、\(\boldsymbol{k}\)はそれぞれ\(x\)、\(y\)、\(z\)方向の単位ベクトルを表しています。

「サラスの公式」は3行3列の行列式を計算するときにの公式ですが、公式通りに従えば\(\nabla\)演算子の外積を計算していることになります。

 

では、「サラスの公式」通りに計算してみます。

(①+②+③)(④+⑤+⑥)を計算すれば良いです。

\begin{align*}\frac{\partial v_{z}}{\partial y}\boldsymbol{i}+\frac{\partial v_{x}}{\partial z}\boldsymbol{j}+\frac{\partial v_{y}}{\partial x}\boldsymbol{k}\end{align*}

\begin{align*}-\end{align*}

\begin{align*}\frac{\partial v_{x}}{\partial y}\boldsymbol{k}+\frac{\partial v_{y}}{\partial z}\boldsymbol{i}+\frac{\partial v_{z}}{\partial x}\boldsymbol{j}\end{align*}

これをもう少しまとめると、

\begin{align*}\big(\frac{\partial v_{z}}{\partial y}-\frac{\partial v_{y}}{\partial z}\big)\boldsymbol{i}+\big(\frac{\partial v_{x}}{\partial z}-\frac{\partial v_{z}}{\partial x}\big)\boldsymbol{j}+\big(\frac{\partial v_{y}}{\partial x}-\frac{\partial v_{x}}{\partial y}\big)\boldsymbol{k}\end{align*}

と、このようになります。

各成分を見ると確かに\(\nabla\)演算子との外積の結果と同じですね。

 

僕は、この方法ではなくて次の方法で\(\nabla\)演算子との外積を覚えています。

\(\nabla\)演算子との外積というよりは、外積の計算そのものを次の方法で記憶しています。

 

「クロスして」「それ以外の成分に書く」

 

「クロスして」「それ以外の成分に書く」・・・と呪文のように覚えているこの方法は、結構良いかなと思っています。

誰に習ったのかは忘れましたが。

手順はこんな感じです。

言葉で書くよりも絵を使った方がわかりやすいので絵で表現してみました。

どうですかね。

結構覚えやすいと思うのですがね。

 

なぜ\(\nabla\)演算子との外積が回転なのかを導出する

 

さて、\(\nabla\)演算子の外積の形式はわかりましたが、回転(\(rot\))と表現される所以を理解する必要があります。

発散の場合は、「ある微小体積を出入りした量」でしたよね。

回転の場合は、「ある微小領域まわりのモーメント」を考えれば良いのです。

モーメントなので回転ってことです。

簡単のために2次元にして、上の絵のようにある点\((x,y)\)まわりのモーメントを考えてみましょう。

※\(2dx=2dy=2da\)の微小領域での\(z\)軸方向まわりのモーメントを考えます。

反時計回りを正方向にして・・・・

\(v_{y}(x+dx,y)dx+v_{x}(x,y-dy)dy-v_{x}(x,y+dy)dy-v_{y}(x-dx,y)dx\)

\(=\frac{v_{y}(x+dx,y)-v_{y}(x-dx,y)}{2dx}2dx\,dx-\frac{v_{x}(x,y+dy)-v_{x}(x,y-dy)}{2dy}2dy\, dy\)

\(=\big(\frac{\partial v_{y}}{\partial x}-\frac{\partial v_{x}}{\partial y}\big)2da^2\)

となります。

\begin{align*}\frac{1}{2}\big(\frac{\partial v_{y}}{\partial x}-\frac{\partial v_{x}}{\partial y}\big)4da^2\end{align*}

としておくと、微小領域\(4dx\,dy=4da^2\)は任意に選んだ領域ですので、単位面積あたりのモーメントは、

\begin{align*}\frac{1}{2}\big(\frac{\partial v_{y}}{\partial x}-\frac{\partial v_{x}}{\partial y}\big)\end{align*}

となります。

\(\frac{1}{2}\)がついてしまっていますが、本質的にはこれは\(z\)軸まわりの回転を意味していますので、

\begin{align*}\big(\nabla\times\boldsymbol{v}\big)_{z}=\frac{\partial v_{y}}{\partial x}-\frac{\partial v_{x}}{\partial y}\end{align*}

となるわけですよね。

これを\(x\)軸まわりと\(y\)軸まわりモーメント(回転)を考えると、3軸での回転を考えることができるというわけです。

 

まとめ

 

これで\(\nabla\)演算子を使った「勾配:\(grad\)」「発散:\(div\)」「回転:\(rot\)」の意味がわかったでしょうか。

今一度全体をまとめておきます。

勾配

\begin{align*}grad \,f=\big(\frac{\partial f}{\partial x},\frac{\partial f}{\partial y},\frac{\partial f}{\partial z}\big)\end{align*}

 

発散

\begin{align*}div\, \boldsymbol{v}=\nabla\cdot\boldsymbol{v}\end{align*}

\begin{align*}=\frac{\partial v_{x}}{\partial x}+\frac{\partial v_{y}}{\partial y}+\frac{\partial v_{z}}{\partial z}\end{align*}

 

回転

\begin{align*}rot\, \boldsymbol{v}=\nabla\times\boldsymbol{v}\end{align*}

\begin{align*}
\begin{pmatrix}
\frac{\partial }{\partial x}\\
\frac{\partial }{\partial y}\\
\frac{\partial }{\partial z}\\
\end{pmatrix}\times
\begin{pmatrix}
v_{x}\\
v_{y}\\
v_{z}\\
\end{pmatrix}
=
\begin{pmatrix}
\frac{\partial v_{z}}{\partial y}-\frac{\partial v_{y}}{\partial z}\\
\frac{\partial v_{x}}{\partial z}-\frac{\partial v_{z}}{\partial x}\\
\frac{\partial v_{y}}{\partial x}-\frac{\partial v_{x}}{\partial y}\\
\end{pmatrix}
\end{align*}

この記事を書いている人 - WRITER -

コメントを残す

Copyright© 宇宙に入ったカマキリ , 2018 All Rights Reserved.