平凡な物理学徒の日記

平凡な物理学徒の日記です。怠惰な毎日を送っております。

AtCoder Beginner Contest 180

目的

ABC180を題材として競技プログラミングにおける考え方、解き方について共有することで競技プログラミングを知らない人に雰囲気を掴んでもらう。同じレベルの人や強い人にアドバイスをもらう。できれば競技プログラミング仲間が欲しい。



さっちゃんです。ABC180について感想、考えていた事について書きます。まだ解いていない人や、問題の雰囲気を見たい人は次のページに飛んでください。(問題は書いてないので、この記事だけ見ても面白くないかもしれません。)
atcoder.jp


目次

1. 感想

今回の ABC180 の difficulty は
A:灰、B:灰、C:灰、D:緑、E:水色、F:黄色
でCまでは比較的優し目だったように思います。私はA,B,C,D,EをACして5完(パフォーマンス:1286)でした。Dは実力ですが、Eは本当にたまたまで、理解できてないのでこれから勉強します。灰色の私としては、Cまで速く解いてD解ければいいなーくらいで参加したのでよかったです。
初参加から約1年半、ついに灰色を脱出して茶色になりました!(久しぶりに遅刻せずに参加できたことが大きかったように思います。)
というか最近まで物理やってたり就職活動があったので本腰入れてなかっただけなんですけどね。私ほどのポテンシャルがあってイケメンなら茶色飛び越えて緑までバビョーっと行っちゃいます!(ハードルは上げて上げて下をくぐる派!)


atcoder.jp

f:id:physics-heibon:20201018052542p:plain
脱灰色!祝う○こ色!

2. A(box)

言われた通りやりまーす。(負になる事あるかな?と頭をよぎりましたが、ABCのAなので無いでしょー!と思って何も考えず提出しました。制約的にありません。)

N ,A, B = map(int,input().split())

print(N+B-A)

3. B(Various distances)

言われたものを計算しまーす。10^{-9}精度まで必要ってことで一応 sqrt のところは decimal 使いましたが、python は何も気にしないでも大丈夫だったようです。C++とかだと double じゃなくて long long 使わないといけないらしいです。Python もfor文遅かったりするので一長一短ですね。ちなみに M:Manhattan、E:Euclid、C:Chebyshev の略でーす。
どうでもいいですが、マンハッタン距離を見ると45°回転した座標系を定義したくなる病気になりました。(マンハッタン距離の最小最大はそうすると考えやすいっておばあちゃんが言ってた。)

import math
from decimal import Decimal
N = int(input())
x = list(map(int, input().split()))

M = 0
E = 0
C = 0
for i in range(N):
    M += abs(x[i])
    E += (x[i])**2
    C = max(C,abs(x[i]))
E = Decimal(E).sqrt()
print(M, E, C)

4. C(Cream puff)

与えられた N を割り切る正の整数を列挙してくださいってことなので、正の約数を列挙できればいいなーって感じです。1 から調べ始めて \sqrt{N} まで調べれば O(10^6) で解けますね。以下の記事から引っ張ってそのまま貼り付けました。ありがとうございます。
qiita.com

def make_divisors(n):
    lower_divisors , upper_divisors = [], []
    i = 1
    while i*i <= n:
        if n % i == 0:
            lower_divisors.append(i)
            if i != n // i:
                upper_divisors.append(n//i)
        i += 1
    return lower_divisors + upper_divisors[::-1]

N = int(input())

ans = make_divisors(N)
for i in range(len(ans)):
    print(ans[I])

5. D(Takahashi Unevolved)

最初は全然分からなかったんですが、実験しているうちに分かってきました。操作は掛けるか足すかですけど、掛けるのって最初の方にやっておかないと、後の方になって掛け算すると数字がバカデカくなって損しちゃうんですよね。だから後の方は足し算がお得(数字を比較的大きくしないで経験値を増やせる)で、最初の方は掛け算の方がお得です。後はいつ掛け算を止めるかですけど、掛け算をした結果が足し算をするより大きくなったら、足し算をした方が数を小さくできるのでやめ時です。もしくは、掛け算をした結果上限に達したら(掛け算だけで上限に達する、(1,10,2,100) の場合などです。)やめ時です。後者に気づかずに3,4回WA提出してしまいました。

掛け算していけばその数は指数関数的に増えていくので、掛け算の計算の部分はすぐに終わります。あとは足し算をするのみなので、何回足し算できるかを考えて足せばいいです。足し算をしていった結果 Y と同じになってはいけないので、その場合は「Bで、Aによる掛け算パートが終わった"残り"(left)を何回割れるか」の結果から-1しておけばいいです。(これらの事は、(X,Y,A,B) = (1,30,2,8)とか(1,32,2,8)とかで手を動かして実験してみた結果分かりました。)

import sys

X, Y, A, B = map(int,input().split())

ans = 0
#if abs(X-Y) == 0:
#    print(0)
#    sys.exit()

while X*A <= min(B,Y):
    ans += 1
    X = X * A
left = Y - X
if left%B != 0:
    ans += left//B
else:
    ans += left//B
    ans -= 1

print(ans)

6. E(Traveling Salesman among Aerial Cities)

パッと見て巡回セールスマン問題かなーと思って(同じノードに訪れることが許されているので厳密には違うんですが、今回定義されている"距離"に三角不等式が成り立ち、同じノードには訪れる必要がないので結局巡回セールスマン問題。)タイトル見たらまさにそう書いてましたが、勉強した事ないから出来ません。しかし残り40分くらいあったので暇だから勉強するかーと思って色々検索していたら、巡回セールスマン問題はbitDPという種類の問題らしいというのを見かけました。bit探索と区間DPは知ってるけど、そんな融合モンスター知らんよ〜って感じ。(最近遊戯王GX見てるんですが、シャイニング・フレア・ウイングマンかっこいい。サイバーエンドドラゴンと同じくらいかっこいい。)
それでも色々調べていると、次のサイト辿り着きました。
inarizuuuushi.hatenablog.com

理屈はよく分からんけど、距離行列(コスト行列?正式な名前は知りませんが、ノードiからノードjへ行くためのコスト、今回の場合は非対称行列)をぶち込めば巡回セールスマン問題を解いてくれる素晴らしいコードが落ちていたので拝借。ありがとうございます。
距離行列作ってテストを入れるとPythonで2秒以内に答えを出してくれるか怪しかったので念のためPyPy3で提出するとAC。完全にまぐれです。

# ---- memo -----------------
# 巡回セールスマン問題
# ---------------------------

def tsp(d):
    n = len(d)
    # DP[A] = {v: value}
    DP = dict()
    
    for A in range(1, 1 << n):
        if A & 1 << 0 == 0:# 集合Aが0を含まない
            continue
        if A not in DP:
            DP[A] = dict()

        # main
        for v in range(n):
            if A & 1 << v == 0:
                if A == 1 << 0:
                    DP[A][v] = d[0][v] if d[0][v] > 0 else float('inf')
                else:
                    DP[A][v] = min([DP[A ^ 1 << u][u] + d[u][v] for u in range(n) 
                                    if u != 0 and A & 1 << u != 0 and d[u][v] > 0]
                                  + [float('inf')])
    # 最後だけ例外処理
    V = 1 << n
    DP[V] = dict()
    DP[V][0] = min([DP[A ^ 1 << u][u] + d[u][0] for u in range(n) 
                    if u != 0 and A & 1 << u != 0 and d[u][0] > 0]
                    + [float('inf')]) 


    return DP[V][0]




if __name__ == '__main__':


    def cost(A,B):
        return abs(A[0]-B[0]) + abs(A[1]-B[1]) + max(0,B[2]-A[2])

    N = int(input())
    X = [0] * N
    Y = [0] * N
    Z = [0] * N
    List = []
    for i in range(N):
        X[i], Y[i], Z[i] = map(int,input().split())
        List.append([X[i], Y[i], Z[i]])

    D = [[0] * N for i in range(N)]
    for i in range(N):
        for j in range(N):
            D[i][j] = cost(List[i],List[j])

    res = tsp(D)
    #print(D)
    print(res)

7. これから

今回はたまたま水色パフォで茶色になれたので、引き続き AtCoder Problems のRecommendation から茶色の問題をビャーっと解きます。頑張りマッスル。筋肉は全てを解決する。
脱灰色の記事も書きたいです。

twitterの #とろねこチャレンジ って何? -すやすや眠れる猫を一頭でも増やす-

本稿の目的: 「#とろねこチャレンジ」を知る

本稿の対象: twitterInstagramを使っている猫好きの人々

f:id:physics-heibon:20200302204005p:plain
とろねこチャレンジ(kao 花王株式会社さんのホームページより)

本稿のまとめ

・すやすや眠る猫をtwitterInstagramに「#とろねこチャレンジ」というハッシュタグと共に投稿すると、1投稿につき10円が保護猫の譲渡活動に寄付される。(kao 花王株式会社さんによる活動)

・猫を飼っていない人でも、この活動を広めることにより殺処分される猫を減らすことができる。

・一人何回でも参加可能、期間は2020年2月7日〜4月30日
www.kao.co.jp

導入

twitterで猫画像のパトロールを趣味にしているさっちゃんです。

SNSでは可愛い猫の写真や動画が流れてきてうれしいです。飼い猫や近所の猫の写真の他にも、猫の漫画や野良猫と仲良くなる方法などたのしい情報が流れてきます。その中に、いつのまにか「#とろねこチャレンジ」というハッシュタグが付いているものがある事に気づきました。「#とろねこチャレンジ」とは何でしょうか?

とろねこチャレンジ

「#とろねこチャレンジ」とは、花王株式会社さん(以下「花王」)が主催している、保護猫の譲渡活動に対する社会貢献活動です。twitterInstagramで、ハッシュタグ「#とろねこチャレンジ」とともに、眠る猫の画像・動画を載せると1回につき10円が花王から保護猫団体に寄付されます。

かわいい猫の画像を見られるだけではなく、日本のどこかの猫の明日のご飯につながる素敵な活動です。寄付金の使い道については、2割がキャットフード代に、8割がSNSを通した飼い主募集広告に使われます。(2020年3月1日現在、Twitter: 90557 tweets, Instagram: 54426 posts)

注意事項が5つあります。(ホームページに丁寧なQ&Aがあります。)
・一人何回でも投稿できる
・非公開アカウントでは無効
リツイートやいいねは含まれない
・写真は猫のみ対象
・期間は2020年2月7日〜4月30日

この節では「#とろねこチャレンジ」は、保護猫の未来につながる活動であることを述べました。花王のホームページを見ると、現状は年間3万頭の猫が殺処分されていて、目標は殺処分数を0にすることだと書いてあります。そこで気になるのは、殺処分数0というのはどれくらい現実的なのでしょうか?

とろねこチャレンジの背景

この節では、保護猫活動の現状について述べ、「とろねこチャレンジ」の目標がある程度現実味を帯びていることを言います。

環境省の統計資料「犬・猫の引取り及び負傷動物等の収容並びに処分の状況」に、2018年の資料が載っています。(次の図)

f:id:physics-heibon:20200302233211p:plain
fig1: 犬・猫の引取り及び負傷動物等の収容並びに処分の状況。
①:譲渡することが適切ではない(治癒の見込みがない病気や攻撃性がある等) 
②:愛玩動物、伴侶動物として家庭で飼養できる動物の殺処分
③3引取り後の死亡

注目してほしいのは、猫の合計引き取り数56,404頭に対して、殺処分数30,757頭という数です。嫌な数字ですね。しかしこれが現実です。私がTwitterで流れてくる猫のかわいい画像を収集する一方で、年間約3万頭の猫が税金を使って殺処分されています。

こういう話をすると暗い話になりがちですが、いいニュースもあります。同じく環境省の統計資料「犬・猫の引取り及び負傷動物等の収容並びに処分の状況」によると、全国の犬・猫の殺処分数は年々減り続けています。(次のグラフ)

f:id:physics-heibon:20200302223243p:plain
fig2: 全国の犬・猫の殺処分数の推移。単調に減少している。横軸:和暦、縦軸:殺処分数。(例えば平成20年と平成30年の総殺処分数を比べると、5分の1以下になっている。)

これを見ると、「とろねこチャレンジ」が掲げる目標「殺処分数を0に」というのは、そう遠くない未来でほとんど達成されるように思われます。病気や怪我でどうしても譲渡できない犬・猫もいることは事実ですが、譲渡可能な犬・猫も合わせて1万頭以上いることも事実です(fig1: 犬・猫の引取り及び負傷動物等の収容並びに処分の状況:殺処分数の①と②)。この数を減らすことが殺処分数0へのアプローチの一つです。こう思うと、「こんな事してもどうせ何も変わらないんでしょう?」という人もやる気になってくれるのではないでしょうか。

まとめ

・すやすや眠る猫をTwitterInstagramに「#とろねこチャレンジ」というハッシュタグと共に投稿すると、1投稿につき10円が保護猫の譲渡活動に寄付される。(kao 花王株式会社さんによる活動)

・猫を飼っていない人でも、この活動を広めることにより殺処分される猫を減らすことができる。

・一人何回でも参加可能、期間は2020年2月7日〜4月30日

猫を飼っていない私のような人でも、できることがあります。「リツイート」や「いいね」だけでもこの活動が広まる機会になり、どこかの猫の明日になります。


最後に、意見や感想についてはブログにコメントして頂いたり、twitter:@toshiakisan1127 までお願いします。丁寧なQ&Aが花王のホームページにありますので、それも見てください。(なぜ猫だけ?動物より先に人への寄付が必要では?仲介業者はいるの?どうせ広告活動じゃないの?…etc.)

「#とろねこチャレンジ」

大学院入試、合否発表待ちです。

さっちゃんです。

大学院入試が終わって、合否発表の9/6(金)までソワソワしています。
誰かと話して気を紛らしたいのですが、生憎日々の話し相手はコンビニ店員しかいないので一人寂しく本を読んでます。今日はレシートがいらないというお話をしました。

院試が終わってから新しく量子系の非平衡系にチャレンジしているんですが、非平衡系はやばいという噂通り、簡単な系なのに計算量が膨大です。(計算中に何がしたいのかを見失ってしまわないように気をつけながら読んでます。)

大学院入試の細かい話(勉強、筆記の感触、面接で聞かれた事)などはすでに書いたのですが、精神的にダメージを受ける人がいるかもしれないので合否発表後に公開します。

私の第1希望は素粒子理論で第2希望は物性理論なんですが、正直どっちでもいい(どちらも面白そうでやりたいことがある)のでとにかく大学院に行きたいです。

一般相対性理論って何?

本稿の対象者:物理に興味のある人、広大な宇宙に思いを馳せる人、物理学科B1、B2、B3


本稿の目的:一般相対論が重力理論であることを知る、Einstein方程式が物理的に何を言っているのかを知る。

Einstein方程式
R_{\mu\nu}-\frac{1}{2}Rg_{\mu\nu}=\frac{8\pi G}{c^4}T_{\mu\nu}

はじめに

みなさんこんばんみ〜☆(深夜3時)
進捗いかが??いい感じ??

今回は、1916年にEinsteinという人が提唱した理論、一般相対性理論についてお話していこうと思います。私のようなひよっこがこのような記事を書くというのは大変恐縮なのですが、やっちゃうぞ☆(物理の人はよければコメントしてください。この表現よくないよ〜とか。)

さて、この記事では数式は一つしか出ません。都市伝説によると、一般向けの本は数式が一つ出てくるたびに売上が10%落ちるそうです。私も、よく分からん数式を出されたらそっと本を置きますね。今回出る数式はこれ一本!なので売上は10%しか落ちない!素晴らしい!


Einstein方程式
R_{\mu\nu}-\frac{1}{2}Rg_{\mu\nu}=\frac{8\pi G}{c^4}T_{\mu\nu}


はい10%帰った〜!!来世は友達になろうぜ!

本稿の目的は、一般相対性理論とは何を言っているのかをなんとなく理解し、上の式をなんとなく理解しよう!ということです。さらに知りたい人にはそれ用の本を下においておきます。

(進んだ注釈:宇宙膨張のお話は出てこないので宇宙定数は0にしておきます。)

一般相対性理論って何?

最初に、一般相対論についてお話しましょう。一般相対性理論は、1916年にA.Einsteinによって発表されました。一般相対論は別名「重力理論」とも呼ばれ、重力という力(我々も今も感じております。)を記述する理論です。Einsteinは1905年に特殊相対論という理論も提唱していますが、その名の通り一般相対論は特殊相対論を包括するような理論です。(一般相対論の特別な場合が特殊相対論)



一般相対論以前に重力を扱う理論としては、Newtonが発見した万有引力の法則がありました。これはシンプルで、全ての物と物は引き合っていて、それを重力と呼んでいました。しかしEinsteinの提唱した新しい重力理論によると、重力は4次元時空(時間1次元+空間3次元)の歪みによって生じる力で、物体は物を引っ張るのではなく空間を曲げる働きをするんだということです。つまり、物体がある→空間が曲がる→空間の曲がりが伝わって物体が動く、という因果があるとEinsteinは言いました。


f:id:physics-heibon:20190512192002j:plain
物質が4次元時空を歪めるイメージ。

しかも一般相対性理論の帰結として、重力によって光は曲げられるというのです。これは今日、重力レンズという効果で実証されています。アインシュタインすごい。

f:id:physics-heibon:20190605032603j:plain
重力レンズのイメージ。一つの光源から出た光が曲げられて、上下左右にあるように見える。


さらに最近だと、重力波の観測は2017年にノーベル物理学賞を受賞しました。

f:id:physics-heibon:20190605032941j:plain
重い星と重い星が合体する時に、回りながら時空の歪みを伝搬する様子。[1]

そして今年の5月、ブラックホールの直接観測に成功しました。これらは全て100年ほど前に一般相対論が予言したことです。アインシュタインすごい。

f:id:physics-heibon:20190605033429j:plain
インターステラーブラックホールのイメージ。かっこいい。


Einstein方程式って何?

ではここではEinstein方程式とは何かを見ましょう。こちらです。

Einstein方程式
R_{\mu\nu}-\frac{1}{2}Rg_{\mu\nu}=\frac{8\pi G}{c^4}T_{\mu\nu}

なるほどわからん。まずこれを眺めて思うのは、R, g, T, \pi, G, c という文字と、なにやら \mu \nuといった添字がついているということが分かります。一つ一つ解読していきます。

まず g という文字、これは計量といって、その時空の性質を規定する、時空の最も基本的な量です。これは例えば平面や球面などにはそれぞれ違ったgが与えられます。さらにこのgというのは"局所的な"量です。つまり、位置や時間によってその表式は変わっていきます。要するに、重力というのは一瞬で伝わらないよってことです。(これが因果律を破らないために必要。)この g が分かれば、空間の曲がり具合などが記述できます。

次に R という量、これは空間がどれだけ曲がっているかを表す量です。これもgと同じく局所的な量で、その具体的な式は g を用いて表されます。

次に T という量、これは物体のエネルギーを表しています。アインシュタインが1905年に提唱した特殊相対論によると、全ての物体はそこにいるだけで莫大なエネルギーを持っています。これを静止エネルギーといいます。したがって、物体はそこにいるだけでこのTという文字の計算に寄与してきます。
残りの\pi,G,cはそれぞれ円周率、重力定数、光速なんですが、まぁ比例定数みたいなもんです。

さて、ここまでで文字の説明が終わりました。g,R は空間を規定する量、Tは物質のエネルギーを表します。あと、\mu\nu の添字はテンソルという量を表すのですが、ここでは行列の成分だと思って差し支えないです。(行列を知らなくても、これらの添字はただの番号だと思ってくれれば良いです。)

結局、Einstein方程式の表す意味は、結局こういうことになります。

(空間の曲がり具合) = (物質のエネルギー)

つまり、物質があれば空間が曲がり、空間が曲がっていればそこに物質があるだろうという式です。これが一般相対性理論の真髄です。

Einstein方程式というのは空間の曲がりと物質を直接結びつける式です。例えば地球があるからその周りの時空は歪み、その歪んだ時空に我々は落ちています。それを我々は重力と呼んでいるのです。

まとめと本の紹介

一般相対論とは重力を記述する理論で、物体があれば空間が歪み、その歪みによって我々は落ちていく(引っ張られる用に感じる)のでした。そしてEinstein方程式とは、空間の曲がり具合と物質のエネルギーを結びつける方程式でした。


さて、上記の文に納得がいけば、僕の勝ちです。しかし負けず嫌いな、知的好奇心旺盛なあなたには、以下の本をおすすめします。(追記:本のオススメをしたらつい書きすぎてしまいました。これはおまけなので見なくてもいいです。)


ブラックホールと時空の方程式:15歳からの一般相対論

ブラックホールと時空の方程式:15歳からの一般相対論

一般相対論を勉強したいと思った時に、まず苦労するのが数学です。これは物理学科でも苦労します。本書は、まず「ブラックホールを記述する数式を理解したい」という明確なモチベーションから入ります。パラパラとめくると最初にシュバルツシルト計量という難しい式が出てくるので面食らうかもしれませんが、その式はこの本の最終到達地点ですので心配しないでください。この本は15歳でもわかるように三平方の定理から微分や行列についても書かれていて、最後はブラックホールの話までしてくれます。この記事で扱ったg やEinstein方程式についても丁寧に解説されており(もちろん15歳でもわかるような)、一般相対論を全く知らない人でも頑張ってかじりつける本だと思いました。本当に三平方の定理や「速さってなんだっけ、速度ってなんだっけ」から始まるので、文系理系問わず読めると思います。5章では特殊相対論について学びます。ここから少しむずかしいかもしれませんが、ちゃんと行列とはなにか、行列の掛け算はどうなるのかを丁寧に説明しながら話が進むので、ゆっくりやればいいと思います。6章では空間が曲がっているということを数学的に表す方法を学びます。個人的にここが難所だと思うので、紙とペンを持って追っていったほうがいいと思います。もちろん丁寧に丁寧に説明されています。7章でようやく一般相対論が説明されます。この記事で扱ったことがもっと詳しく書いています。8章でブラックホールを記述する計量である、シュバルツシルト解に到達します。そこから見える景色というのは絶景でしょう。

(実際に一度で全て読み通す必要はなく、難しいなと思ったら後は積読したり周りの物理学徒に聞いたりするといいです。私にDMとばしてもらえば一緒に考えます。一人で全部わかる物理の本などないと思っています。)

また、Amazonのレビューにもあるように、まだ一般相対論を学んでいない物理学徒にもおすすめします。テンソルについてや、計量が与えられたときの接続係数の泥臭い計算も載っています。(僕は一年生の頃テンソルが何か分からなくて暴れていました。)


他にも一般相対論によって彗星の軌道を調べたり、ビッグバン後の宇宙がどのように膨張してきたか、皆既日食によってどれくらい光は曲げられるか、ブラックホール周りのカオス、ブラックホール電荷があったら、ブラックホール角運動量を持ったらどうなるか(この間観測されたブラックホールは、ブラックホール周りのガスについて流体シミュレーションと見比べて見るとどうも角運動量を持ってそうらしいですね。)など、面白い話はもっといっぱいあります。


では、私は寝ます。おやすみなさい。



Reference
[1]重力波とは? « KAGRA 大型低温重力波望遠鏡

曲がった空間での電磁ポテンシャルの運動方程式

本稿の対象者:一般相対論を学んでいる最中の人、一般相対論の計算を覗いて見たい人
本稿の目的:電磁場のラグランジアン密度


\begin{equation}
\mathcal{L}=-\frac{1}{4\mu_0}F^{\mu\nu}F_{\mu\nu}+A_\mu j^\mu
\end{equation}

に対して、A_\mu を力学変数と見たEuler-Lagrange方程式

 
\begin{equation}
\partial_\nu\frac{\partial(\sqrt{-g}\mathcal{L})}{\partial(\partial_\nu A_\mu)}-\frac{\partial(\sqrt{-g}\mathcal{L})}{\partial A_\mu}=0
\end{equation}

に先程のラグランジアン密度をぶちこむと次の式になることを導出します。

 
\begin{equation}
g^{\alpha\beta}A^\mu_{~~;\alpha ; \beta}-R^\mu_{~~\alpha}A^\alpha=\mu_0 j^\mu
\end{equation}

はじめに

この計算は少し苦労したので(本当は大変苦労しましたが、できてしまうと簡単に思える不思議です。普通に一般相対論を勉強している方ならすぐにできたりするんでしょうかね。)、他の人も苦労しないようにここに書いておきます。センスのある方は、より簡単な方法があればコメントしてください。式変形については丁寧に解説したつもりなので、やったことない人は手で追いながら読んでいただけると幸いです。行間は少し空きますが、手を動かせばできるくらいの行間にしたつもりです。わからないところがあればコメントしてください。

本稿はまず定義や前提知識をまとめておいて、4つのパートに分けて示します。

記法・定義

出てくる文字について説明します。特別な記法はないので、軽く確認します。

\mu_0は真空の透磁率です。g_{\mu\nu}は計量です。

F_{\mu\nu}:=A_{\nu~;\mu}-A_{\mu~;\nu}=\partial_\mu A_\nu-\partial_\nu A_\nu(最後の等式は共変微分の定義から計算できる。とっても大事。) は電磁場テンソルであり、セミコロンはその方向への共変微分です。F^{\mu\nu}:=g^{\mu\alpha}g^{\nu\beta}F_{\alpha\beta} で、A^{\mu} は電磁ポテンシャルで j^\mu は四元電流密度です。さらに R^\mu_{~~\nu}:=g^{\mu\alpha}R_{\alpha\nu}=g^{\mu\alpha}R^\beta_{~~\alpha\beta\nu} はリッチテンソル(の足をあげたやつ)です。

曲がった空間においては、電磁ポテンシャルに対するローレンツ条件は次のように共変微分を用いて書かれることは既知とします。

A^\alpha_{~~;\alpha}=0

さらに、\Gammaは接続係数で、\Gamma_{\alpha,\beta\gamma}:=g_{\alpha\delta}\Gamma^\delta_{~~\beta\gamma} です。

ステップ1

まずは簡単なやつから始めましょう。ラグランジアン密度の第1項はA_\muには陽に依らないので、Euler-Lagrange方程式の第二項は簡単に計算できそうです。


\begin{equation}
\frac{\partial(\sqrt{-g}\mathcal{L})}{\partial A_\mu}=\sqrt{-g}j^\mu
\end{equation}

当たり前ですが、計量はA_\muに陽に依らないので微分はスルーします。これを本稿のゴールと比較して思うのは、他の項も\sqrt{-g}という因子が掛かりそうだな、と予想できます。これは計算の方針の助けにもなりそうです。

ステップ2

ステップ2では次を示します。

\begin{equation}\frac{\partial(F^{\alpha\beta}F_{\alpha\beta})}{\partial(\partial_\nu A_\mu)}=-4F^{\mu\nu}
\end{equation}

これは電磁場テンソルの足を下におろして、愚直に微分します。(ここはもう少し工夫できそう。)

\begin{eqnarray}
\frac{\partial(F^{\alpha\beta}F_{\alpha\beta})}{\partial(\partial_\nu A_\mu)} &=& g^{\alpha\gamma}g^{\beta\delta}\frac{\partial(F_{\gamma\delta}F_{\alpha\beta})}{\partial(\partial_\nu A_\mu)}\\
&=& g^{\alpha\gamma}g^{\beta\delta}\frac{\partial}{\partial(\partial_\nu A_\mu)}\{(\partial_\gamma A_\delta-\partial_\delta A_\gamma)(\partial_\alpha A_\beta-\partial_\beta A_\alpha)\}\\
&=& g^{\alpha\gamma}g^{\beta\delta}\{(\delta_\gamma^\nu \delta_\delta^\mu-\delta_\delta^\nu \delta_\gamma^\mu)(\partial_\alpha A_\beta-\partial_\beta A_\alpha)\\
&&+(\partial_\gamma A_\delta-\partial_\delta A_\gamma)(\delta_\alpha^\nu \delta_\beta^\mu-\delta_\beta^\nu \delta_\alpha^\mu)\}\\
&=&2(g^{\alpha\nu}g^{\beta\mu}-g^{\alpha\mu}g^{\beta\nu})(\partial_\alpha A_\beta-\partial_\beta A_\alpha)\\
&=&2(F^{\nu\mu}-F^{\mu\nu})\\
&=&-4F^{\mu\nu}
\end{eqnarray}
1つ目の等号は電磁場テンソルの足をおろして計量を微分の外に出しました。2つ目の等号は電磁場テンソルの表式を代入しただけです。「記法・定義」を参照ください。3つ目の等号はライプニッツ則です。4つ目は計量を分配法則してダミーの添字を入れ替えました。後は簡単ですね。ステップ2でした。

ステップ3

ステップ3では次を示します。左辺はEuler-Lagrange方程式の第一項です。


\begin{eqnarray}
\partial_\nu\frac{\partial(\sqrt{-g}\mathcal{L})}{\partial(\partial_\nu A_\mu)}&=&\frac{\sqrt{-g}}{\mu_0}\{-g^{\nu\alpha}A^\mu_{~~;\alpha;\nu}+ A^{\nu~;\mu}_{~~~~~~;\nu}\}
\end{eqnarray}

中括弧の中の第一項は本稿のゴールの第一項と同じ式です。もう少しです。がんばりましょう。


\begin{eqnarray}
\partial_\nu\frac{\partial(\sqrt{-g}\mathcal{L})}{\partial(\partial_\nu A_\mu)}&=&\frac{1}{\mu_0}\partial_\nu(\sqrt{-g}F^{\mu\nu})\\
&=&\frac{\sqrt{-g}}{\mu_0}\{\frac{1}{2}g^{\alpha\beta}(\partial_\nu g_{\alpha\beta})F^{\mu\nu}\\
&&+(F^{\mu\nu}_{~~~~~;\nu}-\Gamma^{\mu}_{~~\alpha\nu}F^{\alpha\nu}-\Gamma^{\nu}_{~~\alpha\nu}F^{\mu\alpha})\}\\
&=&\frac{\sqrt{-g}}{\mu_0}\{\frac{1}{2}g^{\alpha\beta}(\Gamma_{\alpha,\beta\nu}+\Gamma_{\beta,\alpha\nu})F^{\mu\nu}\\
&&+(A^{\nu~;\mu}_{~~~~~~;\nu}-A^{\mu~;\nu}_{~~~~~~;\nu})-\Gamma^{\nu}_{~~\alpha\nu}g^{\mu\gamma}g^{\nu\delta}F_{\gamma\delta}\}\\
&=&\frac{\sqrt{-g}}{\mu_0}\{-g^{\nu\alpha}A^\mu_{~~;\alpha;\nu}+ A^{\nu~;\mu}_{~~~~~~;\nu}\}
\end{eqnarray}

1つ目の等号はステップ2を使いました。2つ目の等号はライプニッツ即で展開した後、第一項は次の式を使いました。第二項は偏微分を無理やり共変微分になおしてみました。この方がスッキリしてますね。まあステップ4で展開するんですけどね。

\partial_\nu\sqrt{-g}=\frac{1}{2}\sqrt{-g}g^{\alpha\beta}\partial_\nu g_{\alpha\beta}

計量の行列式微分についてはこの記事を御覧ください。
physics-heibon.hatenablog.com

3つ目の等号は、次の関係式を用いました。

\partial_\nu g^{\alpha\beta} = \Gamma_{\alpha,\nu\beta}+\Gamma_{\beta,\nu\alpha}

これはベクトルの長さが平行移動によって変化しないという性質(平行移動の定義?)から来たものなので、一般的に成り立ちます。「記法・定義」でも書きましたが、\Gamma_{\alpha,\beta\gamma}:=g_{\alpha\delta}\Gamma^\delta_{~~\beta\gamma} です。残りの項は代入したり足を下げたりしただけです。

4つ目の等号は、ゴールの形になるように足を下げただけです。ここまででステップ3が終わりました。後少しです。がんばりましょう。

ステップ4

後少しと言ったな?あれは嘘だ。

冗談です。あとやることはシンプルで、ステップ1、3で出した式とゴールを見比べると、次を示せばいいことに気が付きます。

A^{\nu~;\mu}_{~~~~~~~;\nu}=R^{\mu}_{~~\nu}A^\nu

これはシンプルで、共変微分を定義通り計算し、ローレンツ条件を使えば終わりです。

\begin{eqnarray}
A^{\nu~;\mu}_{~~~~~~~;\nu}&=&g^{\mu\alpha}A^\nu_{~~;\alpha;\nu}\\
&=&g^{\mu\alpha}\{\partial_\nu(A^{\nu}_{~~;\alpha})+\Gamma^\nu_{~~\beta\nu}A^\beta_{~~;\alpha}-\Gamma^\beta_{~~\alpha\nu}A^\nu_{~~;\beta}\}\\
&=&g^{\mu\alpha}\{\partial_\nu(\partial_\alpha A^\nu+\Gamma^\nu_{~~\beta\alpha}A^\beta)+\Gamma^\nu_{~~\beta\nu}(\partial_\alpha A^\beta+\Gamma^\beta_{~~\gamma\alpha}A^{\gamma})\\
&&-\Gamma^\beta_{~~\alpha\nu}(\partial_\beta A^\nu+\Gamma^\nu_{~~\gamma\beta} A^\gamma)\}\\
&=&g^{\mu\alpha}\{\partial_\alpha \partial_\nu A^\nu+(\partial_\nu \Gamma^\nu_{~~\beta\alpha})A^\beta+\Gamma^\nu_{~~\beta\alpha}(\partial_\nu A^\beta)\\
&&+\Gamma^\nu_{~~\beta\nu}(\partial_\alpha A^\beta)+\Gamma^\nu_{~~\beta\nu}\Gamma^\beta_{~~\gamma\alpha}A^\gamma-\Gamma^\beta_{~~\alpha\nu}(\partial_\beta A^\nu)-\Gamma^\beta_{~~\alpha\nu}\Gamma^\nu_{~~\gamma\beta}A^\gamma\}\\
&=&g^{\mu\alpha}\{\partial_\alpha(-\Gamma^\beta_{~~\nu\beta}A^\nu)+(\partial_\nu \Gamma^\nu_{~~\beta\alpha})A^\beta+\Gamma^\nu_{~~\beta\alpha}(\partial_\nu A^\beta)\\
&&+\Gamma^\nu_{~~\beta\nu}(\partial_\alpha A^\beta)+\Gamma^\nu_{~~\beta\nu}\Gamma^\beta_{~~\gamma\alpha}A^\gamma-\Gamma^\beta_{~~\alpha\nu}(\partial_\beta A^\nu)-\Gamma^\beta_{~~\alpha\nu}\Gamma^\nu_{~~\gamma\beta}A^\gamma\}\\
&=&g^{\mu\alpha}\{\partial_\nu \Gamma^\nu_{~~\beta\alpha}-\partial_\alpha\Gamma^\gamma_{~~\beta\gamma}+\Gamma^\nu_{~~\gamma\nu}\Gamma^\gamma_{~~\beta\alpha}-\Gamma^\gamma_{~~\alpha\nu}\Gamma^\nu_{~~\beta\gamma}\}A^\beta\\
&=&g^{\mu\alpha}R_{\beta\alpha}A^\beta\\
&=&R^\mu_{~~\nu}A^\nu
\end{eqnarray}

1つ目の等号は足を下げただけです。2つ目、3つ目の等号は共変微分の定義通り計算しただけです。4つ目の等号はライプニッツ則です。5つ目の等号では「記法・定義」でも書いたローレンツ条件
A^\nu_{~~\nu}=\partial_\nu A^\nu +\Gamma^\nu_{~~\alpha\nu}A^\alpha=0
を用いました。あとは消える項をズバズバ消すだけです。お疲れ様です。

まとめ

以上のステップ1,2,3,4から、ラグランジアン密度が

\begin{equation}
\mathcal{L}=-\frac{1}{4\mu_0}F^{\mu\nu}F_{\mu\nu}+A_\mu j^\mu
\end{equation}

のときの、曲がった空間での電磁ポテンシャルの運動方程式

 
\begin{equation}
g^{\alpha\beta}A^\mu_{~~;\alpha ; \beta}-R^\mu_{~~\alpha}A^\alpha=\mu_0 j^\mu
\end{equation}

が示せました。

まだ工夫の余地がありそうなので、いい計算方法がありましたら教えてください。また、タイプミスがあれば教えていただければ幸いです。(Twitter: @toshiakisan1127)

Reference: 「相対性理論佐藤勝彦
https://www.amazon.co.jp/相対性理論-岩波基礎物理シリーズ-9-佐藤-勝彦/dp/4000079298www.amazon.co.jp

計量テンソルの微分の公式

本稿の目的: 計量テンソル微分の公式を導出する

本稿の対象: 一般相対論の初歩を知っている人

Contents

 

本稿のゴール

 

計量の微分について、次の3つの公式が成り立つ。

 g_{\mu\nu}\frac{\partial g^{\mu\nu}}{\partial x^\sigma}= -g^{\mu\nu}\frac{\partial g_{\mu\nu}}{\partial x^\sigma}

 \frac{\partial g^{\mu\nu}}{\partial x^\sigma}= -g^{\mu\alpha}g^{\nu\beta}\frac{\partial g_{\alpha\beta}}{\partial x^\sigma}

 \frac{\partial g(x)}{\partial x^\sigma}=g(x)g^{\mu\nu}\frac{\partial g_{\mu\nu}}{\partial x^\sigma}

ここで g(x):=\det gである。①、②はライプニッツ則などで簡単に導出できるので、③について見ていくことにする。

③の導出

③について、より一般的に、対角化可能な行列 Mについて考える。計量は局所ローレンツ系の要請によっていつでもミンコフスキー計量にできるので、対角化可能な行列の一つである。行列を無理やり指数関数に直すと、
 \begin{eqnarray}
\det M &=& \exp \left( \ln \det M \right)\\
&=&\exp\left(\ln \prod_i \lambda_i \right)~~~~~(\lambda_i : M の固有値)\\
&=&\exp\left(\sum_i\ln \lambda_i\right)\\
&=&\exp\left({\rm Tr} \ln M\right)
\end{eqnarray}
ここで1行目から2行目には、Mが対角化可能という性質と\det AB= \det A \det Bを用いた。


したがって、
 \begin{eqnarray}\delta \det M &=& \exp\left({\rm Tr}\ln M\right)~~ \delta \left({\rm Tr}\ln M\right)\\
&=&\det M ~ {\rm Tr}\left(M^{-1}\delta M\right)
\end{eqnarray}
これに M=gを対応させ、 g_{\mu\nu}の逆行列がg^{\mu\nu}であることを思い出せば、③が導ける。

コメント

佐藤勝彦さんの本では余因子展開とかしてるけど、こっちの方がシンプルでいいですね。
f:id:physics-heibon:20190512192002j:plain

完全流体のエネルギー運動量テンソル

本稿の目的: 完全流体のエネルギー運動量テンソルを導出する
本稿の対象: 特殊相対論に触れたことがある人

目標

四元速度 u^\mu で動く完全流体のエネルギー運動量テンソルは次のようになる。
T^{\mu\nu}=\left(\rho+\frac{p}{c^2}\right)u^\mu u^\nu+p \eta^{\mu\nu}
ここで \rho:流体の密度、p:流体の圧力、\eta={\rm diag}(- + + +)である。
これは一般相対論の本でよく見かけるものであり、ゼミでいい導出を見たのでそれを共有する。(多分これが一般的なのかも。)

問題設定

x系で静止している完全流体に対して、四元速度u^\muで動く慣性系から見たエネルギー運動量テンソルを求める。

f:id:physics-heibon:20190510184502j:plain
こういう状況を考える。

静止系で見る完全流体は次の条件を満たす。
エネルギー保存:\frac{\partial(\rho c^2)}{\partial t}=0
運動量保存:\frac{\partial p}{\partial x^i}=0~~(i=1,2,3)
したがって、静止系でのエネルギー運動量テンソルは次のように書ける。
T^{\mu\nu}=\begin{pmatrix}
\rho c^2 & 0 & 0 & 0 \\
0 & p & 0 & 0 \\
0 & 0 & p & 0\\
0 & 0 & 0 & p\\
\end{pmatrix}

別の慣性系でのエネルギー運動量テンソル

静止系でのエネルギー運動量テンソルは次のように書ける。(簡単にチェックできる。)
T^{\mu\nu} =(\rho c^2 +p)\delta^{\mu}_0\delta^\nu_0+p\eta^{\mu\nu}.
後はx^\prime系でのエネルギー運動量テンソルは、Lorenz変換によって求められる。
\begin{eqnarray}
(T^\prime)^{\mu\nu}&=&\Lambda^\mu_\rho\Lambda^\nu_\sigma T^{\rho\sigma}\\
&=&\Lambda^\mu_0\Lambda^\nu_0(\rho c^2+p)+p\eta^{\mu\nu}~~~(\because \eta~はローレンツ不変)\\
&=&(\rho c^2+p)(u^\mu/c)(u^\nu/c)+p\eta^{\mu\nu}
\end{eqnarray}
ここで2行目から3行目は次を用いた。
\begin{eqnarray}
u^\mu&=&\Lambda^\mu_\nu v^\nu=\Lambda^\mu_0c,\\
{\rm ただし、}v^\nu:&=&\frac{{\rm d}x^\nu}{{\rm d}\tau} =\frac{{\rm d}}{{\rm d}\tau}(c\tau,0,0,0)=(c,0,0,0).
\end{eqnarray}

以上で、四元速度 u^\muで動く完全流体のエネルギー運動量テンソル
T^{\mu\nu}=\left(\rho+\frac{p}{c^2}\right)u^\mu u^\nu+p \eta^{\mu\nu}
となることが示された。

コメント

すごい簡単。すごーい。この式は一般相対論の本には必ずと言っていいほど載っているんですが、与えられるだけで導出が書いていない本が多い印象です。私の頭が悪いだけかもしれません。わーい。