Hatena::Groupsicm

naoya_t@SICM(べ、べつにあなたのためじゃないんだからね) RSSフィード

2009-01-15

1.5 オイラー・ラグランジュ方程式 /The Euler-Lagrange Equations

| 03:10 | 1.5 オイラー・ラグランジュ方程式 /The Euler-Lagrange Equations - naoya_t@SICM(べ、べつにあなたのためじゃないんだからね) を含むブックマーク はてなブックマーク - 1.5 オイラー・ラグランジュ方程式 /The Euler-Lagrange Equations - naoya_t@SICM(べ、べつにあなたのためじゃないんだからね) 1.5 オイラー・ラグランジュ方程式 /The Euler-Lagrange Equations - naoya_t@SICM(べ、べつにあなたのためじゃないんだからね) のブックマークコメント

停留作用の法則は配置空間における系の実現可能な経路を、その作用が停留値(stationary value)をもつものとして性格づける。初等微積分学において我々は、関数の臨界点(critical point)とはその微分が消滅する点であると習う。同様に、その経路に沿った作用は停留であるような経路群は連立微分方程式の解である。オイラーラグランジュ方程式(Euler-Lagrange equations) あるいは単にラグランジュ方程式(Lagrange equations)と呼ばれるこの体系は、そのおかげで力学系の運動の計算に停留作用の法則が使えるようになる上、力学の変分的定式化とニュートン的定式化を関連づけてくれるlinkである*1

ラグランジュ方程式 /Lagrange equations

Lが時刻・座標・速度に依存した系のラグランジュ関数で、qがその上で作用S\[q\](t_1,t_2)が(経路の両端点を固定した変種の経路に対して)停留になるような座標経路であるなら、

D(\delta_2L\circ\Gamma\[q\])-\delta_1L\circ\Gamma\[q\]=0

であることが分かるだろう。ここで L は局所タプルをとる実数値関数である;\delta_1L\delta_2Lは、一般化座標位置と一般化速度成分に関するLの偏微分を意味する*2

関数\delta_2Lは局所タプルを、一般化速度の各成分に関するLの微分を成分とする構造にマッピングする。関数Γ[q]は時刻を局所タプルにマッピングする:\Gamma\[q\](t)=(t,q(t),Dq(t),...)。従って合成関数\delta_1L\circ\Gamma\[q\]および\delta_2L\circ\Gamma\[q\]は共に、時刻を1引数とする関数である。ラグランジュ方程式は、\delta_2L\circ\Gamma\[q\]微分が常に\delta_1L\circ\Gamma\[q\]に等しくなると表明する。ラグランジュ関数が与えられればラグランジュ方程式は、実現可能な経路によって必ず満たされる通常の連立微分方程式を形成する*3

1.5.1 ラグランジュ方程式微分 /Derivation of the Lagrange Equations

停留作用の法則が、実現可能な経路は一組の常微分方程式を満たすことを示唆していることを示そう。まず、経路の変動に伴い経路依存関数がどのように変動するかを調べるツールを開発しよう。それから、これらのツールを作用に適用し、ラグランジュ方程式を導きたい。

経路を変動させる

変分とか変化とか変動とか何となく書いてるけど、定訳があったり用語の違いがはっきり決まってるならそれに従うかも(その方が他の資料をあたる時に便利)。自分にとってわかりやすいかどうかを優先させるなら、カタカナないし原語ママで書いたほうが良い場合がある。pathとかvaryとかそのままでいいよもう。

  • vary / variation
  • change

経路qに依存する関数 f[q] があるとしよう。経路の変動につれこの関数はどのように変動するだろうか?

qを座標経路、q+ε^η をvaryされた経路、ここで関数 ηは 経路qに足すことのできるような経路的関数、要素εはスケールファクターである。経路q上の関数fの変分(variation) δηf[q] を*4

\delta_\eta f\[q\]=\lim{\epsilon →0}(\frac{f\[q+\epsilon\eta\]-f\[q\]}\epsilon)

と定義する。fの変分とは、経路内の小さな変分に対する関数fの変化への一次近似である。fの変分はηに依存する。

簡単な例として、同一経路関数 I[q] = q の変分を挙げる。この定義を適用すれば

 δηI[q] = limε→0(...) = η

伝統的にδηI[q]は簡単にδqと書く。他の例として、経路の微分を返す経路関数の変分を挙げよう:

 g[q]=Dq,... δηg[q] = limε→0(...) = Dη

伝統的にδηg[q]はδDqと書く。

変分は微分を用いて表現することができる。g(ε)=f[q+ε^η]とするなら

~1.22

変分には以下のような微分的な性質がある。パス依存関数f,g,定数cについて:

~1.23

~1.24

~1.25

Fを経路非依存関数、gを経路依存関数とする、と

~1.26

演算子D(微分)とδ(変分)は以下の意味でcommuteする:

~1.27

似たような意味で、変分は積分ともcommuteする。

経路依存関数fが特定の経路qについて、その経路内での小さな変化に対し停留であるなら、それは、

特定の関数ηの小さな倍数をqに足した結果のそれらの変分sのサブセットについても停留にちがいない。

なので、任意のηについての式δηf[q]=0 は、qの近傍の経路の小さな変分について関数fが停留であることを示唆する。

問題1.7 δの性質

δが式1.23〜1.27の性質をもつことを示せ。

問題1.8 δの実装

a. Suppose we have a procedure f that implements a path-dependent function: for path q and time t it has the value ((f q) t). The procedure delta computes the variation ( f)[q](t) as the value of the expression ((((delta eta) f) q) t). Complete the definition of delta:

(define (((delta eta) f) q)
  ...  )

b. Use your delta procedure to verify the properties of listed in exercise 1.7 for simple functions such as implemented by the procedure f:

(define (f q)
  (compose 
    (literal-function 'F (-> (UP Real Real Real) Real))
    (Gamma q)))

This implements a one-degree-of-freedom path-dependent function that depends on the local tuple of the path at each moment. You should compute both sides of the equalities and compare the results.

Varying the action

The action is the integral of the Lagrangian along a path:

For a realizable path q the variation of the action with respect to any variation that preserves the endpoints, (t1) = (t2) = 0, is zero:

Variation commutes with integration, so the variation of the action is

Using the fact that

which follows from equations (1.20) and (1.21), and using the chain rule for variations (1.26), we get*5

Integrating the last term of equation (1.32) by parts gives

For our variation we have (t1) = (t2) = 0, so the first term vanishes.

Thus the variation of the action is zero if and only if

The variation of the action is zero because, by assumption, q is a realizable path. Thus (1.34) must be true for any function that is zero at the endpoints.

We retain enough freedom in the choice of the variation that the factor in the integrand multiplying is forced to be zero at each point along the path. We argue by contradiction: Suppose this factor were nonzero at some particular time. Then it would have to be nonzero in at least one of its components. But if we choose our to be a bump that is nonzero only in that component in a neighborhood of that time, and zero everywhere else, then the integral will be nonzero. So we may conclude that the factor in curly brackets is identically zero:53

This is just what we set out to obtain, the Lagrange equations.

A path satisfying Lagrange's equations is one for which the action is stationary, and the fact that the action is stationary depends only on the values of L at each point of the path (and at each point on nearby paths), not on the coordinate system we use to compute these values. So if the system's path satisfies Lagrange's equations in some particular coordinate system, it must satisfy Lagrange's equations in any coordinate system. Thus the equations of variational mechanics are derived the same way in any configuration space and any coordinate system.

Harmonic oscillator

For an example, consider the harmonic oscillator. A Lagrangian is

Then

The Lagrangian is applied to a tuple of the time, a coordinate, and a velocity. The symbols t, x, and v are arbitrary; they are used to specify formal parameters of the Lagrangian.

Now suppose we have a configuration path y, which gives the coordinate of the oscillator y(t) for each time t. The initial segment of the corresponding local tuple at time t is

So

and

so the Lagrange equation is

which is the equation of motion of the harmonic oscillator.

Orbital motion

As another example, consider the two-dimensional motion of a particle of mass m with gravitational potential energy - µ/r, where r is the distance to the center of attraction. A Lagrangian is54

where and are formal parameters for rectangular coordinates of the particle, and v and v are formal parameters for corresponding rectangular velocity components. Then55

Similarly,

Now suppose we have a configuration path q = ( x, y ), so that the coordinate tuple at time t is q(t) = ( x(t), y(t) ). The initial segment of the local tuple at time t is

So

and

The component Lagrange equations at time t are

問題1.9 Lagrange's equations

Derive the Lagrange equations for the following systems, showing all of the intermediate steps as in the harmonic oscillator and orbital motion examples.

a. A particle of mass m moves in a two-dimensional potential V(x, y) = (x2 + y2)/2 + x2 y - y3/3, where x and y are rectangular coordinates of the particle. A Lagrangian is L(t; x, y; vx, vy) = (1/2) m (vx2 + vy2) - V(x, y).

b. An ideal planar pendulum consists of a bob of mass m connected to a pivot by a massless rod of length l subject to uniform gravitational acceleration g. A Lagrangian is L(t, , ) = (1/2) m l2 2 + m g l cos . The formal parameters of L are t, , and ; measures the angle of the pendulum rod to a plumb line and is the angular velocity of the rod.56

c. A Lagrangian for a particle of mass m constrained to move on a sphere of radius R is L(t; , ; , ß) = (1/2) m R2 (2 + (ß sin )2). The angle is the colatitude of the particle and is the longitude; the rate of change of the colatitude is and the rate of change of the longitude is ß.

問題1.10 Higher-derivative Lagrangians

Derive Lagrange's equations for Lagrangians that depend on accelerations. In particular, show that the Lagrange equations for Lagrangians of the form L(t, q, , ) with terms are57

In general, these equations, first derived by Poisson, will involve the fourth derivative of q. Note that the derivation is completely analogous to the derivation of the Lagrange equations without accelerations; it is just longer. What restrictions must we place on the variations so that the critical path satisfies a differential equation?

1.5.2 Computing Lagrange's Equations

The procedure for computing Lagrange's equations mirrors the functional expression (1.18), where the procedure Gamma implements :58

(define ((Lagrange-equations Lagrangian) q)
  (- (D (compose ((partial 2) Lagrangian) (Gamma q)))
     (compose ((partial 1) Lagrangian) (Gamma q))))

The argument of Lagrange-equations is a procedure that computes a Lagrangian. It returns a procedure that when applied to a path q returns a procedure of one argument (time) that computes the left-hand side of the Lagrange equations (1.18). These residual values are zero if q is a path for which the Lagrangian action is stationary.

Observe that the Lagrange-equations procedure, like the Lagrange equations themselves, is valid for any generalized coordinate system. When we write programs to investigate particular systems, the procedures that implement the Lagrangian function and the path q will reflect the actual coordinates chosen to represent the system, but we use the same Lagrange-equations procedure in each case. This abstraction reflects the important fact that the method of derivation of Lagrange's equations from a Lagrangian is always the same; it is independent of the number of degrees of freedom, the topology of the configuration space, and the coordinate system used to describe points in the configuration space.

自由粒子 /The free particle

Consider again the case of a free particle. The Lagrangian is implemented by the procedure L-free-particle. Rather than numerically integrating and minimizing the action, as we did in section 1.4, we can check Lagrange's equations for an arbitrary straight-line path t ( at + a0, bt + b0, ct + c0 ):

(define (test-path t)
  (up (+ (* 'a t) 'a0)
      (+ (* 'b t) 'b0)
      (+ (* 'c t) 'c0)))
(print-expression
 (((Lagrange-equations (L-free-particle 'm))
   test-path)
  't))
→ (down 0 0 0)

That the residuals are zero indicates that the test path satisfies the Lagrange equations.59

We can also apply the Lagrange-equations procedure to an arbitrary function:60

(show-expression
 (((Lagrange-equations (L-free-particle 'm))
   (literal-function 'x))
  't))
→ (* (((expt D 2) x) t) m)

The result is an expression containing the arbitrary time t and mass m, so it is zero precisely when D2 x = 0, which is the expected equation for a free particle.

調和振動子(振り子) /The harmonic oscillator

Consider the harmonic oscillator again, with Lagrangian (1.16). We know that the motion of a harmonic oscillator is a sinusoid with a given amplitude, frequency, and phase:

Suppose we have forgotten how the constants in the solution relate to the physical parameters of the oscillator. Let's plug in the proposed solution and look at the residual:

(define (proposed-solution t)
  (* 'a (cos (+ (* 'omega t) 'phi))))

(show-expression
 (((Lagrange-equations (L-harmonic 'm 'k))
   proposed-solution)
  't))

The residual here shows that for nonzero amplitude, the only solutions allowed are ones where ( k - m 2 ) = 0 or = (k/m)1/2.

問題1.11

Compute Lagrange's equations for the Lagrangians in exercise 1.9 using the Lagrange-equations procedure. Additionally, use the computer to perform each of the steps in the Lagrange-equations procedure and show the intermediate results. Relate these steps to the ones you showed in the hand derivation of exercise 1.9.

問題1.12

a. Write a procedure to compute the Lagrange equations for Lagrangians that depend upon acceleration, as in exercise 1.10. Note that Gamma can take an optional argument giving the length of the initial segment of the local tuple needed. The default length is 3, giving components of the local tuple up to and including the velocities.

b. Use your procedure to compute the Lagrange equations for the Lagrangian

Do you recognize the resulting equation of motion?

c. For more fun, write the general Lagrange equation procedure that takes a Lagrangian of any order, and the order, to produce the required equations of motion.

*1:48

*2:49

*3:50

*4:51

*5:52

2009-01-09

1.4 作用の計算 /Computing Actions

| 00:50 | 1.4 作用の計算 /Computing Actions - naoya_t@SICM(べ、べつにあなたのためじゃないんだからね) を含むブックマーク はてなブックマーク - 1.4 作用の計算 /Computing Actions - naoya_t@SICM(べ、べつにあなたのためじゃないんだからね) 1.4 作用の計算 /Computing Actions - naoya_t@SICM(べ、べつにあなたのためじゃないんだからね) のブックマークコメント

上述のアイデアを説明するために、そして計算機プログラムとしてその定式化を導入するために、我々は最も単純な力学系を考える -- 三次元空間で運動する1つの自由粒子オイラーラグランジュは、自由粒子が実際にとった経路上での運動エネルギーの時間積分は、同じ両端をもつ他のいかなる経路上でとった同様の積分よりも小さいことを発見した:ラグランジュ関数運動エネルギーになるようにとる場合、自由粒子は停留作用の法則に従って運動する。質量m,速度\vec vの粒子の運動エネルギー\frac12mv^2である。ここでvは\vec vの大きさ。このケースでは、一般化座標を通常の直交座標になるように選択することができる。

オイラーラグランジュに従うなら、この自由粒子ラグランジュ関数*1

L(t,x,v)=\frac12m(v\cdot v)

ここで仮引数xは与えられた直交座標系に対する位置成分のタプルを、仮引数vは速度成分のタプルをそれぞれ指定する*2

この公式は手続き

(define ((L-free-particle mass) local)
  (let ((v (velocity local)))
    (* 1/2 mass (dot-product v v))))

として表現することができる。

この定義は、L-free-particle が質量massを引数として取り、「局所タプル local*3 を取り、velocity手続きを用いて一般化速度を抽出し、その速度を用いてラグランジュ関数の値を算出する手続き」を返す手続きであることを示す。

時刻を位置成分にマッピングする座標経路関数をqとすると*4

q(t)=(x(t),y(t),z(t))

この定義は*5

(define q
  (up (literal-function 'x)
      (literal-function 'y)
      (literal-function 'z)))

ここで literal-function は、与えられたシンボル名(symbolic name)以外に既知のプロパティを持たない1引数関数を表す手続きをつくる。シンボルqは、実引数1つ(time)をとり、その時点における座標を表す3成分のタプルを生成する手続きを指すようになる。例えば、この手続きを時刻シンボル t について以下のように評価することができる:

(print-expression (q 't))
→ (up (x t) (y t) (z t))

手続き print-expression は式の印字可能な形を作り、印字前に式を簡約する。

座標経路の微分 Dq は、時刻を速度成分にマッピングする関数である:

Dq(t)=(Dx(t),Dy(t),Dz(t))

我々は、ある関数微分を作って使うことができる*6。例えば、こう書くことができる:

(print-expression ((D q) 't))
→ (up ((D x) t) ((D y) t) ((D z) t))

関数 \Gamma は座標経路をとり、局所タプル (t,q(t),Dq(t),...) を与える時刻の関数を返す。これを手続きGammaとして実装する。Gammaはこのような事を行う:

(print-expression ((Gamma q) 't))
→ (up t
    (up (x t) (y t) (z t))
    (up ((D x) t) ((D y) t) ((D z) t)))

従って合成関数 L\circ\Gamma は、経路上のこの時点でのラグランジュ関数の値を返す時刻の関数である:*7

(print-expression 
  ((compose (L-free-particle 'm) (Gamma q)) 't))
→ (+ (* 1/2 m (expt ((D x) t) 2))
   (* 1/2 m (expt ((D y) t) 2))
   (* 1/2 m (expt ((D z) t) 2)))

手続き show-expression は、簡約された式を伝統的な中置形式(infix form)にしてその結果を表示する点以外はprint-expression と同様である*8。我々はこの本で囲み式を作るのにこの表示方法を使っている。手続き show-expressionprint-expression が返すような前置形式も生成するが、我々は通常これは表示しない*9

(show-expression
 ((compose (L-free-particle 'm) (Gamma q)) 't))

\frac12m(Dx(t))^2+\frac12m(Dy(t))^2+\frac12m(Dz(t))^2

式(1.11)より、我々は時刻t_1からt_2までのラグランジュ作用(積分)を算出できる:

(define (Lagrangian-action L q t1 t2)
  (definite-integral (compose L (Gamma q)) t1 t2))

Lagrangian-action引数としてラグランジュ関数を算出する手続きL、座標経路を算出する手続きq、開始/終了時刻 t1, t2 をとる。ここで使われている definiteintegral は、1つの関数と区間の両端 t1, t2引数とし、関数の区間t1〜t2における定積分を算出する*10

Lagrangian-action の定義は特定の座標セットにも、配置空間の次元にさえも依存しない点に留意されたし。ラグランジュ関数および座標経路の座標表現から作用を算出する方法は座標系に依存しない。

これで我々は経路沿いの自由粒子について作用を計算することができる。例えば、直線 t (4t+7,3t+5,2t+1)に沿って等速運動を行う粒子を考える*11。この経路は手続き

(define (test-path t)
  (up (+ (* 4 t) 7)
      (+ (* 3 t) 5)
      (+ (* 2 t) 1)))

で表される。質量3の粒子について、t=0 から t=10 までの作用を以下のように得る:*12

(Lagrangian-action (L-free-particle 3.0) test-path 0.0 10.0)
→ 435.

練習1.4 ラグランジュ作用 /Lagrangian actions

自由粒子について、適切なラグランジュ関数*13

L(t,x,v)=\frac12mv^2

である。

xを自由粒子の等速直線経路で、x_a=x(t_a) かつ x_b=x(t_b) とする。解経路上の作用が

\frac{m}2\frac{(x_b-x_a)^2}{t_b-t_a}

であることを示せ。

小作用経路 /Paths of minimum action

我々は既に、自由粒子の実際の経路が(等速)直線運動であることを知っている。

オイラーラグランジュによると、その作用は直線状のテスト経路沿いの方が隣接する経路沿いよりも小さくなる。qを作用 S\[q\](t_1,t_2) をもつ直線テスト経路とする。q+\epsilon^\eta を、経路の変分\etaに実引数\epsilonを掛けたものをqに加えることで得た隣接経路とする*14。変更された経路上の作用はS\[q+\epsilon^\eta\](t_1,t_2) である。オイラーラグランジュは、経路の両端で0となる任意の\etaおよび小さな非ゼロ値\epsilon についてS\[q+\epsilon^\eta\](t_1,t_2) > S\[q\](t_1,t_2) が成り立つことを発見した。

経路の両端t=t_1およびt=t_2でゼロになるようなテスト関数のいくらかの値を足してテスト経路を変えながらこれを数値的に検証しよう。

両端でゼロになる関数\etaを作るには、十分うまく動作する関数\nuがあれば、\eta(t)=(t-t_1)(t-t_2)\nu(t)のようにすればよい。これは

(define ((make-eta nu t1 t2) t)
  (* (- t t1) (- t t2) (nu t)))

と実装できる。

これは、与えられた経路に変更を加えた経路上での自由粒子の作用を\epsilon関数として算出するのに利用できる:*15

(define ((varied-free-particle-action mass q nu t1 t2) epsilon)
  (let ((eta (make-eta nu t1 t2)))
    (Lagrangian-action (L-free-particle mass)
                       (+ q (* epsilon eta))
                       t1
                       t2)))

\nu(t)=(sin\,t,cos\,t,t^2)\epsilon=0.001で変更を加えた経路での作用は、予想される通り、テスト経路での作用より大きい:

((varied-free-particle-action 3.0 test-path 
                              (up sin cos square)
                              0.0 10.0)
 0.001)
→ 436.29121428571153

作用が最小になる\epsilonの値を数値的に算出することができる。例えば、-2から1の間で探してみる:*16

(minimize
 (varied-free-particle-action 3.0 test-path 
                              (up sin cos square) 
                              0.0 10.0)
 -2.0 1.0)
→ (-1.5987211554602254e-14 435.0000000000237 5)

期待どおりの結果だ -- \epsilonの最適値はゼロであり*17、作用の最小値は直線経路に沿った経路である。

作用を最小化する軌道を探す /Finding trajectories that minimize the action

与えられた軌道が実現可能なものか決めるのに我々は変分原理(variational principle)を用いてきた。我々は変分原理を軌道の検出にも用いることができる。有限個の引数によって特定された軌道群を与えられたとして、作用を最小化する軌道を探す事により、群に含まれる軌道のなかで実際の軌道を最もよく近似するものを引数空間から探し出すことができる。よい近似関数群を選ぶことで、実際の軌道に任意に近づくことができる*18

両端を固定したパラメトリックな経路をつくる1つの方法は、経路の両端といくつかの中間点を通る多項式を用いることである。中間点の位置を変えることで経路も変わる;変更された経路の引数は中間点の座標である。make-path手続きが ラグランジュ補間多項式を用いてそのような経路を構築する*19。手続き make-path は5つの引数で呼ばれる: (make-path t0 q0 t1 q1 qs), ここで q0q1 は経路の両端, t0t1 は対応する時刻、そしてqs は中間点のリストである。

パラメトリックな経路を指定したので、これでパラメトリックな作用が構築できる。これは単にパラメトリックな経路に沿って算出された作用である:

(define ((parametric-path-action Lagrangian t0 q0 t1 q1) qs)
  (let ((path (make-path t0 q0 t1 q1 qs)))
    (Lagrangian-action Lagrangian path t0 t1)))

作用を最小化する引数を探すことで、近似解経路を発見することができる。この最小化は、お決まりの多次元最小化手続きで行う:*20

(define (find-path Lagrangian t0 q0 t1 q1 n)
  (let ((initial-qs (linear-interpolants q0 q1 n)))
    (let ((minimizing-qs
           (multidimensional-minimize
            (parametric-path-action Lagrangian t0 q0 t1 q1)
            initial-qs)))
      (make-path t0 q0 t1 q1 minimizing-qs))))

手続き multidimensional-minimize は、引数として最小化したい関数(この場合、作用)を計算する手続き(この場合、parametricpathactionへの呼出しの値)と、初期推定値をとる。ここでは両端点を結ぶ直線上に等間隔にとった点を初期設定値として選択し、linear-interpolants で計算する。

この戦略の使い方を説明するために、ラグランジュ関数*21

L(t,q,v)=\frac12mv^2-\frac12kq^2

と、質量m, ばね定数k を使って調和振動子(振り子)の軌道を探してみよう。このラグランジュ関数

(define ((L-harmonic m k) local)
  (let ((q (coordinate local)) 
        (v (velocity local)))
    (- (* 1/2 m (square v)) (* 1/2 k (square q)))))

と実装される。

調和振動子がm=1,k=1でq(0)=1とq(π/2)の間で取る近似経路が1つ見つかる:*22

(define q (find-path (L-harmonic 1.0 1.0) 0. 1. :pi/2 0. 3))

我々は、m=1,k=1におけるこの調和振動子の軌道が

q(t)=A cos(t+\phi)

であることを知っている。ここで振幅Aと位相\phiは初期条件によって決定される。選択した両端点において、解はq(t)=cos(t)である。近似経路は区間0〜π/2での余弦(cos)の近似になるはずである。図1.1はこのプロセスによって生成される多項近似における誤差を示している。中間点3つによるこの近似における最大誤差は1.7\times10^{-4}未満である。近似における誤差は、期待どおり、中間点の数が増えれば減少することが確認できる。中間点4つの場合で1/15ほどになる。

http://mitpress.mit.edu/sicm/chap1-Z-G-32.gif

図1.1:最小作用による多項近似と調和振動子の実際の軌道の差。横軸が時刻、縦軸が誤差。

  • abscissa [æbsísə]: 横座標
  • ordinate : 縦座標

問題1.5 Solution process

作用が計算される度に経路をプロットするように手続きparametric-path-actionに手を加えることで、最小化の進み具合を観察できる。以下を試されたい:

(define win2 (frame 0. :pi/2 0. 1.2))

(define ((parametric-path-action Lagrangian t0 q0 t1 q1) 
         intermediate-qs)
    (let ((path (make-path t0 q0 t1 q1 intermediate-qs)))
      ;; 経路を画面表示
      (graphics-clear win2)
      (plot-function win2 path t0 t1 (/ (- t1 t0) 100))
      ;; 作用を計算
      (Lagrangian-action Lagrangian path t0 t1)))

(find-path (L-harmonic 1. 1.) 0. 1. :pi/2 0. 2)

問題1.6 作用を最小化する /Minimizing action

我々が、ある不可能な問題について、作用を最小化することで経路を得ようとしているとしよう。例えば、1つの自由粒子について、粒子が自由であるということと矛盾するような速度と位置の条件を両端に設定するとしよう。この形式(formalism)はこのような不愉快な攻撃から自らを守るだろうか?これをプログラムして何が起こるか見てみるのは新しい発見になるだろう。

*1:26

*2:27

*3:28

*4:29

*5:30

*6:31

*7:32

*8:33

*9:34

*10:35

*11:36

*12:37

*13:38

*14:39

*15:40

*16:41

*17:42

*18:43

*19:44

*20:45

*21:46

*22:47

2009-01-08

1.2 配置空間 /Configuration Spaces

| 03:07 | 1.2 配置空間 /Configuration Spaces - naoya_t@SICM(べ、べつにあなたのためじゃないんだからね) を含むブックマーク はてなブックマーク - 1.2 配置空間 /Configuration Spaces - naoya_t@SICM(べ、べつにあなたのためじゃないんだからね) 1.2 配置空間 /Configuration Spaces - naoya_t@SICM(べ、べつにあなたのためじゃないんだからね) のブックマークコメント

力学系を、質量と位置をもつが内部構造は持たない成分点粒子群から成るものとして考えよう。拡張された物体(extended bodies)は、相互間に特定の空間的関係をもつ多数の成分粒子から成るものと考えうる*1。拡張された物体は、成分粒子相互間の空間的制約ゆえにその形状を保っている。系の全成分粒子の位置を特定することで、系の配置(configuration)が特定される。拡張された物体の形状を決定するような制約が系の部分間に存在するということは、成分粒子群は可能な全ての位置をとれるわけではないことを意味する。系の仮定しうる全配置集合をその系の「配置空間(configuration space)」と呼ぶ。配置空間の次元とは、配置を完全に特定するために与えられるべき変数の最小個数である。配置空間の次元はその系の「自由度(degrees of freedom)」とも呼ばれる*2

制約を受けていない単一の粒子(particle)の場合、配置の指定には3つの変数が必要である。点粒子は3次元の配置空間をもつ。1つ以上の点粒子をもつ系を扱う場合、配置空間はより複雑になる。k個の分離した粒子がある場合、可能な配置を記述するのに 3k 個の変数が必要である。系の部分間に制約が存在する場合、その配置はより低い次元の空間に制限される。例えば、三次元(空間)において2粒子間の距離が固定になるように動くよう制約された2点粒子からなる系は5次元の配置空間をもつ:数値3つで一方の粒子の位置を固定し、あと2つでもう一方の粒子の位置を1つ目の粒子に対し相対的に与えることができる。

ジャグリングピンを考えてみる。ピンの配置は、ピンを作り上げている全原子の位置を与えれば特定される。しかし、より経済的な配置の記述法が存在する。ジャグリングピンが真に剛体である(rigid)という理想化において、ピンの全原子間の距離は一定に保たれる。従って、ピンの配置は原子1つの位置とピンの向きを与えることで特定できる。制約を用いることで、ピンの他の全成分の位置はこの情報をもとに決定可能である。ジャグリングピンの配置空間の次元は6である:空間的位置を特定する変数最小個数は3で、向きを特定する変数最小個数も3である。

系が時間とともに変遷するにつれ、成分粒子は制約下で移動する。各成分粒子の運動は、変化する配置を記述することで特定される。故に、系の運動は配置空間内の経路に沿った変遷として記述することができる。配置経路は関数、即ち任意の時刻における系の配置を与える配置経路(configuration-path)関数として定義することができる。

Exercise 1.2. 自由度 / Degrees of freedom

以下の力学系について、配置空間の自由度を答えよ。

a. 3本のジャグリングピン。

b. 固定された支点に繋がれた剛性の質量をもたない棒に吊るされた質点で構成される球形の振り子。振り子は、剛性の棒が課す制約の下でいかなる方向にも動くことができる。質点は一様な重力の影響下にある。

c. 固定された支点に繋がる質量をもたない剛性の棒に吊るされた質点に、質量をもたない別の剛性の棒が繋がっていて、それに吊るされたもう1つの質点から成る、球形の複振り子。質点は一様な重力の影響下にある。

d. 湾曲した剛性のワイヤーの上を摩擦なしで滑る質点。

e. 一様な重力の影響下にあり、対称軸上の1点で固定された支点に接する、軸対称な剛体から成る独楽。

f. eと同様だが、軸対称ではないもの。

それぞれ

a) 6x3=18

b) 1

c) 2

d) 1

e) 1+1=2

f) 2+1=3

と思うのだけれどどうなんだろう

1.3 一般化座標 /Generalized Coordinates

| 04:51 | 1.3 一般化座標 /Generalized Coordinates - naoya_t@SICM(べ、べつにあなたのためじゃないんだからね) を含むブックマーク はてなブックマーク - 1.3 一般化座標 /Generalized Coordinates - naoya_t@SICM(べ、べつにあなたのためじゃないんだからね) 1.3 一般化座標 /Generalized Coordinates - naoya_t@SICM(べ、べつにあなたのためじゃないんだからね) のブックマークコメント

特定の配置について話ができるように、配置をラベリングする変数群(set of parameters)を持つ必要がある。系の配置を特定するのに使われる変数を「一般化座標(generalized coordinates)」と呼ぶ。制約されていない自由な粒子を考える。この粒子の配置は、その位置を与えることで特定される。そのためには3つの変数が必要となる。制約されていない粒子は自由度3をもつ。粒子の位置を特定する1つの方法は、何らかの座標軸を選び、それに対する直交座標を指定することである。位置の直行成分が、制約されていない粒子の一般化座標である。あるいは、理想的な平面複振り子を考える:固定点からの距離を剛性の棒によってある与えられた値に制約された質点があり、第2の質点がもう1本の剛性の棒によって最初の質点からの距離をある値に制約されていて、全てが鉛直面に閉じ込められている。配置は2本の棒の向きが与えられれば特定される。これには2つの変数が必要である;平面の複振り子は自由度2をもつ。各々の棒の向きを指定する一つの方法は、棒が鉛直方向に対して成す角度を指定することである。これらの2つの角度は、平面複振り子にとっての一般化座標である。


座標の数は、配置空間の次元数と同じである必要はない。少なくともその次元数だけは必要であるが。必要とされる以上の数の変数を使うことも選べるが、各変数は、可能な配置、即ち配置空間の各要素に系を制限している制約の影響下にある。

上述の平面複振り子にとって、2つの角座標は配置の特定に十分である。何らかの座標軸を選択し、平面上の各質点の直交座標をその座標軸に相対的にとることで一般化座標とすることも可能である。これも良い座標となるが、可能な配置を系の実際の幾何的配置に制限している制約にはっきりと留意しておかなければなるまい。配置空間と同じ次元をもつ座標集合は、座標間の明示的制約を処理しなくてもよいため扱いやすい。従って、当面は配置の座標数が自由度と等しいような定式化のみ考えることにしよう;冗長な座標と明示的制約をもつ系の扱い方は後で学ぶ。

一般に、配置はn次元の空間Mを形成する。n次元の配置空間は、配置空間の要素を実数のnタプルにマッピングする座標関数\chiを選択することでパラメータ化できる。次元が1次元以上あるなら、関数\chiはn個の独立した座標関数*3\chi^i,i=0,...,n-1から成るタプルである。ここで\chi^iは、配置空間のある範囲において定義された実関数である*4。配置空間 M 内において与えられた配置 m について、座標関数の値\chi^i(m)は配置の一般化座標である。一般化座標のおかげで、n次元の配置空間の点をnタプルの実数で特定することができる*5。任意の配置空間について、一般化座標を選ぶ方法は沢山ある。制約なしで動く単一の点についてさえ、直交座標、極座標、その他気に入った座標系を何でも選択可能である。

系の運動は、時刻を配置空間点にマッピングする配置経路によって記述することができる。配置経路に対応するのは、時刻を一般化座標のタプルにマッピングする座標経路(coordinate path)q=\chi\circ\gammaである。自由度が1以上あるなら、座標経路は構造化オブジェクトである:q は成分座標経路関数q^i=\chi^i\circ\gammaから成るタプルである。どの時刻tにおいても、関数q(t)=(q^0(t),...,q^{n-1}(t))は配置の一般化座標である。

座標経路qの微分Dqは、与えられた時刻における配置座標の変化率を与える関数*6である:Dq(t)=(Dq^0(t),...,Dq^{n-1}(t)) 一般化座標の変化率のことを「一般化速度(generalized velocity)」と言う。

我々は、経路のより高次の微分についても同様に座標表現を作ることができる。我々は座標表現を局所タプルにまで拡張する関数*7

\picture(12){(1,11){\line(11,0)}(1,7){\line(10,0)}(1,3){\line(10,0)}(11,1){\line(0,10)}(7,1){\line(0,10)}(3,1){\line(0,10)}} ("chart"と発音する)を導入する:

\picture(12){(1,11){\line(11,0)}(1,7){\line(10,0)}(1,3){\line(10,0)}(11,1){\line(0,10)}(7,1){\line(0,10)}(3,1){\line(0,10)}}_\chi(t,\gamma(t),\cal{D}\gamma(t),...)=(t,q(t),Dq(t),...)

ここでq=\chi\circ\gammaである。関数\picture(12){(1,11){\line(11,0)}(1,7){\line(10,0)}(1,3){\line(10,0)}(11,1){\line(0,10)}(7,1){\line(0,10)}(3,1){\line(0,10)}}_\chiは座標値に依存しない局所タプル (t,\gamma(t),\cal{D}\gamma(t),...)をとり、時刻、その時点における座標移動関数の値、必要な数だけの座標経路関数の高次微分、のタプルとして座標表現を与える。

座標経路q=\chi\circ\gammaが与えられれば、局所タプルの残り(の成分)はそこから算出できる。我々はこれを行う関数を導入する:

\Gamma\[q\](t)=(t,q(t),Dq(t),...)

関数\Gamma\[q\]は座標経路qとその(高次)微分のみに依存する;関数\Gamma\[q\]\chiに、あるいはqが\chi\gammaを合成して作られているという事実のみに依存している。式1.5と1.6の関係より

\Gamma\[q\]=\picture(12){(1,11){\line(11,0)}(1,7){\line(10,0)}(1,3){\line(10,0)}(11,1){\line(0,10)}(7,1){\line(0,10)}(3,1){\line(0,10)}}_\chi\circ\cal{T}\[\gamma\]

が言える。

問題1.3. 一般化座標 /Generalized coordinates

問題1.2の各系について、系の振る舞いを記述するのに使える系の一般化座標を指定せよ。

一般化座標におけるラグランジュ関数 /Lagrangians in generalized coordinates

作用(action)は、特定のラグランジュ関数\cal{L}の為の配置経路区間が持つ性質である。作用は、配置をラベリングするのに使われる座標系には依存しない。

この性質を用い、ラグランジュ関数\cal{L}の座標表現L_\chiを見出すことができる。

作用は

\cal{S}\[\gamma\](t_1,t_2)=\int_{t_1}^{t_2}\cal{L}\circ\cal{T}\[\gamma\]

ラグランジュ関数\cal{L}は 局所タプル\cal{T}\[\gamma\](t)=(t,\gamma(t),\cal{D}\gamma(t),...)関数である。局所タプルには座標表現\Gamma\[q\]=\picture(12){(1,11){\line(11,0)}(1,7){\line(10,0)}(1,3){\line(10,0)}(11,1){\line(0,10)}(7,1){\line(0,10)}(3,1){\line(0,10)}}_\chi\circ\cal{T}\[\gamma\]があり、ここでq=\chi\circ\gammaである。従って、もし*8

L_\chi=\cal{L}\circ\picture(12){(1,11){\line(11,0)}(1,7){\line(10,0)}(1,3){\line(10,0)}(11,1){\line(0,10)}(7,1){\line(0,10)}(3,1){\line(0,10)}}_\chi^{-1}

ならば*9

L_\chi\circ\Gamma\[q\]=\cal{L}\circ\cal{T}\[\gamma\]

である。

左辺には、座標表現の中間表現(intermediary)を用いる関数合成がある;右辺には、座標を含まない2関数の合成がある。作用の座標表現を次のように定義する。

S_\chi\[q\](t_1,t_2)=\int_{t_1}^{t_2}L_\chi\circ\Gamma\[q\]

関数S_\chiは座標経路をとる;関数\cal{S}は配置経路をとる。被積分関数は等式(1.10)により同じなので、その積分は同じ値となる:

\cal{S}\[\gamma\](t_1,t_2)=S_\chi\[\chi\circ\gamma\](t_1,t_2)

従って、任意の座標系において、ある経路に対し同じ作用を与えるラグランジュ関数の座標表現を構築する方法が存在する。

位置と速度のみに依存するラグランジュ関数については、作用は以下のようにも記述できる。

S_\chi\[q\](t_1,t_2)=\int_{t_1}^{t_2}L_\chi(t,q(t),Dq(t))dt

ラグランジュ関数や作用の定義に用いられる座標系は大抵一義的なため、添字は大抵落とされる。

*1:質量をもつが内部構造をもたない点粒子を質点(point mass)と言うことがよくある。

*2:厳密に言えば、the dimension of the configuration space and the number of degrees of freedom are not the same. The number of degrees of freedom is the dimension of the space of configurations that are "locally accessible." For systems with integrable constraints the two are the same. For systems with non-integrable constraints the configuration dimension can be larger than the number of degrees of freedom. For further explanation see the discussion of systems with non-integrable constraints in section 1.10.3. Apart from that discussion, all of the systems we consider have integrable constraints (they are "holonomic"). This is why we have chosen to blur the distinction between the number of degrees of freedom and the dimension of the configuration space.

*3:19

*4:20

*5:21

*6:22

*7:23

*8:24

*9:25

2009-01-03

Chapter 1 - ラグランジュ力学 / Lagrangian Mechanics

| 00:24 | Chapter 1 - ラグランジュ力学 / Lagrangian Mechanics - naoya_t@SICM(べ、べつにあなたのためじゃないんだからね) を含むブックマーク はてなブックマーク - Chapter 1 - ラグランジュ力学 / Lagrangian Mechanics - naoya_t@SICM(べ、べつにあなたのためじゃないんだからね) Chapter 1 - ラグランジュ力学 / Lagrangian Mechanics - naoya_t@SICM(べ、べつにあなたのためじゃないんだからね) のブックマークコメント

この本の主題は運動と、その記述に用いられる数学的な道具である。

何百年にもわたる天体運動の丁寧な観測がそれらの運動の規則性を明らかにし、蝕や合などの現象の精確な予測を可能にした。これらの規則性を定式化し、最終的にはそれを理解しようとする努力が数学の発展、そして数学が物理世界の様相の記述に効果的に利用できるということの発見へとつながった。数学が自然現象の記述に使えるというのは特質すべき事実である。

ジャグラーが投げたピンは、割と予測可能な経路をとり、割と予測可能な回り方で回転する。実際、ジャグリングのスキルはこの予測可能性に大きく依存する。天体の運動を記述するのに用いられる数学的な道具と同じものがジャグリングのピンの動きの記述に使えるというのも特筆すべき発見である。

古典力学では、粒子(particle)系の運動をそれらの相互作用を記述する力によって記述する。ジャグリングのピンのような複雑な物体は、堅固な相互作用力によって固定された空間的関係を維持している無数の粒子としてモデル化することができる。


実際には決して起こらないような系の運動はいくつも考えられる。ジャグリングピンが中空で留まったり、ジャグラーの手に落ちるまでに頭の回りを14周したりすることを想像することはできるが、これらの運動は実際には起こらない。

どうしたら実際に起こりうる運動と、考えられるが決して起こらない運動を区別できるだろうか?おそらく我々は、考えられるあらゆる運動の中から実現可能な運動を識別させてくれる何らかの数学関数を考案することができる。

系の運動は、系の各ピースの毎瞬の位置を与えることで記述可能であり、系の運動のそのような記述を「配置経路(configuration path)」と呼ぶ。配置経路は配置を時刻の関数として特定する。ジャグリングのピンは空中を飛行しながら回転する;ジャグリングピンの配置はピンの位置と向きを与えることで特定される。ジャグリングピンの運動は、ピンの位置と向きを時刻の関数として与えることで特定される。

「configuration」の意味するところは少し分かってきたけれど、自分の理解の助けとして訳語を付けるとしたらどんな訳語がふさわしいだろうか。

  • 配置 / 立体配置 / 空間配置
  • 配位
  • 姿勢

「配位」って化学用語?「配置」という語を使うのは若干違和感があるけどとりあえず「配置」としておく。

我々が探し求める関数は、何らかの配置経路を入力とし、何らかの出力を行う。この関数には、実現可能な経路が入力された場合に特徴的な振舞いを持たせたい。例えば、出力が数値であり、実現可能な経路の場合にのみこの数値がゼロになるように調整するとか。ニュートン運動方程式はこの形式だ;どの瞬間においてもニュートン微分方程式は必ず満たされる。

しかし、洞察とパワーをもっと与えてくれる別の戦略がある:実現可能な経路において最小値をとるような経路識別関数を探すとか -- 実現不可能な経路上では、その関数は実現可能な経路上よりも大きな値を返す。これは「変分的戦略(variational strategy;変分法?)」である:実現可能な経路それぞれに不動点をもつことで、系の運動の中で実現可能なものを識別することができる経路識別関数をそれぞれの物理系に対して考案する*1。多くの系において、その系における実現可能な経路は変分原理(variational principle)によって定式化可能である*2

ニュートンや彼と同世代の者たちによって考案された力学は、系の各粒子の位置、速度、加速度によって系の運動を記述する。ニュートン力学とは対照的に、変分力学(変分的な力学の定式化;variational formulation of mechanics)では、系の運動と関連する質量集合(aggregate quantities)全体によって系の運動を記述する。

ニュートン力学では、力は系のポテンシャルエネルギーの微分としてしばしば記述される。系の運動は、個々の構成分子がその力にどのように反応するかを考慮して決定される。ニュートン力学における運動方程式の定式化は、本質的には粒子単位の記述である。

変分力学では、運動方程式運動エネルギーポテンシャルエネルギーの差分によって定式化される。ポテンシャルエネルギーは系の中の粒子の配置の特性の数値である;運動エネルギーは系の中の粒子の速度によって決定される数値である。ポテンシャルエネルギーも運動エネルギーも、位置や速度の特定方法には依存しない。その違いは系全体の特性であり、系がどのように特定されるかには依存しない。

だから我々は系の記述方法を扱いやすいように自由に選ぶことができる;我々は、ニュートン力学に付いて回る粒子単位の記述から解法されたのである。

変分力学ニュートン力学と比較して数多くのアドバンテージを持っている。系の状態を記述するあるパラメータに対する運動方程式は、そのパラメータの選び方に関わらず同じように導き出される:定式化の方法は座標系の選択に依存しない。系の粒子同士の間に位置的な制約がある場合、ニュートン力学はそれらの制約を維持している力を検討するよう求めてくるが、一方変分的な定式化においては制約は座標の中に組み込むことができる。変分力学は、各保存則間の均整のとれた連繋を明らかにする。

変分力学は、系のどんな運動をも系のすべての可能な運動の文脈の中に置くことができる枠組みを提供する。これらの利点ゆえに我々は変分力学を追求する。

1.1 停留作用の原理 /The Principle of Stationary Action

| 01:35 | 1.1 停留作用の原理 /The Principle of Stationary Action - naoya_t@SICM(べ、べつにあなたのためじゃないんだからね) を含むブックマーク はてなブックマーク - 1.1 停留作用の原理 /The Principle of Stationary Action - naoya_t@SICM(べ、べつにあなたのためじゃないんだからね) 1.1 停留作用の原理 /The Principle of Stationary Action - naoya_t@SICM(べ、べつにあなたのためじゃないんだからね) のブックマークコメント

どの物理系にも、実現可能な経路上では静止する経路識別関数があると仮定しよう。その性質のいくつかをこれから推論していくことにする。

運動に関する見識 /Experience of motion

我々の日常的な経験から、以下のことが示唆される:

  • 物理運動は連続かつ滑らかな配置経路で記述可能である*3ジャグリングピンがある位置から別の位置へジャンプするのを見ることはない。ジャグリングピンが運動の向きを突然変えることもない。
  • 物理系の運動は系の履歴全体に依存するものではない。ジャグリングピンが宙に投げられた後に部屋に入れば、そのピンがジャグラーの手を離れたのがいつかは分からない。我々がドアから入った時点で結果として同じように見える投げ位置や時刻がいくつもある*4。従ってピンの運動はその履歴に依存しない。
  • 物理系の運動は決定論的である。事実、少数のパラメータが系履歴の重要な様相(aspect)を要約し、その未来の展開を決定する。例えば、ジャグリングピンのいかなる瞬間の位置、速度、向き、向きの変化率をとってみても未来のピンの運動を完全に決定することができる。

実現可能な経路 / Realizable paths

運動についての我々の経験から、実現可能な配置経路について我々はいくらか期待をふくらませる。経路が実現可能ならば、その経路のどの区間をとっても実現可能な経路区間(realizable path segment)である。 逆に言えば、もし経路のすべての区間が実現可能な経路区間であればその経路は実現可能である。

経路区間の実現可能性は、その区間内のすべての経路上の点に依存する。/* 経路区間の実現可能性は、同様に経路区間上のすべての点に依存する;経路のどの部分も例外ではない。*/ 経路区間の実現可能性は、経路区間内の点のみに依存する;経路区間の実現可能性は局所的な属性(property)である。

従って経路識別関数は、経路区間に沿って各瞬間に測られるいくつかの系の局所的属性値を集約する。経路に沿った各瞬間は差別なく扱われなければならない。経路区間に沿った各瞬間の寄与は、非同一(disjoint)な副区間からの寄与からの独立を維持しながら統合されなければならない(?)。経路のいくつかの局所的属性値の、その経路区間における積分として経路識別関数を作成するのが、これらの要求を満たす統合方法のひとつである*5

従って、経路に沿った局所的属性値の積分として構築される経路識別関数が、実現可能などんな経路に対しても極値をとるように調整を試みたい。そのような経路識別関数は伝統的に、系への作用(action for the system)と呼ばれる。この「作用(action)」という用語を我々は一般的な用法との一貫性をもたせて使う。おそらく「経路識別関数」と呼び続けるほうがより明確であろうが、他の者たちには我々が何を話しているのか分かりにくくなるであろう*6

変分力学アジェンダを辿っていくにあたり、我々は調べている系の実現可能な軌道上で定常値になる作用関数を考案しなければならない。各瞬間における配置経路のいくつかの局所的属性値の積分である作用についてこれから検討していく。γを配置経路関数とする;γ(t) は時刻 t における配置である。時刻t_1からt_2の間の経路区間の作用は*7

S\[\gamma\](t_1,t_2)=\int_{t_1}^{t_2}\cal{F}\[\gamma\]

ここで\cal{F}\[\gamma\]は、経路のいくつかの局所的属性値を計る時刻の関数である。この関数はその時刻における関数γの値と、その時刻におけるγの微分に依存する*8

  • path : 通り道、通路、経路、軌道、進路
  • trajectory : 軌道、曲線、弧、弾道、軌跡

ある瞬間の配置経路は、配置、配置変化率、与えられた瞬間における配置のすべての高次微分によって局所的に記述可能である。これらの情報があれば、その瞬間を含むいくらかの時間的区間において経路は再構築可能である*9。経路の局所的属性値がその経路の局所的な記述以外のものに依存することはない。

関数\cal{F}は配置経路γのいくつかの局所的属性値を測る。

\cal{F}\[\gamma\]は2つに分解できる:片方は局所的記述のいくつかの属性値を測り、もう片方は経路関数から経路の局所的記述を抽出する。系の局所的属性値を測る関数は、特定の物理系に依存する;ある経路から経路の局所的記述を構築する方法は、どの系においても同じである。我々は\cal{F}\[\gamma\]をこれらの2関数の合成:*10

\cal{F}\[\gamma\]=\cal{L}\circ\cal{T}\[\gamma\]

として書くことができる:

関数\cal{T}は、経路をとり、時刻、その時刻における配置、その時刻における配置変化率、その時刻において評価された経路の高次微分値を並べたタプルを返す時刻の関数を返す。経路γと時刻tについて:*11

\cal{T}\[\gamma\](t)=(t,\gamma(t),\cal{D}\gamma(t),...)

必要なだけの微分を含んだこのタプルは以後「局所タプル(local tuple)」と呼ぶ。

関数\cal{L}は調査中の物理系の特定の詳細に依存するが、特定の配置経路に依存することはない。関数\cal{L}は、経路の局所的属性値(実数)を算出する。この属性値を計算するために\cal{L}は局所タプルの有限個の成分しか必要としないことがわかるだろう:経路は、完全な局所的記述から局所的に再構築することができる;\cal{L}が局所タプルの有限個の成分に依存するということは、これが局所的属性値を測っていることを保証している*12

この分解の利点は、経路の局所的記述が検討中の系には依存せず一様なプロセスで計算されることである。系に特有の情報は関数\cal{L}に捕捉される。

関数\cal{L}を系の「ラグランジュ関数(Lagrangian)*13」と呼び、結果の作用

S\[\gamma\](t_1,t_2)=\int_{t_1}^{t_2}\cal{L}\circ\cal{T}\[\gamma\]

を「ラグランジュ作用(Lagrangian action;;作用積分?)」と呼ぶ。ラグランジュ関数は非常に多くの系において見出すことができる。運動エネルギーポテンシャルエネルギーの差になるようにラグランジュ関数を取ることができる事をこれから見ていく。そのようなラグランジュ関数は、時刻と配置と配置変化率のみに依存する。我々はこの系のクラス(class of systems)に焦点をあてていくが、時々より一般的な系についても考察していく。

系の実現可能な経路は、隣接する一連の実現不可能な経路に対して停留作用(stationary action)を持つことにより他の(実現可能でない)経路と区別されることになる。さて、実現可能な経路の近くにあるいくつかの経路もまた実現可能である:ジャグリングピンのいかなる運動についても、ほんの少し異なる別の運動が存在する。従って、経路の変種に対して作用が停留かどうかという質問をする際には、検討する経路群に実現可能な経路が1本だけ含まれるようなんらかの方法で制限しなくてはならない。配置と配置変化率のみに依存するラグランジュ関数にとって、経路区間の両端において同じ配置をもつよう経路群を制限するだけで十分である。

停留作用の原理(The principle of stationary action)*14は、時刻t1およびt2において配置が接続する実現可能な一経路が作用S\[\gamma\](t_1,t_2)が経路の変種について停留(stationary)であるという事実によって他の考えうるあらゆる経路と区別されるようなラグランジュ関数を個々の力学系(dynamical system)において作成できると表明する。配置と配置変化率のみに依存するラグランジュ関数にとって、変種はt_1,t_2において配置を保存するものに制限される*15

問題1.1 フェルマー光学原理 / Fermat optics

フェルマーは反射・屈折の法則が以下の事実によって説明されうることを観測した:光はいかなる媒体においても媒体に依存する速度をもって直線を描いて進む。どのような順に媒体を通過しようが、光線がとる光源から到達点への経路は、隣接する経路と比較して最短時間の経路をとる。これらの事実が反射・屈折の法則を暗示していることを示せ*16

*1関数不動点(stationary point)とは、入力値が変化してもその関数の値が変化しない点のことである。極大/極小(local maxima/minima)は不動点である。

*2:The variational formulation successfully describes all of the Newtonian mechanics of particles and rigid bodies. The variational formulation has also been usefully applied in the description of many other systems such as classical electrodynamics, the dynamics of inviscid fluids, and the design of mechanisms such as four-bar linkages. In addition, modern formulations of quantum mechanics and quantum field theory build on many of the same concepts. However, it appears that not all dynamical systems have a variational formulation. For example, there is no simple prescription to apply the variational apparatus to systems with dissipation, though in special cases variational methods can still be used.

*3:Experience with systems on an atomic scale suggests that at this scale systems do not travel along well defined configuration paths. To describe the evolution of systems on the atomic scale we employ quantum mechanics. Here, we restrict attention to systems for which the motion is well described by a smooth configuration path.

*4:Extrapolation of the orbit of the Moon backward in time cannot determine the point at which it was placed on this trajectory. To determine the origin of the Moon we must supplement dynamical evidence with other physical evidence such as chemical compositions.

*5:We suspect that this argument can be promoted to a precise constraint on the possible ways of making this path-distinguishing function.

*6:Historically, Huygens was the first to use the term "action" in mechanics, referring to "the effect of a motion." This is an idea that came from the Greeks. In his manuscript "Dynamica" (1690) Leibniz enunciated a "Least Action Principle" using the "harmless action," which was the product of mass, velocity, and the distance of the motion. Leibniz also spoke of a "violent action" in the case where things collided.

*7:A definite integral of a real-valued function f of a real argument is written \int_a^b f. This can also be written \int_a^b f(x) dx. The first notation emphasizes that a function is being integrated.

*8:Traditionally, square brackets are put around functional arguments. In this case, the square brackets remind us that the value of \cal{S} may depend on the function \gamma in complicated ways, such as through its derivatives.

*9:In the case of a real-valued function, the value of the function and its derivatives at some point can be used to construct a power series. For sufficiently nice functions (real analytic), the power series constructed in this way converges in some interval containing the point. Not all functions can be locally represented in this way. For example, the function f(x) = exp( - 1/x2), with f(0) = 0, is zero and has all derivatives zero at x = 0, but this infinite number of derivatives is insufficient to determine the function value at any other point.

*10:ここで o は関数の合成: (f \circ g)(t) = f(g(t) ) を意味する。我々の記法では、経路依存関数のその経路への適用は合成より優先順位が高いので、\cal{L}\circ\cal{T}\[\gamma\]=\cal{L}\circ(\cal{T}\[\gamma\])である。

*11:The derivative \cal{D}\gamma of a configuration path \gamma can be defined in terms of ordinary derivatives by specifying how it acts on sufficiently smooth real-valued functions f of configurations. The exact definition is unimportant at this stage. If you are curious see footnote #23.

*12:We will later discover that an initial segment of the local tuple is sufficient to determine the future evolution of the system. That a configuration and a finite number of derivatives determine the future means that there is a way of determining all of the rest of the derivatives of the path from the initial segment.

*13:The classical Lagrangian plays a fundamental role in the path-integral formulation of quantum mechanics (due to Dirac and Feynman), where the complex exponential of the classical action yields the relative probability amplitude for a path. The Lagrangian is the starting point for the Hamiltonian formulation of mechanics (discussed in chapter 3), which is also essential in the Schrödinger and Heisenberg formulations of quantum mechanics and in the Boltzmann-Gibbs approach to statistical mechanics.

*14:The principle is often called the "principle of least action" because its initial formulations spoke in terms of the action being minimized rather than the more general case of taking on a stationary value. The term "principle of least action" is also commonly used to refer to a result, due to Maupertuis, Euler, and Lagrange, which says that free particles move along paths for which the integral of the kinetic energy is minimized among all paths with the given endpoints. Correspondingly, the term "action" is sometimes used to refer specifically to the integral of the kinetic energy. (Actually, Euler and Lagrange used the vis viva, or twice the kinetic energy.)

*15:Other ways of stating the principle of stationary action make it sound teleological and mysterious. For instance, one could imagine that the system considers all possible paths from its initial configuration to its final configuration and then chooses the one with the smallest action. Indeed, the underlying vision of a purposeful, economical, and rational universe played no small part in the philosophical considerations that accompanied the initial development of mechanics. The earliest action principle that remains part of modern physics is Fermat's principle, which states that the path traveled by a light ray between two points is the path that takes the least amount of time. Fermat formulated this principle around 1660 and used it to derive the laws of reflection and refraction. Motivated by this, the French mathematician and astronomer Pierre-Louis Moreau de Maupertuis enunciated the principle of least action as a grand unifying principle in physics. In his Essai de cosmologie (1750) Maupertuis appealed to this principle of ``economy in nature'' as evidence of the existence of God, asserting that it demonstrated ``God's intention to regulate physical phenomena by a general principle of the highest perfection.'' For a historical perspective on Maupertuis's, Euler's, and Lagrange's roles in the formulation of the principle of least action, see [28].

*16:反射において、入射角は反射角に等しい。屈折はスネルの法則で記述される: 光がある媒体から他の媒体へ通過する際、接触面の法線と光がなす角度の正弦の比率は媒体の屈折率の逆数である。屈折率は真空中の光速度の媒体中の光速度に対する比率である。

2009-01-02

Chapter 8 - Appendix: 記法についての解説 / Our Notation

| 22:00 | Chapter 8 - Appendix: 記法についての解説 / Our Notation - naoya_t@SICM(べ、べつにあなたのためじゃないんだからね) を含むブックマーク はてなブックマーク - Chapter 8 - Appendix: 記法についての解説 / Our Notation - naoya_t@SICM(べ、べつにあなたのためじゃないんだからね) Chapter 8 - Appendix: 記法についての解説 / Our Notation - naoya_t@SICM(べ、べつにあなたのためじゃないんだからね) のブックマークコメント

1章に入る前に、記法についての解説(8章Appendix)にちゃんと目を通しておこうと思う。

我々は、SpivakがCalculus on Manifoldsにおいて用いた記法に近い関数的な数学記法を採用する。

関数記法を使うことで従来の数学記法にあるあいまいさの多くを回避することができる;従来記法のあいまいさは古典力学におけるクリアな推論の妨げになる。関数記法は、特定の引数に適用する際に関数とその関数の値とを丁寧に区別する。関数記法では数式は一義的であり、自己完結している。


我々は、加算・乗算のような基本的な算術演算を多種多様な数学的な型に拡張したジェネリックな算術を採用する。従って例えば加算演算子 + は数値、数値タプル、行列、関数etc.に適用することができる。ジェネリックな算術は 数学オブジェクトの操作に使われるcommon informal practiceを形式化する。


分子群の全直交座標、のようなaggregate quantitiesを、component partsを明示的に操作したりすることなく

操作したくなることが時々ある。テンソル算術はaggregate objectの従来の操作法を提供してくれる:添字がpartsをラベルする;和の規約(summation convention)のような規約が添字操作のために導入される。

我々は、aggregate quantitiesの操作のための代替的手段として、添字でpartsをラベリングしなくてもよいタプル算術を導入する。タプル算術はテンソル算術にインスパイアされたものだがより一般的である:タプルの各コンポーネントのサイズや型が全て同じである必要がない。


数学記法コンピュータ言語 Scheme の式と1対1で対応する。Schemeはλ算術に基づいており、関数の操作を直接的にサポートしている。Schemeの簡易なイントロダクションがAppendixにあるので見るとよい。

数学記法Schemeとの対応関係は、数式が一義的かつ自己完結してることを要求する。Scheme数学演繹(推論)の確認において即時的フィードバックを提供するとともに、系(system)の挙動の調査を手助けしてくれる。

関数 / Functions

関数 f に引数 x を与えた値は f(x) と書かれる。式 f(x) は与えられた引数 x における関数の値を表す;関数そのものを表したい場合には単に f と書く。関数は複数の引数をとりうる。例えば、与えられた平面上の2点の直交座標から2点間のユークリッド距離を求める関数を考えてみよう:

d(x_1,y_1,x_2,y_2)=\sqrt{(x_2-x_1)^2+(y_2-y_1)^2}


Schemeではこう書ける:

(define (d x1 y1 x2 y2)
  (sqrt (+ (square (- x2 x1)) (square (- y2 y1)))))

ある関数の値域が別の関数の定義域に重なる場合、その2関数は合成することができる。関数の合成は、ある関数の出力を別の関数の入力に渡すことで構築される。我々は2関数の合成を演算子 o を用いて

(f\circ g):x\mapsto(f\circ g)(x)=f(g(x))

のように記す。


与えられた引数正弦(sin)の三乗(cube)を計算する手続き h は、cube手続きとsin手続きを合成することで定義できる:

(define h (compose cube sin))

(h 2)
→ .7518269446689928

これは以下と同等である:

(cube (sin 2))
→ .7518269446689928

算術は関数の操作にまで拡張される:通常の数学演算関数にも適用できる。

例として加算や乗算がある;ある2つの関数が同種の引数をとり、かつ値が加算(もしくは乗算)可能な場合、それらの関数を足したり掛け合わせたりすることが可能である:

(f+g)(x)=f(x)+g(x),

(fg)(x)=f(x)g(x)

引数の三乗(cube)を 引数正弦(sin)と掛け合わせる手続き g は以下のようになる:

(define g (* cube sin))

(g 2)
→ 7.274379414605454

(* (cube 2) (sin 2))
→ 7.274379414605454

(* 手続き 手続き) みたいなのは元のSchemeにはないよね。

Symbolic values

未知の、あるいは不完全に特定された数学オブジェクトを表す記号の使用を従来の数学記法におけるのと同様に許すよう算術を拡張する。これらの記号はあたかも既知の型の値をもっているかのように操作される。デフォルトではSchemeの記号は実数値を表すものと見なされる。従って式 'a は不特定の実数値を表すSchemeの記号リテラルである:

(print-expression
 ((compose cube sin) 'a))
→ (expt (sin a) 3)

print-expression手続きは式を簡略化し、型タグを除去し、可読な形式で表示する。三角恒等式(trigonometric identity*1 )の検証にsimplifierを使うことができる:

(print-expression 
  ((- (+ (square sin) (square cos)) 1) 'a))
→ 0

symbolic numbersが操作可能だと便利なのと同様、symbolic functionが操作可能だと便利だ。

literal-function手続きは、自身の名前以外のプロパティを持たない関数として振る舞う手続きを作る。

デフォルトでは、リテラル関数は実引数を1つ取り実数値を1つ返すよう定義される。例えば、関数 f : R → R を使いたいとしよう:

(print-expression 
  ((literal-function 'f) 'x))
→ (f x)

(print-expression 
  ((compose (literal-function 'f) (literal-function 'g)) 'x))
→ (f (g x))

構造化引数を複数とり構造化値を返すリテラル関数も作ることができる。例えば実引数を2つ取り実数値を1つ返すリテラル関数 g (g : R × R → R) を表すにはこう書けばよい:

(define g (literal-function 'g (-> (X Real Real) Real)))

(print-expression (g 'x 'y))
→ (g x y)

このようなリテラル関数は、同じ型の明示的な関数が使える場所であればどこでも使用可能である。


引数の数や型、返り値の型などの事を考えると、リテラル関数の型の記述はかなり長くなる。2つの実数値を実数値にマッピングする関数の型は (-> (X Real Real) Real) と記述される。後ほど、構造化された引数や返り値を導入する際にそれらを扱うリテラル関数の拡張について説明しよう。

なんかHaskellみたいになってきた。面白そう。

タプル / Tuples

タプルにはアップ・タプルとダウン・タプルの2種類がある。タプルはその成分を順に並べたリストとして記述する:アップタプルは括弧で、ダウンタプルは角括弧で区切られる。例えば、速度成分 v0, v1, v2 から成るアップタプル v は

v=(v^0,v^1,v^2)

モーメント成分 p0, p1, p2 から成るダウンタプル p は

p=\[p_0,p_1,p_2\]

となる。


アップタプルの成分は通常、上付き文字で指定される。ダウンタプルの成分は通常下付き文字で指定される。

我々はタプルの要素を参照する際、0ベースのインデックスを用いる。この記法テンソル算術における従来の規約に追随したものである。


Schemeでは、コンストラクタ up, down を用いてタプルを作る:

(define v (up 'v^0 'v^1 'v^2))

(print-expression v)
→ (up v^0 v^1 v^2)

(define p (down 'p_0 'p_1 'p_2))

(print-expression p)
→ (down p_0 p_1 p_2)

(up v^0 v^1 v^2) は #(v^0 v^1 v^2)、(down p_0 p_1 p_2) は (*down* (p_0 p_1 p_2)) のように表現されていた。

タプル算術は、タプルの成分がタプルでもよい点、異なるタプルが同じ構造をもっている必要がない点において従来のテンソル算術とは異なる。例えば、位相空間状態(phase-space states)のタプル構造 s は

s=(t,(x,y),\[p_x,p_y\])

と表せる。

これは時刻、座標、モーメントのアップタプルである。時刻tは下部構造をもたない。座標は座標成分x,yのアップタプルである。モーメントはモーメント成分px,pyのダウンタプルである。Schemeでは

(define s (up 't (up 'x 'y) (down 'p_x 'p_y)))

のように記述する。


タプル構造の成分を参照するために、セレクタ関数が用意されている。例えば:

I(s)=s

I_0(s)=t

I_1(s)=(x,y)

I_2(s)=\[p_x,p_y\]

I_{1,0}(s)=x

...

I_{2,1}(s)=p_y


セレクタの下付きの整数列は、意図した成分へのアクセスチェーンを記述する。


component手続きは、セレクタ関数I_zを実装した一般的なセレクタ手続きである:

((component 0 1) (up (up 'a 'b) (up 'c 'd)))
→ b

タプルの成分へのアクセスには、タプルと添字1つを取り、タプルの指し示された要素を返すセレクタ手続き ref を使うこともできる:

(ref (up 'a 'b 'c) 1)
→ b

どこでも0ベースの添字が用いられる。ref手続きはタプルツリーのいかなる下部構造へのアクセスにも使用できる:

(ref (up (up 'a 'b) (up 'c 'd)) 0 1)
→ b

同じ長さの2つのアップタプルは、成分が加算可能な互換性をもっていれば要素毎に加算・減算して1つのアップタプルを作ることができる。同様に、同じ長さの2つのダウンタプルは、成分が加算可能な互換性をもっていれば要素毎に加算・減算して1つのダウンタプルを作ることができる。


任意のタプルに対し数値を乗算することができる。各成分にその数を掛ければよい。数値はもちろん乗算可能である。加算に対し互換性をもつタプルはベクトル空間を生成する。


便宜のために、タプルの二乗はタプルの各成分の二乗の和として定義する。タプルは後述のように乗算対象になりうるが、タプルの二乗はタプルとそれ自身との積ではない。


タプルの積が意味するところはタプルの構造に依存する。2つのタプルが逆の型の同じ長さのタプルであり、対応する要素が両方ともタプルであり縮合可能であるか、あるいは一方がタプルでない場合、これらのタプルは縮合可能である(compatible for contraction)という。

2つのタプルが縮合可能ならば、ジェネリックな乗算は縮合として解釈される:結果は両タプルの対応する成分同士の積の和である。例えば、前述の等式(8.4)および(8.5)にて導入された p と v は縮合可能であり、その積は

pv=p_0v^0+p_1v^1+p_2v^2

である。

従って、縮合可能なタプルの積は内積である。前に定義したタプル p と v を用いるなら

(print-expression (* p v))
→(+ (* p_0 v^0) (* p_1 v^1) (* p_2 v^2))

タプルの縮合(contraction)は可換(commutative)である。即ち pv = vp となる。注意:縮合可能なタプル同士の乗算は、一般に、結合則が成り立たない(not associative)。

例えば u=(5,2),v=(11,13),g=\[ \[3,5\],\[7,9\] \] とすると、このとき u(g v)=964 だが (u g)v=878である。式 u g v は一義ではない。こうした多義性をもつ式がこの本に現れることはない。


縮合可能でない2つの構造の乗算則は単純である。AとBが縮合可能ではないなら、積ABはAをBの各成分に掛けた積を成分とする、Bの型のタプルとなる。成分同士の積にもこの規則が再帰的に適用される。従って、B=(B^0,B^1,B^2)ならAとBの積は

AB=(AB^0,AB^1,AB^2)

である。

AとCが縮合可能ではなく、C=\[C_0,C_1,C_2\] ならばその積は

AC=\[AC_0,AC_1,AC_2\]

となる。

一次(線形)変換を表現するためにタプル構造が作られることがある。例えば、通常は行列で表現される回転

\left\[\begin{array}{cc}cos\theta&-sin\theta\\sin\theta&cos\theta\end{array}\right\]

はタプル構造によって

\left\[\left(\begin{array}{c}cos\theta\\sin\theta\\\end{array}\right)\left(\begin{array}{c}-sin\theta\\cos\theta\\\end{array}\right)\right\]

のように表現することができる。

このようなタプルはベクトルを表すアップタプルと縮合可能である。だから例えば

\left\[\left(\begin{array}{c}cos\theta\\sin\theta\\\end{array}\right)\left(\begin{array}{c}-sin\theta\\cos\theta\\\end{array}\right)\right\]\left(\begin{array}{c}x\\y\\\end{array}\right)=\left(\begin{array}{c}x cos\theta-y sin\theta\\x sin\theta+y cos\theta\\\end{array}\right)

線形変換を表現する2つのタプルは、縮合可能ではないが、積によって合成することも可能である。この場合、その積は線形変換の合成を表す。例えば、2つの回転を表すタプルの積は

\left\[\left(\begin{array}{c}cos\theta\\sin\theta\\\end{array}\right)\left(\begin{array}{c}-sin\theta\\cos\theta\\\end{array}\right)\right\]\left\[\left(\begin{array}{c}cos\varphi\\sin\varphi\\\end{array}\right)\left(\begin{array}{c}-sin\varphi\\cos\varphi\\\end{array}\right)\right\]=\left\[\left(\begin{array}{c}cos(\theta+\varphi)\\sin(\theta+\varphi)\\\end{array}\right)\left(\begin{array}{c}-sin(\theta+\varphi)\\cos(\theta+\varphi)\\\end{array}\right)\right\]

となる。

変換の合成で結合則が成り立つが交換則が成り立たないように、線形変換を表すタプル同士の積は結合則が成り立つが一般に交換則は成り立たない。

微分 / Derivatives

関数 f の微分関数であり、Df で表される。D は優先順位の高い演算子であるというのが我々の記法規約である。従って D は 隣りの関数に対し他の関数適用より前に影響をもつので、Df(x)(Df)(x) と同等である。高次微分は、微分演算子を累乗することで記述される。従って関数 f の n回微分D^n f のように表記される。


関数微分を生成するScheme手続きは D という名前である。sin手続きの微分はcosを計算する手続きである:

(define derivative-of-sine (D sin))

(print-expression (derivative-of-sine 'x))
→ (cos x)

関数 f の微分関数 Df である。ある引数におけるその値に引数の増分Δxを掛けることで、fの値における増分の一次近似を得ることができる:

f(x+\Delta x)\approx f(x)+Df(x)\Delta x


例えば、fを引数を三乗する関数 (f(x)=x^3) だとしよう。 このとき Df引数の二乗の3倍を生成する関数 (Df(y)=3y^2) である。従って f(5)=125, Df(5)=75である。引数 x+\Delta x に対する f の値は

f(x+\Delta x)=(x+\Delta x)^3=x^3+3x^2\Delta x+3x\Delta x^2+\Delta x^3

また

Df(x)\Delta x=3x^2\Delta x

である。


従って Df(x)をΔx倍したものは f(x+\Delta x) のΔxにおける一次の項の係数となり、Δxが小さい場合にはf(x+\Delta x)-f(x)のよい近似値となる。


合成関数微分は連鎖法則(chain rule)に従う:

D(f\circ g)=((Df)\circ g)\cdot D

従って、x において

(D(f\circ g))(x)=Df(g(x))\cdot Dg(x)

である。


微分演算子である。関数同士の乗算が関数の返り値同士の乗算である(式8.3参照)一方で演算同士の乗算が(関数の)合成として解釈される点を覗けば、演算子関数である。D がもしも通常の関数であるなら、乗算則はD^2 fDfをそれ自身の積になることを示唆するところだが、それは意図されるものとは異なる。算術は演算子同士の乗算を許すよう拡張される。典型的な演算子(D+1)(D-1)=D^2-1 で、ここでは関数の2回微分から関数そのものを減じている。1 は identity 演算子として振る舞う;算術的に演算子と合成された場合、数値は入力にその値を乗じた数を返す演算子として扱われる。このような演算子Schemeでは以下のように構築される:

(print-expression
  (((* (- D 1) (+ D 1)) (literal-function 'f)) 'x))
→ (+ (((expt D 2) f) x) (* -1 (f x)))

変数関数微分 / Derivatives of functions of multiple arguments

  • "The derivative generalizes to functions that take multiple arguments. The derivative of a real-valued function of multiple arguments is an object whose contraction with the tuple of increments in the arguments gives a linear approximation to the increment in the function's value."

微分は複数の引数をとる関数にまで一般化される。多引数をとる実関数微分は、引数の増分のタプルと縮合すると関数値の増分への一次近似になるようなオブジェクトとなる。


引数関数は、引数をアップタプルにしたものについての関数と考えることができる。従って増分引数タプルは引数1つ1つを成分とするアップタプルである。そのような関数微分は 各引数の位置に応じた偏微分のダウンタプルである。


2つの実値引数をとる実関数 g があって、x,y における g の返り値の増分を近似したいとしよう。引数がタプル (Δx, Δy) だけ増加するなら

Dg(x,y)\cdot(\Delta x,\Delta y)=\[\partial_0g(x,y),\partial_1g(x,y)\]\cdot(\Delta x,\Delta y)\\=\partial_0g(x,y)\Delta x+\partial_1g(x,y)\Delta y


前に定義された2引数リテラル関数 g を用いて

(print-expression ((D g) 'x 'y))
→ (down (((partial 0) g) x y) (((partial 1) g) x y))

一般に偏微分とは、複数の引数(あるいは構造化された引数、もしくはその両方。後述。)をとる関数微分の成分にすぎない。従って、ある関数の偏微分は、成分セレクタとその関数微分を合成したものである。事実、

\partial_0g=I_0\circ Dg

\partial_1g=I_1\circ Dg

である。

具体的には、もし

g(x,y)=x^3y^5

ならば

Dg(x,y)=\[3x^2y^5,5x^3y^4\]

であり、xとyにおける引数の変化の増分の1次近似は

g(x+\Delta x,y+\Delta y)-g(x,y)\approx \[3x^2y^5,5x^3y^4\]\cdot(\Delta x,\Delta y)

=3x^2y^5\Delta x+5x^3y^4\Delta y

となる。

合成関数の偏微分も連鎖法則(chain rule)に従う:

\partial_i(f\circ g)=((Df)\circ g)\cdot\partial_ig

従って、xが引数タプルであれば

(\partial_i(f\circ g))(x)=Df(g(x))\cdot\partial_ig(x)

となる。


数学記法は普通複数の引数をとる関数と、引数タプルをとる関数を区別しない。h((x,y))=g(x,y)としよう。関数hは引数x,yのタプルをとるが、これは引数x,yをとる関数gと区別されない。我々は複数の引数をとる関数を定義するのにどちらの方法も用いる。

  • "The derivatives of both kinds of functions are compatible for contraction with a tuple of increments to the arguments."

どちらの種類の関数引数への増分タプルに対し縮合可能である。

Schemeはこういう時に便利である:

(define (h s)
  (g (ref s 0) (ref s 1)))

(print-expression
 (h (up 'x 'y)))
→ (g x y)

(print-expression ((D g) 'x 'y))
→ (down (((partial 0) g) x y) (((partial 1) g) x y))

(print-expression ((D h) (up 'x 'y)))
→ (down (((partial 0) g) x y) (((partial 1) g) x y))

位相空間状態の関数は、時刻と座標とモーメントの関数である。Hをそのような関数だとしよう。時刻t,座標(x,y),モーメント \[p_x,p_y\] におけるHの値はH(t,(x,y),\[p_x,p_y\])である。sを式(8.6)にあるような位相空間状態とすると:

s=(t,(x,y),\[p_x,p_y\])


引数タプルsにおけるHの値はH(s)である。Hの値について書く際に我々はどちらの方法も用いる。


セミコロンで引数タプルの境界を示し、タプル成分をコンマで区切ることによって、タプルを含む複数の引数をとる関数を提示することがある。Hが引数t,(x,y),\[p_x,p_y\]をとる位相空間状態の関数であるとすると、H(t;x,y;p_x,p_y) のように書かれるかもしれない。この記法だとアップ/ダウンの区別を失うが、我々のセミコロンとコンマによる記法は便利だし、リーズナブルに一義的である。


Hの微分は、引数構造における増分と縮合されることで関数値における増分を生み出すことができるオブジェクトを作る関数である。この微分は3つの偏微分から成るダウンタプルである。最初の偏微分は数値引数に関する偏微分である。2番目の偏微分はアップタプル引数の各成分に関する偏微分を成分とするダウンタプルである。3番目の偏微分はダウンタプル引数の各成分に関する偏微分を成分とするアップタプルである:

DH(s)=\[\partial_0H(s),\partial_1H(s),\partial_2H(s)\]

=\[\partial_0H(s),\[\partial_{1,0}H(s),\partial_{1,1}H(s)\],(\partial_{2,0}H(s),\partial_{2,1}H(s))\]


ここで\partial_{1,0}は第二引数(添字1)の第1成分(添字0)に関する偏微分であることを表している。以下同様。実際、任意の関数Fおよびアクセスチェーンzについて \partial_zF=I_z\circ D F である。従って、Δsを位相空間状態の増分タプル

\Delta s=(\Delta t,(\Delta x,\Delta y),\[\Delta p_x,\Delta p_y\])


とするなら

DH(s)\Delta s=\partial_0H(s)\Delta t

+\partial_{1,0}H(s)\Delta x+\partial_{1,1}H(s)\Delta y

+\partial_{2,0}H(s)\Delta p_x+\partial_{2,1}H(s)\Delta p_y


注意:異なる構造をした引数に関する偏微分演算子は一般に可換ではない。


Schemeで(書くときに)は、明示的な選択をしなければならない。たいてい位相空間状態関数はタプルの関数であると想定する。例えば

(define H
  (literal-function 'H 
    (-> (UP Real (UP Real Real) (DOWN Real Real)) Real)))

(print-expression
 (H s))
→ (H (up t (up x y) (down p_x p_y)))

(print-expression
 ((D H) s))
→ (down
 (((partial 0) H) (up t (up x y) (down p_x p_y)))
 (down (((partial 1 0) H) (up t (up x y) (down p_x p_y)))
       (((partial 1 1) H) (up t (up x y) (down p_x p_y))))
 (up (((partial 2 0) H) (up t (up x y) (down p_x p_y)))
     (((partial 2 1) H) (up t (up x y) (down p_x p_y)))))

Structured results

関数のなかには構造化された出力をするものもある。出力がタプルな関数は、それぞれが出力タプルの1成分を生成する関数を成分として持つタプルと等価である。


例えば、数値引数を1つ取り構造化された出力を行う関数が空間内の曲線を描写するのに使われることがある。以下の関数三次元空間のz軸の回りを回る螺旋状の経路を描写する:

h(t)=(cos t,sin t, t)=(cos,sin,I)(t)

その微分関数の各成分の微分のアップタプルにすぎない:

Dh(t)=(-sin t,cos t,1)

Schemeではこう書くか、

(define (helix t)
  (up (cos t) (sin t) t))

あるいは単に

(define helix (up cos sin identity))

でよい。


その微分関数の各成分の微分のアップタプルにすぎないので:

(print-expression ((D helix) 't))
→ (up (* -1 (sin t)) (cos t) 1)

一般に構造化された出力をする関数は単に成分1つ1つが関数である構造体として扱われる。

構造化された入力をとり構造化された出力をする関数微分は、入力構造体の増分と縮合したときに、出力の増分への一次近似が出るオブジェクトである。だから、もし関数gを〜のように定義するなら、

g(x,y)=((x+y)^2,(y-x)^3,e^{x+y})

gの微分

Dg(x,y)=\left\[\left(\begin{array}{c}2(x+y)\\-3(y-x)^2\\e^{x+y}\\\end{array}\right),\left(\begin{array}{c}2(x+y)\\3(y-x)^2\\ e^{x+y}\\\end{array}\right)\right\]

となる。Schemeでは

(define (g x y)
  (up (square (+ x y)) (cube (- y x)) (exp (+ x y))))

(print-expression ((D g) 'x 'y))
→ (down (up (+ (* 2 x) (* 2 y))
          (+ (* -3 (expt x 2)) (* 6 x y) (* -3 (expt y 2)))
          (* (exp y) (exp x)))
      (up (+ (* 2 x) (* 2 y))
          (+ (* 3 (expt x 2)) (* -6 x y) (* 3 (expt y 2)))
          (* (exp y) (exp x))))

となる。

問題8.1 連鎖法則

F(x,y)=x^2y^3, G(x,y)=(F(x,y),y), H(x,y)=F(F(x,y),y)とし、H=F\circ Gになるようにする。

a. \partial_0F(x,y)\partial_1F(x,y)を計算せよ。

b. \partial_0F(F(x,y),y)\partial_1F(F(x,y),y)を計算せよ。

c. \partial_0G(x,y)\partial_1G(x,y)を計算せよ。

d. DF(a,b),DG(3,5),DH(3a^2,5b^3)を計算せよ。

問題8.2 微分の計算

我々は 引数を複数個取る関数を手続きとして、それをどのように使いたいかに応じて幾通りかの方法で表現することができる、最もシンプルな案は手続きの引数関数引数を同一視することである。


例えば、問題8.1に出てくる関数の実装を以下のように書くことができるだろう:

(define (f x y)
  (* (square x) (cube y)))
(define (g x y)
  (up (f x y) y))
(define (h x y)
  (f (f x y) y))

この選択により、fと、それらの引数のタプルを生成する関数gのように複数の引数をとる関数の合成はawkwardである。あるいは、関数引数をタプルデータ構造のスロットとして表現し、そのようなデータ構造で結果を返す関数との合成を行うのも容易である。しかし、この選択は構造を構築したり分解したりする手続きを必要とする。


例えば、上述の関数を実装する手続きを以下のように定義できる:

(define (f v) 
  (let ((x (ref v 0))
        (y (ref v 1)))
    (* (square x) (cube y))))
(define (g v) 
  (let ((x (ref v 0))
        (y (ref v 1)))
    (up (f v) y)))
(define h (compose f g))

コンピュータを用い、問題8.1をもう一度やれ。多引数関数の両方の実装について調べよ。