상대성 이론은 잘 모르지만 파이썬이 던지는 공의 행방을 알아봤어요~

10635 단어 상대론Python

개요


만약 네가 광속으로 폭발하는 비행선에서 공을 던지면 어떻게 될지 파이썬의 도움을 빌려 이해하고 싶다.

상대론


저명한 상대론
로켓이 광속에 가까워질수록 시간이 느려진다
이런 거 있지?
포섬 효과야?
그렇다면 광속에 가까운 로켓에서 공을 앞으로 던지면 어떨까?
시간의 흐름이 느리기 때문에 대곡상평 투수의 호속구도 상당히 느려질 것이다.

갈릴레이 변환


그럼, 갈릴레이 변환이 있습니다.
u = v + w
종교 심판으로 유명한 갈릴레오 갈릴레오 선생이 400년 전 고민한 공식이다. 속도 w로 이동하는 마차의 창문에서 전방으로 속도 v로 사과를 던지면 v+w로 행인을 들이받는다는 뜻이다.너무 위험하니 그만두어라.

로렌즈 변환


사실 갈릴레이의 변환은 100% 정확한 것이 아니다.
300년 뒤인 1905년 아인슈타인 선생님은 이 점을 말씀하셨다.이것은 로렌즈에서 이 공식을 바꾸어 낸 것이다.
u = \frac{v + w}{1 + \frac{v  w}{c^2}}
갈릴레이 선생님보다 방식이 훨씬 복잡해요.
식에 나타난 c는 빛의 속도다.

Python


그럼 아인슈타인 선생님의 스타일을python에 던져서 대곡 투수의 공이 어떻게 되는지 봅시다.
그 전에 환경은

환경


Mac
Jupyter Notebook
Python3

계산하다


광속에 가까운 로켓 투구를 하기 전에 먼저 걸어가면서 투구하세요.
초당 1미터의 속도로 걷다.대곡 투수의 구속은 시속 165킬로미터이고 초속은 45.83미터이다.빠르다.
import math

# 光速 約30万キロメートル/s (メートルで計算)
speedOfLight = 299792458

#ローレンツ変換の関数(変換式から元の速度を引いたもの)
def convertSpeed(baseSpeed, throwSpeed):
    return (baseSpeed + throwSpeed) / (1 + baseSpeed * throwSpeed / speedOfLight ** 2) - baseSpeed

#歩きながらボールを投げる
speed = convertSpeed(1, 45.83)
print(speed)
계산에서 간단하게 보기 위해 공의 속도에서 걷는 속도를 줄였다.
상대론에 따라 운동하면 시간의 흐름이 느려지기 때문에 공의 속도는 45.83m보다 느려야 한다.
결과:
45.82999999999998 m/s
모범 사례를 찾습니다.
거의 변화가 없다.
사실 갈릴레이의 변환 오류는 300년 동안 아무도 눈치채지 못한 것은 일상적인 속도에서 로렌즈의 변환과 거의 차이가 없기 때문이다.

얼마나 빨리 움직여야 시간이 느려지는지 느낄 수 있을까요?


다음에 신칸센으로 투구합시다.
신칸센은 최고 시속 320킬로미터, 초속 88.88미터이다.
#新幹線に乗ってボールを投げる
speed = convertSpeed(88.88, 45.83)
print(speed)
45.82999999999387 m/s
공의 속도가 소수점 12위에서 마침내 느려졌다.
이렇게 되면 아무리 봐도 오차범위 내의 수준이다.
다음에 달 로켓을 타고 공을 던지게 합시다.
지구를 탈출하는 데 필요한 달 로켓의 속도는 시속 40300km, 초속 1194.44미터이다.매우 빠르다.
그러면 시간의 흐름이 느려지겠죠.
#ロケットに乗ってボールを投げる
speed = convertSpeed(11194.44, 45.83)
print(speed)
45.829999935836895 m/s
뭐야, 하나도 안 변했어?
달 로켓이라도 상대론이 일으킨 시간 흐름의 변화를 전혀 느낄 수 없다.
여기서부터 SF의 세계다.
스타워즈의 밀레니엄 독수리에 나타나게 하세요.

은하계에서 가장 빠른 우주선에서 공을 던지다


광속 20% 의 속도로 폭주할 우주선을 준비하다.
속도는 빠르지만 독수리호라면 여유가 있겠죠.
#光速の20%で移動する宇宙船に乗ってボールを投げる
speed = convertSpeed(60000000, 45.83)
print(speed)
43.99425957351923 m/s
했어!
대곡 투수의 공이 마침내 2미터 초당 느려졌다.
생각보다 안 좋아요.분명히 광속의 20%를 꺼냈어요.
독수리호의 속도를 더 높이자.다음은 광속의 40퍼센트다.
#光速の40%で移動する宇宙船に乗ってボールを投げる
speed = convertSpeed(120000000, 45.83)
print(speed)
38.48704135417938 m/s
광속의 40퍼센트의 맹렬한 속도로 움직여 마침내 공을 느낄 수 있을 정도로 느렸다.
그나저나 광속의 60퍼센트 아래에서 공은 초당 29미터 정도로 느리다.시속 104킬로미터.그래도 빠르지만

100% 광속으로 움직이는 우주선에서 공을 던지면...


그렇다면 광속으로 움직이면서 던지면 어떨까.
#光速の100%で移動するロケットに乗ってボールを投げる
speed = convertSpeed(speedOfLight, 45.83)
print(speed)
0 m/s
결과는 0미터였다.공이 대곡 투수의 손을 떠나지 않았다는 뜻이다.빛의 속도로 움직이면 시간이 멈추고 아무도 움직이지 못한다.말도 안 돼.

도표


우리들은 이전의 실험 결과를 도표로 만들자.
독수리호의 초속을 초당 1만 킬로미터로 설정하고 1000킬로미터마다 속도를 내자.
한 걸음 더 빨라질 때마다 투구 속도가 얼마나 느린지 측정해야 한다.
광속에 도달할 때까지 그것을 지속하다.
import math
# matplotlib をインラインで使用
%matplotlib inline
# ライブラリの読み込み
import matplotlib.pyplot as plt
from matplotlib.ticker import ScalarFormatter

# 光速 約30万キロメートル/s (メートルで計算)
speedOfLight = 299792458

#ローレンツ変換の関数(変換式から元の速度を引いたもの)
def convertSpeed(baseSpeed, throwSpeed):
    return (baseSpeed + throwSpeed) / (1 + baseSpeed * throwSpeed / speedOfLight ** 2) - baseSpeed

baseSpeedList = list()
convSpeedList = list()

#宇宙船の初速
baseSpeed = 10000000
#追加する速度
addSpeed = 100000
#ボールの速度
ballSpeed = 45.83

#宇宙船が光速に到達するまで速度を追加
while baseSpeed < speedOfLight:
    baseSpeedList.append(baseSpeed)
    convSpeedList.append(convertSpeed(baseSpeed, ballSpeed))
    baseSpeed += addSpeed

#グラフ
plt.xlabel("speed of millennium falcon (m/s)")
plt.ylabel("speed of Otani's ball (m/s)")
plt.plot(baseSpeedList, convSpeedList)
ax = plt.gca()
ax.yaxis.set_major_formatter(ScalarFormatter(useMathText=True))
ax.xaxis.set_major_formatter(ScalarFormatter(useMathText=True))
plt.show() 
결과의 도표.
세로축은 대곡 투수의 공 속도이고, 가로축은 독수리호의 속도다.

네가 그린 것은 매끄러운 곡선이다.
나는 대곡 투수의 공이 독수리호의 속도와 반비례하는 형식으로 느려졌다는 것을 안다.
그러나 똑같이 느려지는 것이 아니라 광속에 가까울수록 느려지는 비율이 크다.

명백한 일

  • 달 로켓을 타도 시간의 흐름은 거의 변하지 않는다
  • 천년 독수리호라면 시간이 늦어지는 것을 느낄 수 있다(광속의 40% 정도로 비행할 때)
  • 100% 광속으로 이동 시 시간 정지
  • 그럼 다음에 또 만나요~

    좋은 웹페이지 즐겨찾기