EMANの物理学 過去ログ No.6901 〜

 ● 「相対性理論、平行移動」の節の誤り報告

  投稿者:小林@那須 - 2009/05/19(Tue) 07:34  No.6901  <Home>
「相対性理論、平行移動」の節の誤り報告

最後の方で式の変形に誤りが入り込んでいます。

<tex>= g^{i,j} A_{i} A_{j} + ( 2 g^{l,j} \Gamma^{i}_{l,k} + \pdif{g^{i,j}}{x^{k}} )A_{i} A_{j}dx^{k}</tex>
 意外なまとまり方をした。 実はこの第 2 項のカッコの中は 0 になるのである。

上のように書いていますが、括弧の中の式は 0 になりません。下の式ならば 0 になりますが。
<tex>0 ==  g^{l,j} \Gamma^{i}_{l,k} + g^{l,i} \Gamma^{j}_{l,k} + \pdif{g^{i,j}}{x^{k}}</tex>

実際に、「テンソル/リーマン幾何学の計算ソフト」のスレッドで説明している具体例で、 ${2 g^{l,j} \Gamma^{i}_{l,k} + \pdif{g^{i,j}}{x^{k}}}$  を計算させてやると、下のように 0 になりません。
//@@
jg`` = ∂J(fgx``)(*px)

tns=kzrs(2,2,2)
for i,j,k in mrng(2,2,2):
    tns[i,j,k]=jg``[i,j,k] + 2 Γ`__[i,:,k] g``[:,j]

pp(tns)
//@@@
//copy \#####.### temp.py /y
//testPy.py -fs temp.py
//__tempConverted.py
[[[ 0, 0]
,[ -3.42857, -0.0857143]]
,[[ 3.42857, 0.0857143]
,[ 0, 0]]]


私が EMAN さんの立場だったら「訳のわからん数値計算ソフトの結果など信用できない」と考えそうなので、その後の式の変形の誤りも指摘しておきます。


<tex> ==  g^{l,j} g^{i,m} \pdif{g^{k,m}}{x^{l}} + g^{l,j} g^{i,m} \pdif{g^{m,l}}{x^{k}} - g^{l,j} g^{i,m} \pdif{g^{l,k}}{x^{m}} + \pdif{g^{i,j}}{x^{k}}\\ ==  g^{l,j} g^{i,m} \pdif{g^{m,l}}{x^{k}} + \pdif{g^{i,j}}{x^{k}}</tex>

「ここで第 1 項と第 3 項が打ち消しあう」として上側の式と下側の式を等式で結んでいますが、第 1 項と第 3 項が消しあわないのは、自明に近いと思います。

実際、数値計算例では上の二つの式は次のように別の値になります。まあ下側は 0 tensor になり、その後の式の展開が 0 tensor に結びつくことになるのですが。

//@@
jg`` = ∂J(fgx``)(*px)
jg__ = ∂J(fgx__)(*px)
tns=kzrs(2,2,2)
for i,j,k in mrng(2,2,2):
    tns[i,j,k]=jg``[i,j,k] + sum([
            g``[l,j] g``[i,m] jg__[k,m,l]
          + g``[l,j] g``[i,m] jg__[m,l,k]
          - g``[l,j] g``[i,m] jg__[l,k,m]
                                          for l,m in mrng(2,2)
                                 ])

pp(tns)
//@@@
//copy \#####.### temp.py /y
//testPy.py -fs temp.py
//__tempConverted.py
[[[ 0, 0]
,[ -3.42857, -0.0857143]]
,[[ 3.42857, 0.0857143]
,[ 0, 0]]]


//@@
jg`` = ∂J(fgx``)(*px)
jg__ = ∂J(fgx__)(*px)
tns=kzrs(2,2,2)
for i,j,k in mrng(2,2,2):
    tns[i,j,k]=jg``[i,j,k] + sum([
            g``[l,j] g``[i,m] jg__[m,l,k] for l,m in mrng(2,2)
    ])

pp(tns)
//@@@
//copy \#####.### temp.py /y
//testPy.py -fs temp.py
//__tempConverted.py
[[[ 0, 0]
,[ 0, 0]]
,[[ 0, 0]
,[ 0, 0]]]

---------------
本当は、一次の微少  ${( 2 g^{l,j} \Gamma^{i}_{l,k} + \pdif{g^{i,j}}{x^{k}} )A_{i} A_{j}dx^{k}}$  に辿り付くまでに入り込んだ式の誤り個所を指摘できれば良いのですが、そこまでは追跡していません。

Python sf 式で一次の微少量を計算してやると下のようになるのですが、 ${ A_{i},A_{j} dx^{k}}$  で括りだせないからです。テンソル計算の積であり、勝手に積の順序を入れ替えられないからです。

dx=~[0.001, 0.002];a_ (∂Jx(fgx``)(*px)dx) a_ + (a_ Γ`__ dx) g`` a_ + a_ g`` (a_ Γ`__ dx)
===============================
-6.35852273612e-011

この式をテンソルのインデックスを明記して書いてやると、あまりにも入り組んできてしまいます。、これぐらい足の項が入り組んでくると、もう頭が爆発して扱いきれなくなるからです。

  投稿者:明男 - 2009/05/19(Tue) 19:52  No.6903 
>小林@那須さん

EMANさんを差し置いて何ですが、間違ってはいないと思います。第一項と第三項は成分として打ち消し合うのではなく、ちゃんと文中にあるようにあくまでΣ(i,j)について和を取って始めてキャンセルするもので、それを考察して落とせるのだと思います。
その数値計算をされているのでしょうか?

>EMANさん
出しゃばった上に間違っているかも知れませんが、指摘された変形の第3行から第5行の第2項(右側)の添字mlは下付(共変)ではないですか。ちょっと気になったもので・・・。

  投稿者:小林@那須 - 2009/05/19(Tue) 22:59  No.6904  <Home>
明男さん、ご意見ありがとうごさいます。

>和を取って始めてキャンセルするもので、それを考察して落とせるのだと思います。
>その数値計算をされているのでしょうか?

アインシュタインの縮約の規則を知らずに相対論の節の数式をトレースする人間はいないでしょう。

また python のリスト内包表記を知っていれば、縮約操作をしていることを読み取れるはずです。
  sum([..expressions... for l,m mrng(2,2)])
の部分です。ただし l,m 二つのインデックスについて一度に展開してしまうのは、python でも、あまり行う方法ではありませんが。それを一度にさせているのが python sf の自慢の一つです。


「第一項と第三項は成分として打ち消し合うのではなく、ちゃんと文中にあるようにあくまでΣ(i,j)について和を取って始めてキャンセルする」とされる理由が、明男さんにありますでしょうか?

私流に、第一項と第三項が一致しないことを示します。

第一項のテンソルを計算させてみます。
//@@
jg`` = ∂J(fgx``)(*px)
jg__ = ∂J(fgx__)(*px)
tns=kzrs(2,2,2)
for i,j,k in mrng(2,2,2):
    tns[i,j,k]= sum([
            g``[l,j] g``[i,m] jg__[k,m,l]
                                          for l,m in mrng(2,2)
                                 ])

pp(tns)
//@@@
//copy \#####.### temp.py /y
//testPy.py -fs temp.py
//__tempConverted.py
[[[ -5.65306, 0.157959]
,[ -7.59184, -0.661224]]
,[[ -4.16327, -0.57551]
,[ -4.89796, -7.26531]]]

第二項のテンソルも計算させてみます。
//@@
jg`` = ∂J(fgx``)(*px)
jg__ = ∂J(fgx__)(*px)
tns=kzrs(2,2,2)
for i,j,k in mrng(2,2,2):
    tns[i,j,k]= sum([
            g``[l,j] g``[i,m] jg__[l,k,m]
                                          for l,m in mrng(2,2)
                                 ])

pp(tns)
//@@@
//copy \#####.### temp.py /y
//testPy.py -fs temp.py
//__tempConverted.py
[[[ -5.65306, 0.157959]
,[ -4.16327, -0.57551]]
,[[ -7.59184, -0.661224]
,[ -4.89796, -7.26531]]]

数値計算はテンソルの [0,1,x] 項と[1,0,x] 項が入れ替わっていることを示しています。

jg__: ${\pdif{g_{i,j}}{x}}$  のテンソルを計算させてみると、[0,1,x] 項と[1,0,x] 項が等しいことも分かります。この桁で数値が一致するのは、単なる偶然ではないでしょう。
//@@
jg__ = ∂J(fgx__)(*px)
print jg__
//@@@
//copy \#####.### temp.py /y
//testPy.py -fs temp.py
//__tempConverted.py
[[[-0.06507705 -0.00390462]
[ 0.00292847 0.00041487]]

[[ 0.00292847 0.00041487]
[ 0.00058569 -0.00198973]]]
---- ClTensor ----
<==
jg__[0,1,0] == jg__[1,0,0]
jg__[0,1,1] == jg__[1,0,1]

の性質を仮定してやれば、数値計算で例示された、テンソルの 第一項[0,1,x]要素と、第三項[1,0,x]要素が入れ替わっていることを一般的であると証明できます。

第一項[0,1,0]要素と第三項[1,0,0]要素が同じであることを示せれば、第一項と第三項は等しくないと言ってもいいでしょう。

下のように第一項 0,1,0 要素と第三項 1,0,0 要素を馬鹿正直に書き下して、jg__ の [0,1,x] 行と [1,0,x] 行が一致すること、g`` か対称行列であることを使って変形してやります。これにより、第一項 0,1,0 要素と第三項 1,0,0 要素が一致することを証明できます。

i,j,k = 0,1,0 第一項
l,m = 0,0 g``[0,1]g``[0,0] jg__[0,0,0]
l,m = 1,0 g``[1,1]g``[0,0] jg__[0,0,1]
l,m = 0,1 g``[0,1]g``[0,1] jg__[0,1,0]
l,m = 1,1 g``[1,1]g``[0,1] jg__[0,1,1]

i,j,k = 1,0,0 第二項
l,m = 0,0 g``[0,0]g``[1,0] jg__[0,0,0]
l,m = 1,0 g``[1,0]g``[1,0] jg__[1,0,0]
l,m = 0,1 g``[0,0]g``[1,1] jg__[0,0,1]
l,m = 1,1 g``[1,0]g``[1,1] jg__[1,0,1]
==
l,m = 0,0 g``[0,0]g``[1,0] jg__[0,0,0]
l,m = 1,0 g``[1,0]g``[1,0] jg__[0,1,0]
l,m = 0,1 g``[0,0]g``[1,1] jg__[0,0,1]
l,m = 1,1 g``[1,0]g``[1,0] jg__[0,1,1]
==
l,m = 0,0 g``[0,0]g``[1,0] jg__[0,0,0]
l,m = 0,1 g``[0,0]g``[1,1] jg__[0,0,1]
l,m = 1,0 g``[1,0]g``[1,0] jg__[0,1,0]
l,m = 1,1 g``[1,0]g``[1,1] jg__[0,1,1]
<== g`` が対称行列であることより i,j,k=0,1,0 第一項に一致する

逆に、第一項 0,1,0 要素と第三項 1,0,0 要素が一致するならば、第一項と第三項は打ち消しあわないと言ってもいいでしょう。(厳密な論理展開のためには、第一項0,1,0 要素と第三項1,0,0 要素が同じでないときが存在することの証明も必要ですが、数値計算を結果を見ている限り自明だで済ませます)

  投稿者:EMAN - 2009/05/20(Wed) 00:02  No.6905 
> 明男さん、

 ご指摘の点、確認しました。 明日直します。

> 小林@那須さん

 確認しましたが、間違ってないと思います。

 「以降はそこだけやってみよう。 」って書いてますけど、
その後の私の式は単独で成立するものではないので、
計算機にやらせる時には
ちゃんと $ A_i A_j $ を掛けた状態で検算してもらわないと。

 その点は、i と j を入れ替えていい理由として
文章で説明してあります。

  投稿者:明男 - 2009/05/20(Wed) 02:01  No.6906 
>小林@那須さん

もう、EMANさんが結論を出されたので蛇足ですが、勘違いされては困るので断っておきますが、小林@那須さんを非難している訳ではありません。あくまで質問として(?をつけたでしょう?)聞いたまでです。本来ならば中味の分からないプログラムのリストを見ろというのは通らないと思いますが、拝見する範囲ではやはりi,jについてのΣは取っていませんね。成分で比較せず、和で比較すべきなので、第一、三項はそれぞれがキャンセルするのではなく、互い違い(これがi,jの置換に当たります)が第一、三項の逆符号によって全体でキャンセルされます。私の見たところ、小林@那須さんの計算は将にその検証になっていると思います(値が同じで逆符号)。

  投稿者:小林@那須 - 2009/05/20(Wed) 02:15  No.6907  <Home>
EMANさん、ご指摘ありがとうごさいます。

>計算機にやらせる時にはちゃんと  ${A_{i},A_{j}}$  を掛けた状態で検算してもらわないと

確かに  ${A_{i},A_{j}}$  を掛けて、i,j に付いて和を取れば 0 になりました。
//@@
jg`` = ∂J(fgx``)(*px)
jg__ = ∂J(fgx__)(*px)
a_ = a_xy(*px)
tns=kzrs(2,2,2)
for i,j,k in mrng(2,2,2):
    tns[i,j,k]=jg``[i,j,k] + sum([
            g``[l,j] g``[i,m] jg__[k,m,l]
          + g``[l,j] g``[i,m] jg__[m,l,k]
          - g``[l,j] g``[i,m] jg__[l,k,m]
                                          for l,m in mrng(2,2)
                                 ])

print tns

ttns=kzrs(2,2,2)
for i,j,k in mrng(2,2,2):
    ttns[i,j,k] = tns[i,j,k] a_[i] a_[j]

print ttns

print sum([ttns[i,j,:] for i,j in mrng(2,2)])
//@@@
//copy \#####.### temp.py /y
//testPy.py -fs temp.py
//__tempConverted.py
[[[ -1.44780135e-08 -3.64652752e-11]
[ -3.42857144e+00 -8.57142864e-02]]

[[ 3.42857142e+00 8.57142859e-02]
[ -1.14582122e-08 -1.15677068e-09]]]
---- ClTensor ----
[[[ -4.61671347e-08 -1.16279577e-10]
[ -1.13702624e+01 -2.84256562e-01]]

[[ 1.13702623e+01 2.84256560e-01]
[ -3.95191399e-08 -3.98967847e-09]]]
---- ClTensor ----
[ -1.71037383e-07 -5.77970903e-09]
---- ClTensor ----

==========================
別に屁理屈を捏ね回す気はありません。言葉尻の枝葉末節を あげつらう気持ちもありません。その前提で・・・

「実はこの第 2 項のカッコの中は 0 になるのである」と書いてあります。その後のテンソル式も ${A_{i},A_{j}}$  が掛からないままに展開されていきます。そして三階のテンソルが 0 になるように等号でつながれています。

でも、 ${A_{i},A_{j}}$  を掛けたとき、0 になる理由は、「実はこの第 2 項のカッコの中は 0 になるのである」ではなく、「実はこの第 2 項のカッコの中は、i,j のインデックスについて反対称になのである。これが反対称であるために、 ${A_{i},A_{j}}$  を掛けて足し合わせたときに 0 ベクトルになるのである。」ことでしょう。

また後ろのテンソル式が  ${2 g^{l,j} \Gamma^{i}_{l,k} + \pdif{g^{i,j}}{x^{k}}}$  と等号ついなで、最後が三階の 0 テンソルになる式の変形は誤りだと考えます。如何でしょうか。

  投稿者:EMAN - 2009/05/20(Wed) 08:27  No.6908 
> 確かに  ${A_{i},A_{j}}$  を掛けて、i,j に付いて和を取れば 0 になりました。

 計算機の働きはばっちりですね。

> 最後が三階の 0 テンソルになる式の変形は誤りだと考えます。如何でしょうか。

 昨晩読んでて(今朝になって一段と)、自分でも違和感があったので、
表現を直そうと思います。

 ところで、

> 私が EMAN さんの立場だったら「訳のわからん数値計算ソフトの結果など信用できない」と考えそうなので、

 私はこんな風には考えませんよ。
 むしろ計算機を信じて、真っ先に自分の計算の方を不安に思うタイプです。

 今回のは、もし間違っていたら全体が崩れるような部分なので
そりゃあないだろうという気持ちの方が強かったわけですが。

  投稿者:明男 - 2009/05/20(Wed) 10:25  No.6909 
>小林@那須さん

直近のレスを拝見して、これは苦言です。EMANさんは優しいし、ご自分の記事のことなので控えめにレスされるのは仕方ないでしょう。内容は兎も角、熱心に見てくれる読者に邪険にしたくないでしょうし、指摘も有り難いことでしょう。
しかし、くだんの箇所の表現のまずさはあるにせよ”誤り報告”などという重大な指摘に対し、そのレスは頂けません。既に私も第三者ではないので、私の見方も純粋に客観的な意見とは言いませんが、ご自分の正当化のみに視点があるように見受けられます。
何度も書きましたが、この計算の流れは十分に読みとれるものであり、だからこそ私も指摘し、計算も確認しました。小林@那須さんはそれが読みとれなかったのですか?テンソルのトレース云々以前の問題です。物理では被積分の遠方減衰項やこの場合のようにキャンセル項を式変形の途中で落とすことはよくあります。勿論”数学的に”厳密ではないし、説明の仕方には工夫が要ります。表現の問題なら初めからそう言うべきで、表題のような重大な指摘なら本質を見るべきです。別に良いですが、私の言葉にも注意を払っていたとは思えませんしね。蛇足ですが0ベクトルとは何ですか。全ての添字のコントラクションを取った結果でスカラーではないですか。
まあ結果として、誤解を生じる人が存在しうるという意味でEMANさんが訂正されるのは賢明です。

  投稿者:小林@那須 - 2009/05/20(Wed) 12:27  No.6910  <Home>
EMAN さんの書こうとしていることは、下のようなことだと思っています。下のように解釈することで
リーマン幾何の平行移動について

・幾つか試してみた具体例、
・具体例についてのリーマン幾何学的なイメージ
・リーマン幾何の数式
・その数式の解釈

全部について、私の内部で整合が取れました。EMAN さんの書こうとしている内容と違うでしょうか

---------------------------------

実はこの第 2 項のカッコの中はインデックス i,j について反対称になるのである。反対称であることにより、 ${A_{i} A_{j}}$  を掛けて和を取ったものが 0 ベクトルになる。即ち平行移動に伴う微少量が 0 になる。

<tex>  2 g^{l,j} \Gamma^{i}_{l,k} + \pdif{g^{i,j}}{x^{k}}\\= 2 g^{l,j} \frac{1}{2} g^{i,m}(\pdif{g_{k,m}}{x^{l}}+\pdif{g_{m,l}}{x^{k}}-\pdif{g_{l,k}}{x^{m}})+\pdif{g^{i,j}}{x^{k}}\\= g^{l,j} g^{i,m} \pdif{g_{k,m}}{x^{l}}+g^{l,j} g^{i,m} \pdif{g_{m,l}}{x^{k}}-g^{l,j} g^{i,m} \pdif{g_{l,k}}{x^{m}}+\pdif{g^{i,j}}{x^{k}}</tex>

ここで第 1 項と第 3 項だけが残る。第 2 項と第 4 項の足し算は、三階の 0 tensor になる。 ${2 g^{l,j} \Gamma^{i}_{l,k} + \pdif{g^{i,j}}{x^{k}}}$  の式が 第 1 項と第 3 項だけに等しいならば、この式は、i,j のインデックスについて反対称だと言える。

以下、 ${g^{l,j} g^{i,m} \pdif{g_{m,l}}{x^{k}}+\pdif{g^{i,j}}{x^{k}}}$  が 0 tensor になることを証明していこう。



  投稿者:小林@那須 - 2009/05/20(Wed) 12:31  No.6911  <Home>
明男さん、No6906 レスを書いてくれたのに、見逃していました。失礼しました。

>ご自分の正当化のみに視点があるように見受けられます。

明男さんは EMAN さんを庇おうとしているのだと思います。「EMAN さんの書いたものが誤っている」などと書かれたくない気持ちも十分に理解できます。

一方で、私は自分を正当化するために屁理屈を捏ねる気は全くありません。そのように受け取られるのは、私の書き方のせいもあるのでしょうが、残念です。

私は明男さんも、レスの内容からして web page の内容を No6910 に書いたように理解していると思っています。そして No6910 と EMAN さんの web page とは明確に整合しないと主張します。

明男さんは、No6910 の内容と web page の記事が整合すると考えますでしょうか。それとも No6910 に書いたことが誤りと考えるのでしょうか。

平行移動の web page に書いてある下の二つの命題は誤りだと、私は主張します。そうである数値例も、最初に示しました。一方で明男さんは、下の二つの命題を正しいとも考えているようです。でも、その理由は示せていません。そして この命題は No6910 の内容と矛盾します。

「実はこの第 2 項のカッコの中は 0 になるのである。」
「ここで第 1 項と第 3 項が打ち消しあう。」

今の私は明男さんの理解を整合性のあるものとして受け止められません。できたら、上の二つの命題と No6909 について、整合性を保った明男さんの考えを伺えますでしょうか。


  投稿者:EMAN - 2009/05/20(Wed) 14:06  No.6912 
 これはそんなに大騒ぎするようなことではないですよ。

 明男さんは、私の書き方の癖なんかを理解してくれていて、
正しくフォローしてくれただけだし、
(彼が誤解していたようには見えません。)
小林@那須さんは、その辺の私のやり方が性に合わずに
しばらく混乱しただけで、今は結果を合わせることができたのだし。

 私の目にはそのように映ってます。
 もう議論しなきゃいけない問題が残っているようには思えないのですが。

(あるとすれば、私の「数式に対する厳密性の軽視」についての是非の問題だけかと)

  投稿者:明男 - 2009/05/20(Wed) 21:04  No.6913 
>EMANさん
却ってお気を使わせてすみません。仰るとおりですね。

>小林@那須さん
このまま黙るのも失礼な気がしますので御質問にのみ答えます。

「実はこの第 2 項のカッコの中は 0 になるのである。」
「ここで第 1 項と第 3 項が打ち消しあう。」

これを命題と言ったことは一度もありません。このように其処だけ取り上げる所ではない、表現の問題、即ち文脈で捉えるべきだと言っています。
キャンセルについてもあくまで和を取って、と明確に書いたつもりですが、この2行にはひとことも出てきません。しかし、最初にAiAjについての和をとると言う前提なら良いでしょう。EMANさんも後の文中で書かれています。
つまり、AiAjを入れて数値計算されたことで理解に溝はないと思っていました。
No.6909は数式のことではなくて、作法としてどうかと思ったということです。何が拙いか、どこが誤解を招くか、を議論することと、あるいは”明確に”間違いなのか、をそれこそ分けて考えるべきです。物理(数)学の正誤に庇うも何もありません。従って小林@那須さんとは本質的な計算において齟齬はなくても、EMANさんの言われるように受容の問題としては議論は平行線と思います。正直いえば数値計算で示した、というのも私には意味を持ちません(開発されているプログラムの価値を言っているのではありませんよ。式の変形で十分に示せるので)。