pubDate: 2024-03-18
author: sakakibara
勾配・発散・回転
以下の記号を知っているだろうか。
gradϕdivvrotv
これらは所謂ベクトル解析と呼ばれる分野に登場する記号だ。
gradから説明しよう。
勾配
ϕをn次元実数空間x∈Rnから実数Rへの関数とする。
形式的に記述すると以下のような感じだ。
ϕ:Rn→R
例としては等高線が書かれた地図のようなものや空間に分布する温度などが取り上げられる。
(この手の関数、 つまり、ベクトルから実数への関数はかなり多くの研究対象となっている。)
空間の温度の分布について考える際、その位置に対する温度の変位は指定した位置による微分で定義されるだろう。
位置を3次元実数空間x=(x1,x2,x3)で表すと、
(∂x1∂ϕ,∂x2∂ϕ,∂x3∂ϕ)
となる。
または∇=(∂x1∂,∂x2∂,∂x3∂)を用いて
∇ϕ
のように表される。
そこで、以下のように演算子を定義する。
grad:=∇
発散
vをn次元実数空間x∈Rnからベクトル空間Vへの関数とする。
形式的に記述すると以下のような感じだ。
v:Rn→V
例としては水流の分布などを想像してほしい。
水流の湧き出しについて考える際、湧き出しの量はその位置の各方向で微小面積あたりどれほど水量が変化(水がその方向から出ていって入った量)したかで定義されるだろう。
位置を3次元実数空間x=(x1,x2,x3)で表すと、
∂x1∂v1+∂x2∂v2+∂x3∂v3
∇を用いて表すと
∇⋅v
のように表される。
そこで、以下のように演算子を定義する。
div:=(∇⋅)
回転
水流の回転について考える際、回転の量はその位置の各方向の変位に対してどれほど水量がその方向と垂直方向に変化したかで定義されるだろう。
位置を3次元実数空間x=(x1,x2,x3)で表すと、
(∂x2∂v3−∂x3∂v2,∂x3∂v1−∂x1∂v3,∂x1∂v2−∂x2∂v1)
∇を用いて表すと
∇×v
のように表される。
そこで、以下のように演算子を定義する。
rot:=(∇×)
それぞれの関係式
div, rot, gradそれぞれを結ぶ重要な関係式がある。
それが以下だ。
rot(grad)div(rot)=0=0
すなわち回転するような勾配は存在しないし、発散するような回転は存在しないということである。
これは実際に∇を計算してみるとわかる。
また、以下の演算をラプラシアンやラプラス演算子などと呼ぶ
Δ=div(grad)
これは調和作用素などと呼ばれることもあり、物理の文脈でよく出てくる。
また、なぜだかこの逆には特別な名前がついていない。
?=grad(div)
この演算には特別な名前ついていないものの、以下の様に重要な役割を果たす。
rot(rot)=[grad,div]=grad(div)−div(grad)=grad(div)−Δ
この演算には名前が無いので個人的にロトロトと読んでいる。
ベクトル場と離散表現
さて、これらの演算子はベクトル場やスカラー場に対して定義されるものである。
以下ではこれらの演算子を行列を用いて表現する方法について考える。
以下の内容はA.Bossavit, “Computational Electromagnetism: Variational Formulations, Complementarity, Edge Elements”に基づいている。
勾配行列
さて、以上でベクトル場vやスカラー場ϕとそれにまつわる演算子について軽く触れた。
先程触れた勾配・発散・回転と同様の概念はネットワーク的に表現できる。
ネットワーク的にとは接続行列や隣接行列を使用して定義できるのだ。
頂点n1から辺eが出て、頂点n2へ入っているとする。
この関係を
∂e=n2−n1
のように表現する。
これを様々な辺について考える。
辺ekが頂点niから出て頂点njへ出ているとする。
∂ek=i∑Gkini
ここでGkiは
Gki=⎩⎨⎧辺ekが頂点niへ入っているのであれば1辺ekが頂点niから出ているのであれば−1other0
のようにして定義される。
このような要素を持つ行列をG=[Gki]と定義する。
これを勾配行列という。
頂点の個数をN, 辺の個数をEとすると勾配行列GはE×Nの行列である。
頂点に値を振り宛てたN個の要素をもつベクトルをϕ∈RNとすると、
その勾配はGϕのようにして表される。
勾配行列Gは所謂接続行列になっている。
そして勾配行列の積をdivgradとのアナロジーからラプラス行列という。
L=GTG
回転行列
勾配行列で考えた辺と頂点に対する考えをさらに拡張し、
面と辺に対しても同じような考えを適用してみる。
面fの境界の辺e1,e2,e3,e4が面を囲む向きに定まっているとする。この関係を
∂f=e1+e2+e3+e4
のように表現する。
これを様々な面について考える。
面fkが辺eiに囲まれているとする。
∂fk=i∑Rkiei
ここでRkiは
Rki=⎩⎨⎧面fkが辺eiによって適切な向きによって囲まれているのであれば1面fkが辺eiによって適切な向きの逆向きによって囲まれているのであれば−1other0
のようにして定義される。
このような要素を持つ行列をR=[Rki]と定義する。
これを回転行列という。
辺の個数をE, 面の個数をFとすると回転行列RはF×Eの行列である。
辺に値を振り宛てたE個の要素をもつベクトルをv∈REとすると、
その回転はRvのようにして表される。
ラプラス行列のようにロトロト行列RTRについて考えることもできる。
発散行列
発散に関しても以上と同じ関係が導かれる。
それをDとする。
勾配・回転・発散 に関する関係式
さて、興味深いことにベクトル解析で見られた勾配・回転・発散の関係が離散化した状態でも見られる。
つまり、
rot(grad)=0div(rot)=0
が表現できる。
面fについて
∂f∂e1∂e2∂e3∂e4=e1+e2+e3+e4=n2−n1=n3−n2=n4−n3=n1−n4
のように表現できるとしよう。
さて、ここで以下のような考えをしてみる。
∂∂f=∂(e1+e2+e3+e4)=∂e1+∂e2+∂e3+∂e4=n2−n1+n3−n2+n4−n3+n1−n4=0
なんと、∂fの境界を取る作用をすると、それは0になる。
そしてこれを行列的な表現をすると、
RG=O
となる。
また、発散行列Dと回転行列Rについても同じことが言える。
DR=O
辺要素のrot
有限要素法では解析対象を要素と呼ばれる小さな領域に分割する。
解析対象に関する物理場は要素内での補間により表現する。
要素内での補間の方法には大きく3つある。
- 頂点補間: 頂点に実際の値を割り当て、その値を用いて要素内の物理場を補間する。
- 辺補間: 辺に実際の値を割り当て、その値を用いて要素内の物理場を補間する。
- 面補間: 辺に実際の値を割り当て、その値を用いて要素内の物理場を補間する。
ベクトル・ポテンシャルなどを扱う際には辺補間を使う。
ベクトル・ポテンシャルAを辺補間で補間する際に磁束密度Bは
B=rotA
のように表される。
そしてその辺要素の値をベクトルとした{A}と{B}について
{B}=R{A}
として表現できる。
B={∇×N}T{A}
また、磁束密度Bは以下のようも表現できるとする。
B={M}T{B}={M}TR{A}={RT{M}}T{A}
すなわち、
{∇×N}=RT{M}
が成り立つ。
注意しなければならないこととして、面から辺は計算できるが、辺から面は計算できないことだ。
つまり、辺の形状関数が判明していれば点の形状関数が求められるが逆は必ずしも成り立たないということである。