演算子の多重定義は自動微分

テイラー写像の演算と
加速器物理への応用
全6回の講義は
用例とそのコンピューター上での実行に重点を置く
Etienne Forest
総合研究大学院大学
2004年12月/2005年1月
►
“微分代数(DA)”ソフトウェアの原型とは?
►
►
その働きは? なぜ有用なのか?
“演算子の多重定義”とは?
►
テイラー多態とは? テイラーか実数かの選択を実行時まで延ばすことができる
摂動論ではベクトル場を利用する
“リー/微分代数”とは?
写像の様々な正規化形式は繰り返しにおいて有用である
正規形とは?
積分ベースのプログラムとは?
行列ベースのプログラム、Cosy-Infinityとは?
コンパイルしたものと解釈したプログラム(Cosy-Infinity)に
おける多態の違いは?
以上のもの全てを自分で作成したプログラムで使うことが
できるのか?
►
►
►
►
►
►
打切りべき級数代数(TPSA)
ソフトウェア
テイラー写像の近似値を計算
テイラーを使ったプログラムが
普通のFortranプログラムのようになる
これらの質問については6回の講義の中で理論よりも
むしろできるだけ多くの例を挙げて考えていく。
自動微分(AD)ー微分代数(DA)
について
第1回講義
自動微分(AD)は微分代数(DA)ではなく
打切りべき級数代数(TPSA)に基づいている
実用的なベクトル場に関連する微分代数(DA)に
ついてはのちの講義で述べることとする
第1回講義における基本的事項:
• 打切りべき級数代数(TPSA) (すなわち微分代数
(DA)) ソフトウェアの原型はどのようなものか?
• その働きは? なぜ有用なのか?
• “演算子の多重定義”とは?
これらの問題は Berz が好んだ抽象的な数学的専門用語を使わなければ、
難しくはない
無駄を省くために
1. 簡単: この講義のために 十分機能的な小型TPSA ソフトウェア を作成!
2. 空白を含めたった400行のプログラム!
3. 演算子が完全に多重定義され、自動的
4. 2変数 3次数に限定
もちろんこの小型ソフトは Berz のソフトウェアではないので、Berz のソフトウェアで
演算子の多重定義をする際の様々な事項を考える必要はない。
ここでの目的はこれらのテクニックをわかりやすく説明することであり、最終的には
ほとんど関係のない専門用語でみなさんを煩わせることではない。
小型TPSAソフトウェアを通してTPSA を見てみよう
基本的なTPSAソフトは、自分の選んだ変数でテイラー級数を
用い、コンピューター上で計算を展開するための道具である。
► 光学や加速器においては摂動演算の写像の計算、また時には
シミュレーションを可能にする。
► 演算子の多重定義は自動微分、すなわちAutomatic
Differentiationに近いものになりつつあるが、最近は
Computational Differentiation という単語が使われている:
テイラー展開を計算するプログラムは、もとの数量を計算した
プログラムとほぼ同じになる。
►
摂動演算 : 転送行列、 ラティス関数(トゥイス)、ベータトロン振動数、 減衰、
振幅依存チューンシフト、光学システムにおける収差、 共鳴、 シンクロトロン
積分など。これらにおいては微分演算子とリー/微分代数(DA)が関係してくる。
小型 TPSAソフトと Gun/FODOセル アプリケーションのメインプログラムの
ダウンロードは こちら から!
なぜテイラー級数が必要なのか?
H=1/2 p 2y + gy
K=-p z=- v02-p 2y-2gy
g=10 m/s ; v0=800 m/s ; L=60 m .
2
一次元四極 FODOセル
K = - pz = -
1
2
x
2 +k
- px
Q
2
TPSAの加法/減法
T1=a 0+a 1x 1+a 2x 2+a 3x 21+a 4x 22+a 5x 1x 2 a 0,a 1,a 2,a 3,a 4,a 5
T2=b 0+b 1x 1+b 2x 2+b 3x 21+b 4x 22+b 5x 1x 2 b 0,b 1,b 2,b 3,b 4,b 5
T3=T1±T2= a 0±b 0,a 1±b 1,a 2±b 2,a 3±b 3,a 4±b 4,a 5±b 5
= 2 a 0±b 0,a 1±b 1,a 2±b 2,a 3±b 3,a 4±b 4,a 5±b 5
乗法
T1=a 0+a 1x 1+a 2x 2+a 3x 21+a 4x 22+a 5x 1x 2 a 0,a 1,a 2,a 3,a 4,a 5
T2=b 0+b 1x 1+b 2x 2+b 3x 21+b 4x 22+b 5x 1x 2 b 0,b 1,b 2,b 3,b 4,b 5
3
T3=T1*T2= a 0b 0,a 0b 1+a 1b 0,a 0b 2+a 2b 0,a 0b 3+a 3b 0+a 1b 1,a 0b 4+a 4b 0+a 2b 2,a 0b 5+a 5b 0+a 1b 2+a 2b 1 +O( x )
= 2 a 0b 0 , a 0b 1+a 1b 0 , a 0b 2+a 2b 0 , a 0b 3+a 3b 0+a 1b 1 , a 0b 4+a 4b 0+a 2b 2 , a 0b 5+a 5b 0+a 1b 2+a 2b 1
逆数 : 冪零の導入
T1=a 0+a 1x 1+a 2x 2+a 3x 21+a 4x 22+a 5x 1x 2 a 0,a 1,a 2,a 3,a 4,a 5
T2=1/T 1=
1
a 0+a 1x 1+a 2x 2+a 3x 21+a 4x 22+a 5x 1x 2
1/a 0
=
1+ a 1/a 0 x 1+ a 2/a 0 x 2+ a 3/a 0 x 21+ a 4/a 0 x 22+ a 5/a 0 x 1x 2
T
= 2 1/a 0 1-T+T 2
関数: 指数関数
ここでもまた冪零Tを作るために定数部分をまとめる
T1=a 0+a 1x 1+a 2x 2+a 3x 21+a 4x 22+a 5x 1x 2 a 0,a 1,a 2,a 3,a 4,a 5
T2=exp T1 =exp a 0+a 1x 1+a 2x 2+a 3x 21+a 4x 22+a 5x 1x 2
=exp a 0 exp a 1x 1+a 2x 2+a 3x 21+a 4x 22+a 5x 1x 2
T
2
= 2 exp a 0 1+T+T /2
冪零を無視できる? 時にはOK
T1=a 0+a 1x 1+a 2x 2+a 3x 21+a 4x 22+a 5x 1x 2 a 0,a 1,a 2,a 3,a 4,a 5
T2=exp T1 =exp a 0+a 1x 1+a 2x 2+a 3x 21+a 4x 22+a 5x 1x 2
 T /n! =
N
lim
N
n
2
2
exp a 0 1+T+T /2
n=0
これはCOSY-Infinity テクニックの中で使われており、 T は多項式のベクトル場
である。 従って、なぜこの級数が使えるのかよく考えてほしい! 小型TPSAの中
では TPSA_EXP として使われており、 N=n_tpsa_exp である。
結論
Truncated
Series Algebra)を導入した。 Berzの “微分代数
(DA)” ソフトウェアの原型とはこれだけのもので
ある。
► 数学的には、この打切りべき級数代数(TPS
Algebra)は単なる環である。
► 微分代数の概念はTPSAに立入るものではない。
現段階では何ら関連性はない。
► コンピュータ上に打切り級数代数(a
今後の講義
:
不変条件、 トゥイス関数およびその非線形歪み
► 幾何学的な図はテイラー写像から導かれた演算に
翻訳される。
► 自分で作成したFPPライブラリを使用していく。ここでは
数学的な詳細には立ち入らないが、このライブラリは
公表どおりの働きをすると考えてほしい。
► FPPはテイラー写像に関連したベクトル場を扱うことが
わかると思う。これらのベクトル場は微分リー代数を
形成する。しかしそれはさほど重要なことではない :
幾何学的側面に注目してほしい。
► 第2回講義は従来型の計算から始まり、幾何学的観点
の導入で終わる予定である。
► 摂動論について幾何学的観点から論じていく
問題
関数のうち ArcSin(x) と asin(x) は簡単には定数部分と冪零部分とに分ける
ことができない。
x が多項式で表されるとき、 asin(x) の値を求めるアルゴリズムを作成せよ。
それをもとに、 小型TPSA ルーチンを用いてプログラムを作成せよ。
アルゴリズムは3次多項式に限定されてはならない。