Wątpliwości dotyczące ParametricPlot3D, RevolutionPlot3D, ListPlots i NIntegrate: czy mogę zbudować „RevolutionListPlot3D”?

Sep 27 2020

Po pierwsze: jest to pytanie w kontekście powierzchni i przetłoczeń na geometrii różniczkowej. Dokładniej w kontekście współrzędnych Kruskala i sposobu narysowania dynamicznego trójwymiarowego tunelu czasoprzestrzennego Schwarzschilda$[1]$, $[2]$, $[3]$. Główny kontekst podano jako odniesienie$[1]$.

CZĘŚĆ I) Trochę fizyki i matematyki

I.1) „Nic” na temat grawitacji i czarnych dziur

Czarne dziury to rozwiązania równań pola Einsteina. Dokładniej, mamy więc równanie główne (tensorowe):

$$\textbf{Ric} - \frac{1}{2}R\textbf{g} = \frac{8\pi G}{c^{4}} \textbf{T} \tag{1}$$

Rozwiązania równania $(1)$ są podane przez tensory metryczne:

$$\textbf{g} = g_{\mu\nu} \textbf{dx}^{\mu} \otimes \textbf{dx}^{\nu} \tag{2}$$

Na wykresie współrzędnych (czyli tam, gdzie wykonujemy obliczenia), możemy wyrazić wielkość skalarną zwaną elementem liniowym, która jest dokładnie polem skalarnym, gdy tensor metryczny działa na styczne pola wektorowe w rozmaitości$\mathcal{M}$:

$$\textbf{g}(d\textbf{r},d\textbf{r}) = g_{\mu\nu}dx^{\mu}dx^{\nu} := ds^2\tag{3}$$

Dlatego mając metryczny tensor na rozmaitości, określamy w sposób punktowy geometrię Rozlacza.

Ważnym faktem dotyczącym tensorów jest coś, co nazywa się kowariancją ogólną : fizyka jest niezależna od współrzędnych; zjawiska przyrodnicze nie dbają o współrzędne; równania fizyki muszą być niezależne od współrzędnych; zjawiska przyrodnicze można dobrze opisać za pomocą kartezjańskiego układu współrzędnych i równie dobrze opisać dowolnym krzywoliniowym układem współrzędnych. Obiektem matematycznym, który oddaje ten fakt, są tensory.

Dlatego obiekt abstrakcyjny (tensor metryczny) jest niezależny od przekształceń współrzędnych:

$$ \textbf{g'} = \textbf{g} \tag{4}$$

Ale na poziomie wykresów współrzędnych ich współrzędne zmieniają się w postaci takiej jak:

$$ g'_{\mu\nu} = \frac{\partial x^{\alpha}}{\partial x'^{\mu}}\frac{\partial x^{\beta}}{\partial x^{\nu'}}g_{\alpha \beta}\tag{5}$$

Czarna dziura Schwarzschilda ma następujący tensor metryczny:

$$ ds^{2} = -\Bigg(1- \frac{2GM}{c^{2}r}\Bigg)c^{2}dt^{2} + \frac{1}{1-\frac{2GM}{c^{2}r}}dr^{2} - r^{2}d\theta^{2} + r^{2}sin^{2}(\theta)d\phi^{2}\tag{6}$$

Możemy z łatwością zobaczyć wykres współrzędnych tutaj: współrzędne sferyczne rozszerzone na fizykę czasoprzestrzeni;

$$\mathrm{Coordinates} \implies (t,r,\theta,\phi) \tag{7}$$

Dlatego zajmujemy się czterowymiarową czasoprzestrzenią $\mathcal{M}$.

I.2) Procedura osadzania tunelu czasoprzestrzennego w Schwarschild

Podstawowy kontekst tutaj jest następujący: musimy przedstawić tę czterowymiarową czasoprzestrzeń $(6)$w trójwymiarowej przestrzeni euklidesowej. Następnie musimy osadzić powierzchnię w przestrzeni 3D.

Następnie „tłumimy” dwa wymiary, tj. Ustalamy moment współrzędnych czasu $t = T \in \mathbb{R}$ i kąt współrzędnych $\theta = \frac{\pi}{2}$(w rzeczywistości ten kąt daje nam geometrię „płaszczyzny równikowej”). Dlatego różnice wynoszą zero:$dt^{2} = dT^{2} = 0 $, $d\theta^{2} = d\frac{\pi}{2}^{2} = 0 $ a następnie metryka staje się:

$$ ds^{2} = \frac{1}{1-\frac{2GM}{c^{2}r}}dr^{2} + r^{2}d\phi^{2}\tag{8}$$

Następnym krokiem jest „porównanie” tego $2D$ tensor metryczny z cilindrycznym tensorem metrycznym:

$$ ds^{2} = dz^{2} + dr^{2} + r^{2}d\phi^{2} \equiv \Bigg[ 1+\Bigg(\frac{dz}{dr}\Bigg)^{2} \Bigg]dr^{2} + r^{2}d\phi^{2}\tag{9}$$

Następnie mówimy, że:

$$\Bigg[ 1+\Bigg(\frac{dz}{dr}\Bigg)^{2} \Bigg]dr^{2} = \frac{1}{1-\frac{2GM}{c^{2}r}}dr^{2} \tag{10}$$

Co ostatecznie oznacza:

$$ \frac{dz}{dr} = \frac{1}{\sqrt{1-\frac{2GM}{c^{2}r}}} - 1 \tag{11}$$

Możemy zintegrować tę funkcję i odkryć tutaj samą funkcję zainteresowania:

$$ z(r) = \pm\int^{r}_{r_{0}} \frac{1}{\sqrt{1-\frac{2GM}{c^{2}r}}} - 1 dr \tag{11}$$

Całkowanie równania $(11)$ i używając funkcji $\mathrm{RevolutionPlot3D}$ wykreślamy powierzchnię podobną do tunelu czasoprzestrzennego

CZĘŚĆ II) Moje wątpliwości i jaki program Mathematica chcę napisać

II.1) Całka osadzona liczbowo Kruskala

Jest wiele rzeczy do omówienia, ale fakt fizyczny jest taki: gardło tego tunelu czasoprzestrzennego nie jest czymś „stałym w czasie”. Współrzędne Kruskala-Szekeresa, możemy przedstawić "dynamiczny tunel czasoprzestrzenny" w "upływie czasu", tj. Dla każdej wartości "czasu kruskala" mamy inną powierzchnię!

Współrzędne zmieniają się wtedy dla współrzędnych Kruskal-Szekeres:

$$\mathrm{Coordinates'} \implies (v,u,\theta,\phi) \tag{12}$$

Gdzie $v$nazywane są „Czasem Kruskala”. Należy wspomnieć, że ten coodinate nie jest czasem naszych zegarów, w rzeczywistości$t$nie jest czasem naszych zegarów, ale raczej noszą one sygnaturę czasową .

Na tym wykresie współrzędnych całka osadzona (np $(11)$ ) staje się:

$$ z(u) = \pm\int_{0}^{u} \frac{dz}{du}du = \pm\int_{r(0)}^{r(u)} \frac{dz}{du}\frac{du}{dr}dr = \pm\int_{r(0)}^{r(u)} \sqrt{g_{rr} - 1} dr =$$

$$ = \pm\int_{r(0)}^{r(u)} \sqrt{\frac{2\Big( e^{\frac{r}{2}} -v_{0}^2 \Big)}{re^{\frac{r}{2}} - 2\Big( e^{\frac{r}{2}} -v_{0}^2 \Big)}} dr \tag{12}$$

Więc, $v_{0}$ są stałe czasy Kruskala, po to dla każdego $v_{0}$ możemy mieć całkę na $u$! Również funkcje$r(u)$ są w rzeczywistości:

$$ r(u,v) =: 2m \Biggr[1+\mathrm{LambertW}\Bigg(\frac{u^2-v^2}{e}\Bigg) \Biggr] \tag{13}$$

Użycie w tym problemie funkcji $(13)$ jest bardziej precyzyjny (dla $m=1$ ),

$$ r(u) \equiv r(u,v_{0}) =: 2 \Biggr[1+\mathrm{LambertW}\Bigg(\frac{u^2-v_{0}^2}{e}\Bigg) \Biggr] \tag{14}$$

Dlatego całka $(12)$ staje się ostatecznie:

$$ z(u) = \pm\int_{r(0) = 2 \Biggr[1+\mathrm{LambertW}\Bigg(\frac{-v_{0}^2}{e}\Bigg) \Biggr] }^{r(u)=2 \Biggr[1+\mathrm{LambertW}\Bigg(\frac{u^2-v_{0}^2}{e}\Bigg) \Biggr]} \sqrt{\frac{2\Big( e^{\frac{r}{2}} -v_{0}^2 \Big)}{re^{\frac{r}{2}} - 2\Big( e^{\frac{r}{2}} -v_{0}^2 \Big)}} dr \tag{15}$$

Więc POTRZEBUJEMY obliczyć całkę $(15)$, a to jest zadanie numeryczne. Krótko mówiąc, obliczamy (w jakiś sposób) całkę$(15)$, a następnie wykreślamy całą powierzchnię 3D:

$$ \textbf{X} = [r(u)cos(\phi), r(u)sin(\phi), z(u)] \tag{16}$$

II.2) My NIntegrate Obliczanie za ListPlot

Zrobiłem więc numeryczną integrację przy użyciu NIntegrate, ale po prostu nie mogę go użyć jako pliku $z[u]$funkcjonować! Spójrz:

Manipulate[
 ListPlot[Table[
   NIntegrate[
    Sqrt[((2*(Exp[(r)/(2)] - ((v0)^2))    ))/(r*
         Exp[(r)/(2)] - ((2*(Exp[(r)/(2)] - ((v0)^2))    )))], {r, \
(2*(1)*(1 + ( 
          LambertW[((( 0^2  ) - (v0^2))/(Exp[
               1]))]   ))), (2*(1)*(1 + ( 
          LambertW[((( u^2  ) - (v0^2))/(Exp[1]))]   )))}], {u, 0, k, 
    1}], Joined -> True, InterpolationOrder -> 1, Mesh -> All], {k, 1,
   25}, {v0, -0.99999, 0.99999}]

Ten kod w rzeczywistości oblicza całkę numerycznie, ale nie mogę jej użyć w $\mathrm{ParametricPlot3D}$.

CZĘŚĆ III) Niektóre już wykonane osadzenia i sugestie

III.1) Mój starszy kod na podstawie referencji $[4]$

W rzeczywistości użytkownik $[4]$„rozwiązały” problem. Dostosowałem trochę jego kod:

r[u_, v0_] := 1 + LambertW[(u^2 - v0^2)/E];
z[u_, v0_] := 
  2 Sqrt[(1/
        r[u, v0] Exp[-r[u, v0]] - (u Exp[-r[u, v0]]/(r[u, v0]))^2)];

Z = ParametricNDSolveValue[{z'[u] == z[u, v0], z[0] == 0}, 
  z, {u, -1, 1}, {v0}]

Manipulate[
 ParametricPlot3D[{r[u, v0] Cos[phi], r[u, v0] Sin[phi], 
   Z[v0][u]}, {u, -1, 1}, {phi, 0, 2 Pi}, PlotTheme -> "Classic", 
  PlotRange -> {{-1.5, 1.5}, {-1.5, 1.5}, {-10, 10}}, 
  BoxRatios -> {2, 2, 2}], {v0, -0.99999999999999, 0.99999999999999}]


Ale on rozwiązuje równanie różniczkowe, chcę użyć obliczenia całkowego!

III.2) GIF Hamiltona z dynamicznym osadzaniem

Ten facet Hamilton osiągnął najważniejszy wątek, który chcę zrobić, w rzeczywistości chcę odtworzyć jego dynamiczną fabułę, tj. To moje pytanie i wszystkie moje wątpliwości istnieją tylko po to, aby odtworzyć jego fabułę. Możesz przyjrzeć się dynamicznemu gardzieli tunelu czasoprzestrzennego w następujący sposób:

https://jila.colorado.edu/~ajsh/bh/schww_gif.html

III.3) Porada mojego profesora

Mój profesor powiedział mi interesujące możliwe rozwiązanie:

Może możesz spróbować rozwiązać całkę liczbową dla różnych wartości $u$i zdobądź kilka punktów tego typu $(u, z)$, a następnie możesz na przykład interpolować te punkty, aby uzyskać płynną funkcję $z = z (u)$i użyj tej funkcji w $\mathrm{ParametricPlot3D}$. Spróbuj i zobacz, czy to działa.

Niby racja, ale po prostu nie wiem jak tłumaczyć dostać kilka punktów tego typu$(u, z)$, a następnie możesz na przykład interpolować te punkty, aby uzyskać płynną funkcję $z = z (u)$ do kodu Mathematica.

CZĘŚĆ IV) Moje wątpliwości

Tak więc moja całka numeryczna w sekcji II.2 wydaje się być poprawna, dlatego jest tylko kwestią faktów, jak mogę obrócić tę krzywą. Ale sposobu, w jaki napisałem całość, nie mogę użyć$\mathrm{RevolutionPlot3D}$więc mam wątpliwości:

Jak mogę używać $\mathrm{RevolutionPlot3D}$ w moim kodzie II.2 ?

$$ * * * $$

$[1]$ Osadzenia i ewolucja w czasie tunelu czasoprzestrzennego Schwarzschilda -https://arxiv.org/abs/1107.4871

$[2]$ Gravitation - Misner, Thorne, Wheeler Strony 612 do 615

$[3]$ Dziury czasoprzestrzenne i ich wykorzystanie do podróży międzygwiezdnych: narzędzie do nauczania ogólnej teorii względności -https://aapt.scitation.org/doi/10.1119/1.15620

$[4]$ Schemat osadzania tunelu czasoprzestrzennego

Odpowiedzi

2 AlexTrounev Sep 28 2020 at 00:34

Jest tak długi post, ale odpowiedź jest bardzo krótka. W pierwszym kroku definiujemy 3 funkcje:

r0[u_?NumericQ, v0_?NumericQ] := 2 (1 + LambertW[(u^2 - v0^2)/E]);
z[u_?NumericQ, v0_?NumericQ] := 
 NIntegrate[
  Sqrt[2 (Exp[r/2] - v0^2)/(r*Exp[r/2] - 2*(Exp[r/2] - v0^2))], {r, 
   r0[0, v0], r0[u, v0]}, AccuracyGoal -> 2, PrecisionGoal -> 2]
wh[v0_?NumericQ] := 
 ParametricPlot3D[{r0[u, v0] Cos[phi], r0[u, v0] Sin[phi], 
   z[u, v0] Sign[u]}, {u, -1, 1}, {phi, 0, 2 Pi}, 
  SphericalRegion -> True, BoxRatios -> 1, FaceGrids -> None, 
  PlotStyle -> {Opacity[0.8]}, Boxed -> False, Axes -> False, 
  ImageSize -> Automatic, ViewPoint -> Front, Mesh -> None, 
  PlotLabel -> Row[{"\!\(\*SubscriptBox[\(v\), \(0\)]\) = ", v0 1.}]]

A potem wizualizujemy tunel czasoprzestrzenny (to wymaga czasu):

Table[wh[x], {x, {-1 + 10^-5, -.5, 0., 
    1. - 10^-5 }}] // AbsoluteTiming