用Python获取史瓦西时空中克氏符的分量

编程入门 行业动态 更新时间:2024-10-23 05:45:08

用Python获取史瓦西时空中克氏符的<a href=https://www.elefans.com/category/jswz/34/1766785.html style=分量"/>

用Python获取史瓦西时空中克氏符的分量

文章目录

    • 三维球面坐标
    • 史瓦西时空

三维球面坐标

Einsteinpy中提供了克氏符模型,可通过ChristoffelSymbols获取。简单起见,先以最直观的三维球面为例,来用Einsteinpy查看其克氏符的表达形式。

三维球面的度规张量可表示为

g 00 = 1 g 11 = r 2 g 22 = r 2 sin ⁡ 2 θ g i j = 0 , i ≠ j \begin{aligned} g_{00}&=1\\ g_{11}&=r^2\\ g_{22}&=r^2\sin^2\theta\\ g_{ij}&=0, i\not=j \end{aligned} g00​g11​g22​gij​​=1=r2=r2sin2θ=0,i=j​

克氏符这个概念是从度规张量的协变导数为0的事实中得到的,换言之,可通过度规来得到克氏符的分量表达式

import numpy as np
import sympy
from einsteinpy.symbolic import MetricTensor, ChristoffelSymbols, RiemannCurvatureTensorr, th, phi = sympy.symbols('r theta phi')
# 球坐标度规
metric = np.diagflat([1,r**2,(r**2)*(sympy.sin(th)**2)])
m_obj.tensor()
# [[1, 0, 0], [0, r**2, 0], [0, 0, r**2*sin(theta)**2]]
ch = ChristoffelSymbols.from_metric(m_obj)
sympy.latex(ch.tensor())

打印出来如下

[ [ 0 0 0 0 − r 0 0 0 − r sin ⁡ 2 ( θ ) ] [ 0 1 r 0 1 r 0 0 0 0 − sin ⁡ ( θ ) cos ⁡ ( θ ) ] [ 0 0 1 r 0 0 cos ⁡ ( θ ) sin ⁡ ( θ ) 1 r cos ⁡ ( θ ) sin ⁡ ( θ ) 0 ] ] \left[\begin{matrix}\left[\begin{matrix}0 & 0 & 0\\0 & - r & 0\\0 & 0 & - r \sin^{2}{\left(\theta \right)}\end{matrix}\right] & \left[\begin{matrix}0 & \frac{1}{r} & 0\\\frac{1}{r} & 0 & 0\\0 & 0 & - \sin{\left(\theta \right)} \cos{\left(\theta \right)}\end{matrix}\right] & \left[\begin{matrix}0 & 0 & \frac{1}{r}\\0 & 0 & \frac{\cos{\left(\theta \right)}}{\sin{\left(\theta \right)}}\\\frac{1}{r} & \frac{\cos{\left(\theta \right)}}{\sin{\left(\theta \right)}} & 0\end{matrix}\right]\end{matrix}\right] ​000​0−r0​00−rsin2(θ)​ ​​ ​0r1​0​r1​00​00−sin(θ)cos(θ)​ ​​ ​00r1​​00sin(θ)cos(θ)​​r1​sin(θ)cos(θ)​0​ ​​

这就是克氏符的真实面貌。

史瓦西时空

下面来搞一下史瓦西时空中的克氏符,而在此之前,先给出史瓦西时空的度规

t, r, th, phi = sympy.symbols("t r theta phi")
G, M, c, a = sympy.symbols("G M c a")
c2 = c**2
# using metric values of schwarschild space-time
# a is schwarzschild radius
list2d = np.diagflat([1-a/r, -1 / ((1 - (a/r)) * c2), -1 * (r**2)/c2,-1 * (r**2) * (sympy.sin(th)**2) / c2])
sch = MetricTensor(list2d, [t, r, th, phi])
sympy.latex(sch.tensor())

即其度规张量为

[ − a r + 1 0 0 0 0 − 1 c 2 ( − a r + 1 ) 0 0 0 0 − r 2 c 2 0 0 0 0 − r 2 sin ⁡ 2 ( θ ) c 2 ] \left[\begin{matrix}- \frac{a}{r} + 1 & 0 & 0 & 0\\0 & - \frac{1}{c^{2} \left(- \frac{a}{r} + 1\right)} & 0 & 0\\0 & 0 & - \frac{r^{2}}{c^{2}} & 0\\0 & 0 & 0 & - \frac{r^{2} \sin^{2}{\left(\theta \right)}}{c^{2}}\end{matrix}\right] ​−ra​+1000​0−c2(−ra​+1)1​00​00−c2r2​0​000−c2r2sin2(θ)​​

上式中, a a a为史瓦西半径, M M M为天体质量。

接下来,就可以请出史瓦西空间中的克氏符了

sch_ch = ChristoffelSymbols.from_metric(sch)
sympy.latex(sch_ch.tensor())

[ [ 0 a 2 r 2 ( − a r + 1 ) 0 0 a 2 r 2 ( − a r + 1 ) 0 0 0 0 0 0 0 0 0 0 0 ] [ − a ( a c 2 2 r − c 2 2 ) r 2 0 0 0 0 a ( a c 2 2 r − c 2 2 ) c 2 r 2 ( − a r + 1 ) 2 0 0 0 0 2 r ( a c 2 2 r − c 2 2 ) c 2 0 0 0 0 2 r ( a c 2 2 r − c 2 2 ) sin ⁡ 2 ( θ ) c 2 ] [ 0 0 0 0 0 0 1 r 0 0 1 r 0 0 0 0 0 − sin ⁡ ( θ ) cos ⁡ ( θ ) ] [ 0 0 0 0 0 0 0 1 r 0 0 0 cos ⁡ ( θ ) sin ⁡ ( θ ) 0 1 r cos ⁡ ( θ ) sin ⁡ ( θ ) 0 ] ] \left[\begin{matrix}\left[\begin{matrix}0 & \frac{a}{2 r^{2} \left(- \frac{a}{r} + 1\right)} & 0 & 0\\\frac{a}{2 r^{2} \left(- \frac{a}{r} + 1\right)} & 0 & 0 & 0\\0 & 0 & 0 & 0\\0 & 0 & 0 & 0\end{matrix}\right] \left[\begin{matrix}- \frac{a \left(\frac{a c^{2}}{2 r} - \frac{c^{2}}{2}\right)}{r^{2}} & 0 & 0 & 0\\0 & \frac{a \left(\frac{a c^{2}}{2 r} - \frac{c^{2}}{2}\right)}{c^{2} r^{2} \left(- \frac{a}{r} + 1\right)^{2}} & 0 & 0\\0 & 0 & \frac{2 r \left(\frac{a c^{2}}{2 r} - \frac{c^{2}}{2}\right)}{c^{2}} & 0\\0 & 0 & 0 & \frac{2 r \left(\frac{a c^{2}}{2 r} - \frac{c^{2}}{2}\right) \sin^{2}{\left(\theta \right)}}{c^{2}}\end{matrix}\right] & \left[\begin{matrix}0 & 0 & 0 & 0\\0 & 0 & \frac{1}{r} & 0\\0 & \frac{1}{r} & 0 & 0\\0 & 0 & 0 & - \sin{\left(\theta \right)} \cos{\left(\theta \right)}\end{matrix}\right] & \left[\begin{matrix}0 & 0 & 0 & 0\\0 & 0 & 0 & \frac{1}{r}\\0 & 0 & 0 & \frac{\cos{\left(\theta \right)}}{\sin{\left(\theta \right)}}\\0 & \frac{1}{r} & \frac{\cos{\left(\theta \right)}}{\sin{\left(\theta \right)}} & 0\end{matrix}\right]\end{matrix}\right] ​02r2(−ra​+1)a​00​2r2(−ra​+1)a​000​0000​0000​ ​−r2a(2rac2​−2c2​)​000​0c2r2(−ra​+1)2a(2rac2​−2c2​)​00​00c22r(2rac2​−2c2​)​0​000c22r(2rac2​−2c2​)sin2(θ)​​ ​​ ​0000​00r1​0​0r1​00​000−sin(θ)cos(θ)​ ​​ ​0000​000r1​​000sin(θ)cos(θ)​​0r1​sin(θ)cos(θ)​0​ ​​

更多推荐

用Python获取史瓦西时空中克氏符的分量

本文发布于:2024-03-14 19:53:43,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1737208.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:分量   时空   Python   史瓦西   中克氏符

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!