0
応用数学解説
文献あり

Gradient flowによる微分方程式の数値計算

104
0

【修正履歴】

  • 08May2024: 「ω粒子により安定化したSkyrmion」の章の数値計算を正しいものに修正しました。また当該の章の「問題1」の式を修正しました(第1式左辺最後の項の分母をmπmωとした)。さらにその次の四角いテキストボックスの中の式を実用的に使いやすい形に書き換え、その下の当該式の説明を修正しました。

Gradient flow

本記事ではgradient flowと呼ばれる微分方程式の解法について説明します。呼び方は他にもあるかもしれませんが、ここではRef.[1]に従いこのように呼びます。

微分方程式と汎関数の極小化

微分方程式と汎関数の極小化は密接に関係します。力学におけるLagrange形式はその典型例です。ある時刻tにおける物体の位置x(t)を、作用と呼ばれるx(t)の汎関数S(x(t))x(t)に関する極小化で求めます。S(x(t))はLagrangian L(x(t),x˙(t))の積分として
S(x(t))=dtL(x(t),x˙(t))
と書かれます(ドットは時間微分)。一般にはLは時刻tに陽に依存してもいいですが、ここでは陽には依存しないとします。S(x(t))の極値はS(x(t))を変分してゼロになるx(t)で与えられます。このときx(t)
δS(x(t))=0ddt(Lx˙)Lx=0
を満たします。の右辺の式はEuler-Lagrange方程式 (EL-eq.)と呼ばれます(※脚注)。

空間xおよび時刻tに依存する何らかの場ϕ(xμ) (xμ:=(t,x,y,z))の運動や状態も同様に最小作用の原理で書かれます。作用S(ϕ)がLagrangian密度なる量L(ϕ,μϕ)の4次元積分で書かれるとします:
S(ϕ):=d4xL(ϕ,μϕ)
μ (μ=0,1,2,3)とはμ=(t,x,y,z)のことです。このときEL-eq.は
μ(L(μϕ))Lϕ=0    (μ)
です。静的な場の場合、空間座標xのみに依存する関数ϕ(x)のエネルギー汎関数E(ϕ(x),iϕ(x))の極小化に帰着します(後述)。

Gradient flow

改めて以下の問題を考えます:

ξ(x)に依存する汎関数Ξ(ξ(x),xξ(x))を極小化し、ξ(x)を決定する

もちろんEL-eq.に相当する微分方程式を求め、それを解いてξ(x)を決定してもよいです。一方で、微分方程式を解くかわりに、各xにおいてΞ(ξ(x))が最も下がる方向にξ(x)を変形していくことでξ(x)を求めることもできます。これがgradient flowの方法です。数値計算をするためにxを離散化し、これをxi(i=1,N)とすると、Ξξi:=ξ(xi)の多変数関数になります。こうすると汎関数微分は多変数関数Ξ(ξi)の偏微分になります。初期のξi(0)を用意し、これをΞ(ξi)/ξi(gradient descent)の方向に漸次落としていくことでΞを極小化するξiを求めます。

最近の流行との対比でいうと、やっていることは機械学習における目的関数の極小化と同じです。

Gradient flowの利点: 境界値問題

微分方程式を直接解くことと比較したとき、gradient flowの方法のメリットはなんでしょうか。

微分方程式は境界条件が与えられて初めて解けます。数値計算では、ξ(r)の2階微分方程式なら2つの境界条件: ξ(r=boundary),ξ(r=boundary)を用い、差分化した方程式(=漸化式)を使って端から解を構成します。

問題は境界条件が両端で与えられる場合です。物理学では往々にしてξ(r=0)ξ(r=)の値が与えられ、傾きがわからないことがあります。このような場合によく使われるのがシューティング法です。この方法では片側の境界条件を適当に与えてそれを変えながら解を構成し、逆側の境界条件を満たす解を探します。例えばξ(r=0)を適当に与えて解をrが大きいところまで構成し、ξ(r=large)が与えられた値に近づくようにξ(r=0)を調整します。非常にシンプルでわかりやすい方法です。しかし時に、解がξ,ξの境界条件に非常に鋭敏であり、少し境界の値が違うだけで解が大きく変わってしまう場合があります。この場合たまごを机に立てるのにも似た繊細なチューニング作業が必要になります。また連立微分方程式のように求める解が複数存在する場合、シューティングのパラメータが複数になるため、パラメータ空間中の適切なパラメータの範囲が非常に狭くなり、とてつもないファインチューニングが必要になります。

このような場合に便利なのがgradient flowです。前述したように、この方法では最初に与えられた境界条件を満たす適当な関数を用意します。この初期の場を、系の汎関数を下げる方向に漸次変化させていくことで汎関数の極小解を求めます。ξξの両方を知る必要はありません。初期の関数はもちろん真の解に近いほうがいいですが、特にトポロジカルな保存量がある場合などは、けっこう雑な初期関数でもちゃんと真の解に収束します。のちほどそのような具体例を示します。

Gradient flowのformalism

Gradient flowの方程式は非常にシンプルであり、以下で与えられます:
κτξ(x,τ)=δΞ(ξ)δξ(x,τ)
ここでτは仮想時間です。ξτ=0から発展させ、大きなτにおいてξ(x,τ)τに対する変化が止まれば、それがΞの極小を与える解です。

以下静的な場の配位を考えます。改めてξϕと書き直します。この場合汎関数Ξは静的なエネルギーに対応するので、これを改めてE(ϕ)で表します。これはラグランジアンの符号を反対にしたもので与えられます:E(ϕ)=d3xL(ϕ,iϕ)iは空間方向の足)。 E(ϕ)の変分を計算すれば
δE(ϕ)=d3x(Lϕδϕ+L(iϕ)δ(iϕ))=d3x[Lϕi(L(iϕ))]δϕδE(ϕ)δϕ=Lϕi(L(iϕ))
を得ます。右辺イコールゼロはϕに対するEL-eq.にほかなりません (※符号に注意)。よって配位が運動方程式を満たす場合仮想時間に対するϕの発展は止まり、正しい解が求まることがわかります。

静的な配位に対してラグランジアンがL=122ϕV(ϕ)V(ϕ):ポテンシャル項)で与えられるとすれば
δE(ϕ)δϕ=2ϕVϕ
になります。

以上よりこの場合gradient flowの方程式は以下で与えられます:
κ0ϕ=Lϕi(L(iϕ))κ0ϕ=2ϕVϕ     (L=122ϕV(ϕ)の場合)
ここでは仮想時間の微分を0としました。ポテンシャルが下がる方向にϕを落としていくので、ポテンシャルのϕ微分の符号は負です。0ϕを離散化すれば、それは1回の更新でϕがどれだけ変化するかを表しています。更新を何度も繰り返しϕが収束すれば、求める解が得られます。のちほど具体例を示します。

不安定性

gradient flowの計算においてひとつ気をつけるべきことがあります。それは不安定性です。前章の方程式は熱伝導方程式と同様の形をしています。そしてこの系には数値計算で不安定性が生じることが知られています[2]

前述のgradient flowの方程式に含まれるκは、1回の更新でどれだけ配位が変わるかを司るパラメータです。κが小さい方が1回の更新による配位の変化が大きいので良いように思うかもしれません。しかしκが小さいと不安定性が起きます。空間方向の分割幅に対しκを十分大きくしておかないと、初期配位のフーリエモードの高周波成分がどんどん増幅されて数値計算が全くうまくいきません。このような現象が起きるときにはκを大きくして計算してください。必然更新回数は多くなります。

ちなみに機械学習でよく使われる最小化のアルゴリズムであるAdamを用いると、単純な最急降下法と比較し、不安定性が抑えられ更新回数が少なくて済むこともあります。

実際の数値計算

以下具体的にgradient flowの方法を説明するため、以下の文献

  1. John C.Neu, "Vortices in Complex Scalar Fields," Physica D43, 385-406 (1990). [3]
  2. G.S.Adkins, C.R.Nappi, "STABILIZATION OF CHIRAL SOLITONS VIA VECTOR MESONS," Physics Letters 137B 3,4 (1984). [4]

に現れる非線形微分方程式をgradient flowで計算します。数値計算の話に焦点を当てるため、数学的・物理的な背景は基本的に省くことをご了承ください。

1. 非線形Schrödinger方程式における静的なvortex解

まずは[3]の文献の数値計算を行います。

2-dim.において次の微分方程式を解きます:
2ψ+(1|ψ|2)ψ=0
これは非線形Schrödinger方程式または非線形熱拡散方程式の静的なバージョンです[3]

この系には渦の解 −vortex解− が存在します。これを求めるため、以下のansatzをおきます:
(1)ψ(x)=U(r)exp[i(nθ+θ0)]
ここで(r,θ)は2-dim.の極座標、θ0は任意定数、nはvortexのwinding numberです。これを上記の微分方程式に代入すると以下の方程式を得ます:
U+1rUn2r2U+(1U2)U=0
ここでプライムはr微分を表します。境界条件は以下で与えられます:
U(r=0)=0, U(r=)=1
以下この静的なvortex解を数値的に求めることを考えます。

Gradient flowの方程式

ϕおよびUに対するgradient flow eqs.は以下のようになります:
κ0ϕ=2ϕ+(1ϕ¯ϕ)ϕ,κ0U=U+1rUn2r2U+(1U2)U
0を離散化し、方程式を以下のように書き換えておきます:
(2)Unew=U+α{U+1rUn2r2U+(1U2)U}
こうすればgradient flow eq.を解くことは、EoMに係数をかけて元の配位に加えたものを新たな配位Unewとする作業を繰り返すことと等価であることがわかります。

数値計算の結果

実際にEq.(1)の1回巻き(n=1)の解を求めてみます。そのためはまず、適切な境界条件 (Boundary Condition, BC) を持つ初期配位を用意してやります。

前記したようにBCはU(r=0)=0, U(r=)=1で与えられます。さらに解の漸近形が以下のようになることがわかっています[3]
U(n)(r)ar|n|+O(r|n|+2)  as  r0,1n2/r2+O(1/r4)   as  r
これらより初期配位として良さげな関数形のひとつはtanhであることがわかります。実際にRef.[3]のグラフを読み取りtanhでフィットすると
U(r)=tanh(0.54795r)
程度がよいことがわかります。ちなみにグラフから数値を読み取る際[5]は便利です。

実際の初期配位は解からずらして
Uinit(r)=tanh(0.3r)
を用いて計算を始めます。

計算に用いたパラメータは以下です:

N=200, dr=0.05, reg=0.001,α=0.001, Niter=4000

ここでNは区間の分割数、drはrの分割幅、αはEq.(2)の式中の係数、regはr=0での発散を避けるパラメータ、NiterはUnewの計算の繰り返しの回数です。またUおよびUを各iterationの段階で計算しなければならないため、U(r)の両端の「さらに1点先」まで値が必要です。これに関しては両端の値をそのまま「その1点先」に使っています。すなわちNeumann BCを用いています。

これらのパラメータを用いてEq.(2)を繰り返し用い解を求めます。これをグラフにしたのが図1です。
vortex解のiterationへの依存性 vortex解のiterationへの依存性

黒実線は初期配位 (tanh(0.3r))、赤実線はEq.(1)の解(Ref.[3])、破線がEq.(2)を繰り返し適用して得られたUです。図のキャプションにある"iteration"は各破線に対応する繰り返しの数です。この図から、始め真の解に大きく近づき、その後徐々に解付近に収束していく様子がわかります。iterationが4000でも真の解から少しずれていますが、様々な要因が考えられるためあまり気にしないでください。αは前述した不安定性が起こらない程度に小さく取ります。

不安定性にさえ気をつければ、いいかげんな初期配位から始めても正しい解に収束します(図2および図3)。
初期配位を!FORMULA[126][207518117][0]とした場合の!FORMULA[127][37267][0]のiteration numberに対する変化 初期配位をtanh(0.01r)とした場合のUのiteration numberに対する変化
初期配位を!FORMULA[128][1150403267][0]とした場合の!FORMULA[129][37267][0]のiteration numberに対する変化 初期配位をtanh(10.0r)とした場合のUのiteration numberに対する変化

図2では初期配位(黒実線)がr=10で1よりかなり小さな値となっています。いまBCはDirichletであり、図の両端からdrだけ離れた点(0-drおよび10+dr)におけるUの値を、初期配位を外挿して作成し用いています。よって図2では右端のUの値は1よりかなり小さな値で固定されています。それでも正しい解に収束するので、少なくともこの系ではかなり適当な初期配位を用意しても大丈夫なようです。これはn=±1の解がトポロジカルに安定な解であることも関係していると思います(Ref.[3])。

しかしながら初期条件に対する安定性は系に大きく依存するでしょうし、また方程式には自明な解U(r)0も存在するので、初期配位には気を遣う方が賢明だと思います。

2. ω粒子により安定化したSkyrmion

実は前章の例ではシューティング法を用いても簡単に解を求めることができます(確かそうだったと思います)。本章ではシューティング法では解を求めることが難しい系[4]を扱います。

Skyrme模型と呼ばれる、核子を記述する有効模型があります。これは非線形シグマ模型と呼ばれる系にSkyrme項を付加した模型です。この系にはSkyrmionと呼ばれるソリトン解が存在し、これは核子とみなすことができます。これに関しては記事にしていますのでそちらをご参照ください[6]

非線形シグマ模型単独では安定したソリトン解は存在しないことが知られています。そこにSkyrme項を加えることで安定した解が存在します[6]。一方、Skyrme項ではなく、ベクトル粒子との相互作用を加えることで安定化させることもできます[4][7]。ここではω粒子と呼ばれるベクトル中間子を加えることでソリトン解を安定化させます。このソリトンをRef.[7]にならい以下"ω-stabilized Skyrmion"と呼ぶことにします。

詳細は省きますが、パイオン場の非線形表現U=exp((2i/Fπ)τπ)π:=(π1,π2,π3)はパイオン場。1,2,3の足はアイソスピンの足。τ:=(τ1,τ2,τ3)はパウリ行列。Fπ:はパイオン崩壊定数)に関してはHedgehog ansatz
U=exp(iτx^f(r))
を用います(x^:=x/||x||)。ベクトルメソンであるω粒子の場ωμに関してはその時間成分のみが存在するとしてω:=ω0とします。自然単位系を採用し、すべての次元を持つ量をパイオン崩壊定数: Fπ=186MeVで測ると、f,ωに関して以下の方程式が成立します[4]
r2f+2rf(sin2f+mπ2r2sinf)+4β¯mπωsin2f=0,r2ω2rω+mω2r2ω=β¯mωfsin2f
rは3次元極座標の動径座標、プライムは動径座標による微分、mπ,mωはそれぞれパイオンおよびω粒子の質量とします。すべてFπの単位で測られていることに注意してください。mπ,mωはそれぞれ
mπ=138MeV/186MeV=0.7419,mω=782MeV/186MeV=4.204
です。またr=11.061fm、すなわちだいたい1fmです。そしてβ¯は自由なパラメータとします。

境界条件は、パイオン場に関しては1回巻きの解を求めるのでf(0)=π, f()=0ωに関してはω(0):finite, ω()=0とします[4]

ごちゃごちゃ説明してきましたが、以下物理を忘れ、改めて以下の連立非線形微分方程式を解くことを考えます:
ω-stabilized Skyrmion

f(r),ω(r)の非線形連立微分方程式を数値計算で解く:
r2f+2rf(sin2f+mπ2r2sinf)+4β¯mωωsin2f=0,r2ω2rω+mω2r2ω=β¯mωfsin2f
ここでmπ=0.7419, mω=4.204、プライムはr微分。β¯は自由なパラメータ(※1から10のオーダー)。境界条件は以下:
f(0)=π, f()=0,ω(0)=finite, ω()=0

Ref.[4]ではβ¯=1,5,10に対してr=4付近(4fm)まで解を構成しています。r=0での傾きの情報がないですが、β¯=1,5に関してはr=0からシューティング法を使って解を構成できます。しかしやってみればわかりますが、β¯=10に関してはr=4付近まで解を構成するのはなかなか難しいです。

そこでgradient flowで解を構成してみます。この系のgradient flowの方程式は以下で与えられます。

fnew=f+αfAf(f,ω),ωnew=ω+αωAω(f,ω),
ここでAf,Aωは以下:
Af(f,ω):=f+2f/r(sin2f/r2+mπ2sinf)+4β¯mπωsin2f/r2Aω(f,ω):=ω+2ω/rmω2ω+β¯mωfsin2f/r2(mπ=0.7419, mω=4.204)

0r5.4の範囲で分割数N=600、分割の1区間の長さdr=0.009で計算しました。またαf=0.000008,αω=0.000008とし、iterationの回数は200000としました。また初期のf,ωの配位として、β¯=1.0ではそれぞれ
f(init,β¯=1)(r)=π1+0.5618r+14.12r2,ω(init,β¯=1)(r)=11+67.41r4
を用いました。そしてβ¯=5.0ではβ¯=1.0の解、β¯=10.0ではβ¯=5.0の解を初期配位として用いています。

vortexの場合と同様、f,ωの微分を両端の点で計算するため、両端の「1点先」の点が必要です。これに関しては、fr=0における「1点先」はπで固定し、あとはNeumann BCを用いています。

図4が計算結果のグラフです。

!FORMULA[197][-1129948967][0]の!FORMULA[198][295889831][0]に対するグラフ。薄緑の点線及び点破線はそれぞれ!FORMULA[199][434273510][0]の計算時の!FORMULA[200][37794][0]と!FORMULA[201][1644233115][0]の初期配位を表す。 f(r),ω(r)β¯=1,5,10に対するグラフ。薄緑の点線及び点破線はそれぞれβ=1.0の計算時のfωの初期配位を表す。

オレンジの線、水色の線、赤の線がそれぞれβ¯=1,5,10に対応します。また太線(正の値の解)がf(r)、細い線(負の値の解)がω(r)に対応します。タイトルのαは上に出てきたαf,αωのことです。薄い緑の点線および点破線は、それぞれβ=1におけるfωの初期配位です。縦軸のωは質量次元1の量であり、Fπの単位で測っています(fは次元なし)。また横軸は文献と合わせるためfmの単位でプロットしています。gradient flowを用いるとβ¯=10でも解が求まり、かつRef.[4]と結果が一致します。iterationが20万回と多いのは、不安定性を避けるため1回の更新による配位変化を小さくしているためです。しかしこれだけ計算しても計算時間は短いです(今回使用したコードでは、1つのβ¯に対し10秒程度)。

この計算ではβ=1.0におけるfの初期配位の漸近形はある程度良いものを使わないと正しい解に辿り着きません。本計算ではRef.[4]の図から漸近形をフィットして使っています。これはrの大きい方の境界でNeumann BCを使っていることが関係していると思います。またαf,ωはあまりに小さいとやはり正しい解に辿り着きません。当然ではありますが、gradient flowでも計算結果の各種パラメータに対する依存性はきちんと調べて収束性を確認しなければなりません。

ちなみにこの系では、fの配位が定まると、ωの配位はGreen関数
G(r,r)=(2mωrr)1{exp(mω|rr|)exp(mω(r+r))}
を用いて
ω(r)=0drG(r,r)[2π2β¯mωr2B0(r)],B0=12π2fsin2fr2
で与えられます[4]。これを用いてシューティングやgradient flowを行うとより簡単に解を得ることができると思います。

まとめ

本記事では微分方程式を数値計算で解く際に有用であるgradient flowの方法に関して説明しました。Gradient flowの方法は、例えば境界条件で微分の値がわからないときなどに有用であり、特にシューティング法がうまく機能しないときには威力を発揮します。2つの例 −2-dim.におけるvortex解およびω-stabilized Skyrmion− に関して具体的に数値計算を行い、両系で比較的簡単に解を構成できることを説明しました。

本記事では静的な場のみを扱い、汎関数として静的なエネルギーを扱いました。一方作用Sに対してgradient flowを適用すれば、原理的には時間発展も求まるはずです。ただそのような例はあまり見たことがないので、うまく解が求まるかはよく知りません。

「Gradient flowのformalism」の章を見ればわかるのですが、Euler-Lagrange方程式さえわかっていれば、gradient flowの方程式を作ることは簡単です。計算アルゴリズムも非常に単純です。通常の方法で微分方程式が数値的に解けない場合、試してみるとよいかもしれません。

需要があるかわかりませんが、計算に使用したコードをGistに置いておきます[8][9]。プロット用コードも添付してあります。jupyter notebookにコードをコピペして使うと便利かと思います。

おしまい。

【脚注】 これは極値条件なので、実際には極大である可能性もあります。その場合解は不安定であり、安定性の議論が必要になります。

参考文献

投稿日:202456
更新日:202458
OptHub AI Competition

この記事を高評価した人

高評価したユーザはいません

この記事に送られたバッジ

バッジはありません。
バッチを贈って投稿者を応援しよう

バッチを贈ると投稿者に現金やAmazonのギフトカードが還元されます。

投稿者

bisaitama
bisaitama
148
69326

コメント

他の人のコメント

コメントはありません。
読み込み中...
読み込み中
  1. Gradient flow
  2. 微分方程式と汎関数の極小化
  3. Gradient flow
  4. Gradient flowの利点: 境界値問題
  5. Gradient flowのformalism
  6. 不安定性
  7. 実際の数値計算
  8. 1. 非線形Schrödinger方程式における静的なvortex解
  9. 2. ω粒子により安定化したSkyrmion
  10. まとめ
  11. 参考文献