Przestrzenie i Metryki¶

Próby zrozumienia, przedstawienia i usystematyzowania zagadnienia.

In [11]:
import sympy as sp
from IPython.display import display, Markdown

m = """
## Metryka eklidesowa
<br>Prosta "normalna" przestrzeń zdefiniowana $ds^2=dx^2+dy^2+dz^2$
<br>przez tensor metryczny $ds^2=\delta_{ij} dx^i dx^j$  gdzie $\delta_{ij}$ to delta Kroneckiego jedynkowa
"""
display(Markdown(m))


a_x, a_y, a_z = sp.symbols('a_x a_z a_z')
b_x, b_y, b_z = sp.symbols('b_x b_y b_z')

a_s = sp.Matrix([a_x,a_y,a_z])
b_s = sp.Matrix([b_x,b_y,b_z])

a_n = a_s.subs([(a_x, 0), (a_y, 0), (a_z, 0)])
b_n = b_s.subs([(b_x, 1), (b_y, 1), (b_z, 1)])

u_s = b_s - a_s
u = b_n - a_n

g = sp.eye(3) # jedynkowa

ds2_s = u_s.T * g * u_s
ds2 = u.T * g * u
ds = sp.sqrt(ds2[0])

# Kod LaTeX do wyświetlenia w Jupyter Notebook

#def LatexPrze(text=''):
#    global latex_code

latex_code = fr"""
\begin{{array}}{{c}}
\Huge \text{{Współrzędne punktów przestrzeni}}
\\ \\ \Large A={sp.latex(a_s)}={sp.latex(a_n)};  B={sp.latex(b_s)}={sp.latex(b_n)}

\\ \\ \Huge \text{{Różnice współrzędnych przestrzeni}}
\\ \\ \Large  u=B-A={sp.latex(u_s)}={sp.latex(u)}

\\ \\ \Huge \text{{Tensor metryczny przestrzeni}} 
\\ \\ \Large g={sp.latex(g)}

\\ \\ \Huge \textbf{{Odległość w przestrzeni}} 
\\ \\ \Large ds^2=u^T*g*u={sp.latex(ds2_s)}={sp.latex(ds2)}; \; ds={sp.latex(ds)}
\end{{array}}
"""
display(Markdown(latex_code))
#    return latex_code

#LatexPrze()   

#l = LatexPrze()    
# Wyświetlenie w Jupyter Notebook
#display(Markdown(latex_code))

Metryka eklidesowa¶


Prosta "normalna" przestrzeń zdefiniowana $ds^2=dx^2+dy^2+dz^2$
przez tensor metryczny $ds^2=\delta_{ij} dx^i dx^j$ gdzie $\delta_{ij}$ to delta Kroneckiego jedynkowa

\begin{array}{c} \Huge \text{Współrzędne punktów przestrzeni} \\ \\ \Large A=\left[\begin{matrix}a_{x}\\a_{z}\\a_{z}\end{matrix}\right]=\left[\begin{matrix}0\\0\\0\end{matrix}\right]; B=\left[\begin{matrix}b_{x}\\b_{y}\\b_{z}\end{matrix}\right]=\left[\begin{matrix}1\\1\\1\end{matrix}\right] \\ \\ \Huge \text{Różnice współrzędnych przestrzeni} \\ \\ \Large u=B-A=\left[\begin{matrix}- a_{x} + b_{x}\\- a_{z} + b_{y}\\- a_{z} + b_{z}\end{matrix}\right]=\left[\begin{matrix}1\\1\\1\end{matrix}\right] \\ \\ \Huge \text{Tensor metryczny przestrzeni} \\ \\ \Large g=\left[\begin{matrix}1 & 0 & 0\\0 & 1 & 0\\0 & 0 & 1\end{matrix}\right] \\ \\ \Huge \textbf{Odległość w przestrzeni} \\ \\ \Large ds^2=u^T*g*u=\left[\begin{matrix}\left(- a_{x} + b_{x}\right)^{2} + \left(- a_{z} + b_{y}\right)^{2} + \left(- a_{z} + b_{z}\right)^{2}\end{matrix}\right]=\left[\begin{matrix}3\end{matrix}\right]; \; ds=\sqrt{3} \end{array}

In [10]:
import sympy as sp
from IPython.display import display, Markdown
from sympy.physics.units import speed_of_light, meter, second
from sympy.physics.units import convert_to
m = """
## Metryka Minkowskiego (czasoprzestrzeń płaska w STW)

<br>zdefiniowana $ds^2=-c^2dt+dx^2+dy^2+dz^2$
<br>przez tensor metryczny $ds^2=\delta_{ij} dx^i dx^j$  gdzie $\delta_{ij}$ to tensor metryczny Minkowskiego
- $ds^2<0$ interwał czasowy $\Delta r = \\frac{\sqrt{-ds^2}}{c}$ czas własny, zdarzenie wewnątrz stożka, związek przyczynowy
- $ds^2>0$ interwał przestrzenny $\Delta l = \sqrt{ds^2}$, zdarzenie na zewnątrz stożka, brak związku przyczynowego
- $ds^2=0$ interwał zerowy, na powierzchni stożka, Światło.
STW - szczególna teoria względności
"""

display(Markdown(m))



c =3*10**8    #300 tys km na sek


a_t, a_x, a_y, a_z = sp.symbols('a_t a_x a_y a_z')
b_t, b_x, b_y, b_z = sp.symbols('b_t b_x b_y b_z')
c_s = sp.symbols('c')

sv = [(a_t, 0), (a_x, 0), (a_y, 0), (a_z, 0),
      (b_t, 1), (b_x, c/2), (b_y, 0), (b_z, 0),
      (c_s, c)
      ]

#c = convert_to(speed_of_light, [meter, second])
#c = convert_to(speed_of_light, [])
#c = speed_of_light
 
a_s = sp.Matrix([a_t, a_x, a_y, a_z])

b_s = sp.Matrix([b_t, b_x, b_y, b_z])

a_n = a_s.subs(sv)
b_n = b_s.subs(sv)

u_s = b_s - a_s
u_s[0,0] = u_s[0,0]*c_s

u_n = b_n - a_n
u_n[0,0]=u_n[0,0]*c

g = sp.eye(4) # jedynkowa
g[0,0] = -1

ds2_s = u_s.T * g * u_s

ds2_n = ds2_s.subs(sv)
#print(f'{ds2_s=}')
#print(f'{ds2_n=}')
#print(f'{sv=}')

ds2_nn = ds2_n[0].evalf()
#print(f'{ds2_nn=}')

# Kod LaTeX do  wyświetlenia w Jupyter Notebook

if (ds2_nn < 0):
    dr = (-ds2_nn)**0.5 / c
    text = f'ds^2<0; \; \\text{{Interwał czasowy}}; \Delta r= \dfrac{{\sqrt{{-ds^2}}}}{{c}}=  {dr}s'


if (ds2_nn > 0):
    ds = (ds2_nn)**0.5
    tekst = f'ds^2<0; \;Przestrzenny \; interwał \;; ds={ds}m'

latex_code = fr"""
\begin{{array}}{{c}}
\Huge \text{{Współrzędne punktów przestrzeni}}
\\ \\ \Large A={sp.latex(a_s)}={sp.latex(a_n)};  B={sp.latex(b_s)}={sp.latex(b_n)}

\\ \\ \Huge \text{{Różnice współrzędnych przestrzeni}}
\\ \\ \Large  u=B-A={sp.latex(u_s)}={sp.latex(u_n)}


\\ \\ \Huge \text{{Tensor metryczny przestrzeni}} 
\\ \\ \Large g={sp.latex(g)}


\\ \\ \Huge \textbf{{Odległość w przestrzeni}} 
\\ \\ \Large ds^2=u^T*g*u={sp.latex(ds2_s)}=
\\ \\ \Large ={sp.latex(ds2_n)}={sp.latex(ds2_nn)} 
\\ \\ \Large  {text}
\end{{array}}
"""




# Wyświetlenie w Jupyter Notebook
display(Markdown(latex_code))

Metryka Minkowskiego (czasoprzestrzeń płaska w STW)¶


zdefiniowana $ds^2=-c^2dt+dx^2+dy^2+dz^2$
przez tensor metryczny $ds^2=\delta_{ij} dx^i dx^j$ gdzie $\delta_{ij}$ to tensor metryczny Minkowskiego

  • $ds^2<0$ interwał czasowy $\Delta r = \frac{\sqrt{-ds^2}}{c}$ czas własny, zdarzenie wewnątrz stożka, związek przyczynowy
  • $ds^2>0$ interwał przestrzenny $\Delta l = \sqrt{ds^2}$, zdarzenie na zewnątrz stożka, brak związku przyczynowego
  • $ds^2=0$ interwał zerowy, na powierzchni stożka, Światło. STW - szczególna teoria względności

\begin{array}{c} \Huge \text{Współrzędne punktów przestrzeni} \\ \\ \Large A=\left[\begin{matrix}a_{t}\\a_{x}\\a_{y}\\a_{z}\end{matrix}\right]=\left[\begin{matrix}0\\0\\0\\0\end{matrix}\right]; B=\left[\begin{matrix}b_{t}\\b_{x}\\b_{y}\\b_{z}\end{matrix}\right]=\left[\begin{matrix}1\\150000000.0\\0\\0\end{matrix}\right] \\ \\ \Huge \text{Różnice współrzędnych przestrzeni} \\ \\ \Large u=B-A=\left[\begin{matrix}c \left(- a_{t} + b_{t}\right)\\- a_{x} + b_{x}\\- a_{y} + b_{y}\\- a_{z} + b_{z}\end{matrix}\right]=\left[\begin{matrix}300000000\\150000000.0\\0\\0\end{matrix}\right] \\ \\ \Huge \text{Tensor metryczny przestrzeni} \\ \\ \Large g=\left[\begin{matrix}-1 & 0 & 0 & 0\\0 & 1 & 0 & 0\\0 & 0 & 1 & 0\\0 & 0 & 0 & 1\end{matrix}\right] \\ \\ \Huge \textbf{Odległość w przestrzeni} \\ \\ \Large ds^2=u^T*g*u=\left[\begin{matrix}- c^{2} \left(- a_{t} + b_{t}\right)^{2} + \left(- a_{x} + b_{x}\right)^{2} + \left(- a_{y} + b_{y}\right)^{2} + \left(- a_{z} + b_{z}\right)^{2}\end{matrix}\right]= \\ \\ \Large =\left[\begin{matrix}-6.75 \cdot 10^{16}\end{matrix}\right]=-6.75 \cdot 10^{16} \\ \\ \Large ds^2<0; \; \text{Interwał czasowy}; \Delta r= \dfrac{\sqrt{-ds^2}}{c}= 0.866025403784439s \end{array}

In [13]:
from sympy import symbols, sin, Matrix, simplify, pi


m = """
# Metryka OTW na przykładzie metryki Schwarzschilda (czarna dziura, nierotująca masa sferyczna)

### w trakcie opanowywania

OTW - ogólna teoria względności
"""
display(Markdown(m))




# Stałe fizyczne i współrzędne
G, M, c = symbols('G M c')  # Stałe fizyczne
t, r, theta, phi = symbols('t r theta phi')  # Współrzędne czasoprzestrzeni
dt, dr, dtheta, dphi = symbols(r'dt dr d\theta d\phi')  # Zmienne różniczkowe

# Promień Schwarzschilda
r_s = 2 * G * M / c**2

# Definicja macierzy metrycznej g_mu_nu
g = Matrix([
    [-(1 - r_s / r), 0, 0, 0],
    [0, 1 / (1 - r_s / r), 0, 0],
    [0, 0, r**2, 0],
    [0, 0, 0, r**2 * sin(theta)**2]
])

# Wektor różnic współrzędnych dx^mu
dx = Matrix([c * dt, dr, r * dtheta, r * sin(theta) * dphi])

# Obliczanie interwału czasoprzestrzennego ds^2 = dx^T * g * dx
ds_squared = simplify(dx.transpose() * g * dx)

values = {
    r: 10 * r_s,
    theta: pi / 2,
    dt: 1,
    dr: 1,
    dtheta: 0,
    dphi: 0
}

# Obliczenie ds^2 dla zadanych wartości
ds_value = ds_squared.subs(values)

v = ds_value.evalf()

latex_code = fr"""
\begin{{array}}{{c}}
\\ \Large ds^2={sp.latex(ds2)} 
\\ \\ \Large  = {sp.latex(ds_value)} = {sp.latex(v)}
\end{{array}}
"""


display(Markdown(latex_code))

Metryka OTW na przykładzie metryki Schwarzschilda (czarna dziura, nierotująca masa sferyczna)¶

w trakcie opanowywania¶

OTW - ogólna teoria względności

\begin{array}{c} \\ \Large ds^2=\left[\begin{matrix}3\end{matrix}\right] \\ \\ \Large = \left[\begin{matrix}- \frac{c^{2} \cdot \left(324 G^{2} M^{2} - \frac{400 G^{2} M^{2}}{c^{2}}\right)}{360 G^{2} M^{2}}\end{matrix}\right] = \left[\begin{matrix}- \frac{0.00277777777777778 c^{2} \cdot \left(324.0 G^{2} M^{2} - \frac{400.0 G^{2} M^{2}}{c^{2}}\right)}{G^{2} M^{2}}\end{matrix}\right] \end{array}

Próby interaktywnej grafiki przestrzennej¶

Próby i testy narzedzie do graficznego przedstawiania różnych aspektów wizualizacji przestrzeni

In [1]:
import plotly as pl
import plotly.graph_objects as go
import numpy as np

pl.io.renderers.default = "notebook_connected" # musi być jeżeli chcemy do html-a


# Przykładowe dane dla odcinka
x = [0, 10]
y = [0, 5]
z = [0, 2]

# Tworzenie wykresu 3D odcinka
fig = go.Figure()

fig.add_trace(go.Scatter3d(
    x=x,
    y=y,
    z=z,
    mode='lines',
    line=dict(color='blue', width=3)
))

x = [0, 10]
y = [0, 5]
z = [0, 3]

fig.add_trace(go.Scatter3d(
    x=x,
    y=y,
    z=z,
    mode='lines',
    line=dict(color='red', width=3)
))





fig.add_trace(go.Cone(
    x=[1], y=[1], z=[1],
    u=[1], v=[0], w=[0],
    sizemode="scaled",
    sizeref=1,
    anchor="tip",
    colorscale='Reds',
    name='Gradient'
))

# Ustawienia osi
fig.update_layout(
    scene=dict(
        xaxis_title='Oś X',
        yaxis_title='Oś Y',
        zaxis_title='Oś Z'
    ),
    title='Wykres 3D odcinka z Plotly'
)

fig.show()