nano_exit

量子力学、固体物理、fortran、python、etc

複素数平面上の漸近とは?

クーロン散乱の記事を読んでいて、よく考えると???となった位相の問題。
要するに、

 e^{ i ( a + b ) } \rightarrow e^{ i a  } \quad ( a \gg b ) (?)

となるか?というもの。
いや成らんやろ。 aがどんなに大きかろうが、結局 mod( a, 2\pi )が重要なのであって、 bによってもたらされる位相のズレを解消することは出来ない。
一つ有り得る話としては、 e^{ i b }を複素定数として規格化因子に入れてしまうというもの。
 bが定数ならそれで良い。しかし例えば、

 e^{ i ( x + {\rm ln}x ) } \rightarrow e^{ i x  } \quad ( x \gg {\rm ln}x ) (?)

というように、変数の依存性が残っているものはどう扱えば良いのだろうか?これは具体的なケースとしては無限遠方において平面波になるかというものである。
数値計算上、適当な 境界で一致させるようにその時の x_0 e^{ i {\rm ln}x_0 }を複素定数として抜き出すということは可能だろうが、そうではなく解析的な極限操作、漸近操作において、 x依存性が残るものをどう捉えられるのだろうか?時計の長針と短針のように、完全に揃い続けることはないものを漸近したと呼んで良いのだろうか?

もう少し勉強してみる必要がありそう。

極座標の不思議

いや、大した話ではないが、

 \vec{ r } = x \vec{ e_x } + y \vec{ e_y } + z \vec{ e_z } = r \vec{ e_r }

に違和感を感じた。基底一個で三次元の位置を特定出来ちゃっている訳なので。
頭ではわかっているが、心のどこかで、

 \vec{ r } = r \vec{ e_r } + \theta \vec{ e_{\theta} } + \phi \vec{ e_{\phi} }  (もちろん誤り)

を期待してしまっている自分がまだどこかに潜んでいる気がする。
多分、

 \vec{ r } = r {\rm sin} \theta {\rm cos} \phi \vec{ e_x } + r {\rm sin} \theta {\rm sin} \phi \vec{ e_y } + r {\rm cos} \theta \vec{ e_z }

に慣れ過ぎたのだろうと思う。
でもこれはどっちかというとただの媒介変数標示なのだろうと思う。
極座標と言うからには r, \theta, \phi が基底の空間で、軌跡(時間発展)がこれらの変数(?)に対して与えられるようなものな気がする。
ただ、じゃあそれを (r, \theta, \phi )空間で見て分かり易いか?というと全くの別問題だろう。計算し易いとかはもちろんあるだろうが。

まぁ常に位置ベクトルの向きに \vec{e_r}を向かせるという約束なので、そういうもんであるが、ここにナブラの直交座標から極座標への変換とかが入って来ると話がややこしくなる。
ナブラはそもそも直交座標で定義されたものなので、極座標で定義し直すという気持ちでいると、やっぱり

 \vec{ r } = r \vec{ e_r } + \theta \vec{ e_{\theta} } + \phi \vec{ e_{\phi} }  (もちろん誤り)

的な方向に行ってしまいがちな気がする。
ナブラの極座標への変換は
極座標のラプラシアンの出し方いろいろ
が分かり易かった。
結局 \vec{e_r}( \theta, \phi )というのが、直交座標に慣れていると癖が強く感じる気がする。

この辺の座標変換の究極系が一般相対論かと思うと恐ろしい。。。

ラグランジュアン:位置と運動量は独立か?

独立ではない(でもついこの間まで良くわからずにいた)。
紛らわしい理由として、

  •  L( q, \dot{q} )と書かれているからついつい。
  • その導出過程で \int ( \frac{\partial L}{\partial q } \delta q + \frac{\partial L}{\partial \dot{q} } \delta \dot{q} ) dt = 0  となっているからついつい。

という感じだろうか?

そもそも \dot{q} = \frac{ dq }{ dt }であるから、独立な訳がない。
というか、偏微分している時点で、独立じゃないけど別々に微分しますよ~ということを宣言しているので、別々に微分していることが独立性を表すことに全くならない。

大元に立ち返ると、 q, \dot{q} tの関数である。なので、言ってしまえばラグランジュアンは L(t)とだけ書いても良いぐらいである。言い換えると、 q, \dot{q}の形が求まった後に、ラグランジュアンを求めると、結局 tしか出て来ない訳で。
じゃあ何で結局全部tの関数なのにわざわざ q, \dot{q}で書くのか?というと、そうすることで Lを理解し易い、利用し易い、実験に合う、Newton力学と整合する、などなどというメリットがあるからである。
じゃあ何で関数の中身を区切るだけでそんな変わるのか?というと、関数を見る視点が変わるから、とでも言いましょうか。

例として、 f(t) = t^5を考えたときに、 l = t^3, m = t^2と勝手に決めると、 f(l, m) = l \times mとなる。 f(l, m)は明らかに l,mに対して線形である。大元の tの5次のまま見ても良いが、直線関係にあるもので 特徴付けられるならば理解し易い気がしないだろうか?ちなみにこの場合、 l,mは好き勝手な値が取れるわけではなく、 l = m^{3/2}であり、 lm平面上で曲線を描くと思っても良いし、媒介変数の立場を取ればパラメータ tによって軌跡が描かられると思っても良い。
今は、勝手に作った関数で物理的意味は特になく、変数を変えることにあまり旨味が無いかも知れないが、実際に位置や運動量、圧力、体積、磁場と言った意味を纏った量でエネルギーなどの物理量を記述するとなると、それぞれが既に何かの関数になっているかも知れないが、一つの変数として見て法則性があった方が解釈し易かったり制御し易かったりするわけである。


上では、 L(t)が求まった後にそれを q(t),\dot{q}(t)に分配するという立場で話をしてきた。
元々やりたいことは逆で、、各時刻 tにおいて \delta qの無限小変位を加えたときに作用が変化しない(極値を取る)ような qは何ですか?ということである。このとき \dot{q}も変位 \delta \dot{q}を受ける。これらも独立ではなく、 \delta \dot{q} = \frac{d \delta q }{dt}である。ちなみに、 \delta q \delta tに対する変位ではないことに注意。時間の変位は考えておらず、それとは無関係に加えている。というか、時間積分だからその中で時間の変位を与えるとおかしくなる。
ごちゃごちゃ書いたが、要は、
 \displaystyle \delta S(t_A, t_B) = \int^{t_B}_{t_A} ( L( q + \delta q, \dot{q} + \delta \dot{q}, t ) - L( q, \dot{q}, t ) ) dt = 0

これに関して、全微分 d L(t)、すなわち何らかの変位が起こったときのラグランジュアンの一般的な変化がわかれば、 dt=0のときの全微分を使えば良いから話が終わる。
多変数を引数に持つ関数の全微分偏微分を用いて書かれる。

 \displaystyle d L(q,\dot{q},t) = \frac{ \partial L(q,\dot{q},t) }{ \partial q } dq + \frac{ \partial L(q,\dot{q},t) }{ \partial \dot{q} } d \dot{q} + \frac{ \partial L(q,\dot{q},t) }{ \partial t } dt

それで、本当に一変数の全微分と勝手に区切ったなんちゃって多変数の微分達の和が一致するか f(t)で確認すると、例えば t微分すると、

 \displaystyle \frac{ d f(t) }{ d t } = 5 t^4
 \displaystyle \frac{ \partial f(l,m) }{ \partial l } \frac{ \partial l }{ \partial t } + \frac{ \partial f(l,m) }{ \partial m } \frac{ \partial m }{ \partial t } = m \cdot 3t^2 + l \cdot 2t = 5 t^4

となり、勝手に区切っても正しい微分の手続きを踏めば問題無いことがわかる。

話をまとめると、 L(t) tの関数(時間で積分すると作用を返す関数)だけど、任意の関数 q(t),\dot{q}(t)で表現しても良く、これらの変位に対して作用が極値を取るような条件(制限)がラグランジュ方程式であり、この制限下で q(t),\dot{q}(t)が上手いこと軌跡を描く、ということだと理解している。

実際にラグランジュアンに形を与える際、例えば等速直線運動のときの運動エネルギーを考えると、 tを介さずに、ガリレイ変換の対称性からほぼ直接 \dot{q}の依存性( m \dot{q}^2 / 2)がポンっと出てくるから、余計に q, \dot{q}が独立変数だと思ってしまうかも知れない。
むしろ任意の関数で表現しても良いから、対称性等のアプローチでラグランジュアンの形を大枠で推定出来ると思う方が無難かも知れない。

線積分と線分

昔から線分を求める積分が苦手だった。アステロイドとかサイクロイドとかアンドロイドとかがその所為もあってか苦手。
一方、ベクトルが出て来てから線積分は別に何とも思わなくなった。
が、しかし、 \int d\vec{r}では積分を行う軌跡上のベクトルを足していくため、閉曲線ではゼロになる。なんか線積分と線分の関係がしっくり来ないと思って考察した。

ステロイドの線分を求めるのをやらされるのは、大体公式に当てはめるみたいな感じで教わることが多いと思っている。
自分はイメージ(理解)無しで覚えるのが苦手なので、頭に全く残らなかった。
物理を扱うようになって思ったのは、線分を求めるよりは、積分を行う軌跡上に射影した、つまり \int \vec{V} \cdot d\vec{r}を計算することが多いということ。あまり線分は出て来ない気がする。

まぁ式にしてしまえば何てことないのだが、簡単のため二次元を考えて、ある軌跡上の線分を求めるには、

 \displaystyle \int |d\vec{r}| = \int \sqrt{ dx^2 + dy^2 } = \int \sqrt{ ( \frac{dx(s)}{ds} )^2 + ( \frac{dy(s)}{ds} )^2 } ds

「微少量の線分を足しまくる」というただそれだけをすれば良い。媒介変数表示、いわゆるパラメータ(ここではs)が出てくるが、これは軌跡上で積分する以上、軌跡の方程式が無いといけない訳で、 x = \sim y = \simというのを記述するための変数がどうしても必要になる。
多分、このパラメータが無いといけないのが、結構ハードルが高くて、普通は被積分関数の振舞を気にしていれば良かった( dxとかは一次元的で、その間隔とかはあまり意識する必要がない)のが、 |d\vec{r}|になると dx dyを独立に積分することが出来ないため、割とパニックになる。それでパラメータを入れたら、積分の中身が普通の xとかではなく微分が来るから、暗記するには自分にはキツイ。

さらに質が悪いことに、簡単な例と思って単位円を持ってくると、 x = cos\theta y = sin\thetaだから、

 \displaystyle \int^{2\pi}_0 \sqrt{ ( \frac{dx(\theta)}{d\theta} )^2 + ( \frac{dy(\theta)}{d\theta} )^2 } d\theta = \int^{2\pi}_0 \sqrt{ (-sin\theta)^2  + (cos\theta)^2} d\theta = 2\pi

これは、誤って微分ではなく普通の x, yを突っ込んでも同じ解が出て来てしまう。

 \displaystyle \int^{2\pi}_0 \sqrt{ (cos\theta)^2  + (sin\theta)^2} d\theta = 2\pi

単位円ではない例も必要だろう。
 y=xの曲線を y=t x=tとして t=[0:1]で積分すると、

 \displaystyle \int^1_0 \sqrt{ ( \frac{dx(t)}{dt} )^2 + ( \frac{dy(t)}{dt} )^2 } dt = \int^1_0 \sqrt{ 2 } dt = \sqrt{2}

これは単位長さの正方形の対角線の長さをキチンと表せている。間違たver.では、

 \displaystyle \int^1_0 \sqrt{ ( x(t) )^2 + ( y(t) )^2 } dt = \int^1_0 \sqrt{ 2t^2 } dt = \frac{ \sqrt{2} }{ 2 }

となり、答えを間違う。ちなみにこの間違った答えと同じ線分を与えるのは、 x = y = t^2/2であり、 t=[0:1]の範囲では x=y=tよりも進みが遅い。それ故に軌跡は同じだが、線分が短くなるということになる。

単位円だけをモデル(分かり易い例)に持ってくるのは、時として危険だなぁと思った次第である。

場とは

最近全然更新していなかったので、砂川先生の理論電磁気の一番最初の節でもまとめてみる。

万有引力でもクーロン力でも何でも良いが、とにかく二つの物体間に働く力を考えたい。

二つの物体の間で直接力が働くとする立場を「遠隔作用」と呼ぶことにする。つまり、物体が一つあるだけでは何も起きませんと言っているのと同じ。
一方で、今日ブラックホールとか重力の説明でよく出てくる、ゴム板に重い球を乗せると球がゴム板に沈む(めりこむ、凹む)のを用いれば、二つの球を接触はしない程度に接近させてゴム板に乗せると引っ付いて一か所に落ち着く。ゴム板が完全に透明で全く見えないとすると、あたかも二つの球は勝手に引っ付いたように見える。つまり、「真空」を媒介に二つの物体が作用し合っているとする立場を「近接作用」と呼ぶことにする。ここで言っている近接とは、己の位置近傍の真空とだけやり取りするという意味である。

で、結局どっちも同じ力を記述出来るんだったらどっちでも良くない?となるが、片方でしか記述できない物理現象が出てくると、もう片方は棄却されざるを得ない。
ではどんな物理現象で差が出るかと言うと、電磁波の発生である。
真空中に荷電粒子を一つだけ置いて(実際にどうやって置くかは知りません)、それを振動させると電磁波が発生します。
荷電粒子一つだけなので、遠隔作用の立場では説明出来ません。
しかし近接作用の立場を取れば、荷電粒子の振動が「真空」に作用しているため、その「真空」の変位の結果が電磁波として現れると考えることが出来ます。
このようにして、近接作用の立場が支持されています。

「真空」と聞くと何もないものというイメージが強く、実際にエーテルというものが空間を満たしていて、その力学的振動が電磁波だという説を検証する時期がありました。
しかし、光速度の不変性が発見されると、その説は棄却され、エーテルはファイ○ルファン○ジーで主に見かけるMPを回復するアイテムという存在になりました(ゼノ○アスでは魔法という概念そのもの)。
結局のところ、「真空」に何かがあるという訳ではなく、「真空」そのものが荷電粒子に作用したりされたりできる「何か」として扱っていくこととなります。(真空の正体については僕はよく知りません。)
真空が実際に何なのかを明らかにしなくても、古典電磁気の範囲では問題なく電磁気現象を予言出来るので、その意味では「真空の正体」は置いておいて「真空の性質」にだけ注目していくと言えると思います。

それで、場とは何か?についてですが、真空が物体によって受けた変位の空間分布を場と呼びます。この分布を絵で書こうとすると、矢印をいっぱい書いて頑張ることになるで、矢印を麦と思えば、物体の周りに麦畑が広がっている感じになります。この麦畑がfieldであり、すなわち場と訳されています。

日本人だと、矢印の群れを何て表現するのかなぁと。ススキ?鍬?稲穂?結局は畑からは抜けられないかな。。。

LaTeXで図が真っ白になる問題について(texlive/2013)(Windows)

論文を書いていて、TeXworksでpLaTex(ptex2pdf)でpdfを作製。
どれどれと思って見たら、epsの図のところだけポッカリ真っ白。

LaTeXを書いていてeps画像がPDFファイルに出力されない問題を解決 - 透明の練習 第2刷
パソコン雑記: TeXでEPSファイルがPDF出力できない現象について(2)

を参考にして見たが、結局上手く行かない。

というか、そもそもdviファイルが出て来てなかった。

pLaTexはダイレクトにtex -> pdfに行くから、dviは出ない」という先入観が良くなかった。
あと、コンソールを常時表示させていなかったのも良くなかった。

コンソールを見ると、Warningとあり、どうやらGhostscriptを「gs」のコマンドで呼んでいてコケていた。
ん?と思って、自分のC:/gs/gs9.20/binを見ると、gswin64.exeがいらっしゃった。
つまり、gs.exeをLaTexは探していたが、あるのはgswin64.exeだからシカトされていたわけです。

gswin64.exeをコピーしてgs.exeを用意したら、ちゃんと図が出るようになりました。

logファイルを見ればいいやと思ってたら甘かった。。。コンソール大事ですね。

VASPでEMAXを増やして計算したらcore dumpする件について(Ubuntu12.0.4)

VASPのコンパイルの問題ではなく、Linux側でデフォルトの設定だとstackの上限が8MB程度と小さいことが原因(あくまで自分のケースでは)。オーバーフローとか別のエラーを吐いて欲しかった。。。

ulimit -a

でいろんな上限が見れる。
一時的には

ulimit -s unlimited

でstackの上限を外せるが、ターミナルを閉じたりするとデフォルトに戻る。めんどい。

/etc/security/limits.conf

を弄ってstackの上限を外す。自分は適当に、

 * soft stack unlimited
 * hard stack unlimited

と付け加えた。*は全てのユーザーで、soft/hardは一般ユーザー/rootの上限を設定することを表す。ちゃんと理解していないので、ユーザーの指定とsoft/hardの役割が被っている気がしてならないが、VASPが動けばどうでも良い。
変更を反映させるにはrebootする必要がある。うちのワークステーションはSDDなのであまり気にならないが、立ち上がりが遅いと面倒な作業ではある。
変更されたかを見るには

ulimit -a

をターミナルに打ち込む。ulimitをunlimitだと思ってターミナルが反応せず一瞬頭を抱えたのは内緒。
VASPの問題なのかCPU側の問題なのかを判別するのは非常に難しいと痛感したトピックスではあった。

=== 追記 ===
stackの上限が問題になることももちろんあったが、追記として「Intel MKLとopenmpiを併用する場合」を補足しておく。
Intel MKLでBLACSのライブラリーを用いる場合、-lmkl_blacs_intelmpiか-lmkl_blacs_openmpiが選べる。ここでのコンパイルはopenmpiのコンパイラーであるmpifortもしくはmpif90で用いるのだが、intelmpiのライブラリを使うと、コンパイルは通るがコアダンプになることがわかった。
intelmpiはちゃんとIntel MPIを買って使いましょう。