Сомневаюсь в ParametricPlot3D, RevolutionPlot3D, ListPlots и NIntegrate: могу ли я создать «RevolutionListPlot3D»?

Sep 27 2020

Прежде всего: этот вопрос лежит в контексте Поверхностей и вложений по дифференциальной геометрии. Точнее, в контексте координат Крускала и как построить трехмерную динамическую червоточину Шварцшильда$[1]$, $[2]$, $[3]$. Основной контекст приведен в ссылке$[1]$.

ЧАСТЬ I) Немного по физике и математике

I.1) "Ничто" о гравитации и черных дырах

Черные дыры - это решения уравнений поля Эйнштейна. Более точно, мы имеем главное (тензорное) уравнение:

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

Решения уравнения $(1)$ задаются метрическими тензорами:

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

В координатной диаграмме (где мы выполняем вычисления) мы можем выразить скалярную величину, называемую линейным элементом, которая точно является скалярным полем, когда метрический тензор действует на касательные векторные поля на многообразии.$\mathcal{M}$:

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

Таким образом, для данного метрического тензора на многообразии мы точечно характеризуем геометрию многообразия.

Важным фактом о тензорах является так называемая общая ковариация : физика не зависит от координат; явления природы не заботятся о координатах; уравнения физики не должны зависеть от координат; явления природы могут быть хорошо описаны с помощью декартовой системы координат и одинаково хорошо описаны с помощью любой криволинейной системы координат. Математическим объектом, фиксирующим этот факт, являются тензоры.

Следовательно, абстрактный объект (метрический тензор) не зависит от преобразований координат:

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

Но на уровне диаграмм координат их координаты меняются в такой форме, как:

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

Черная дыра Шварцшильда имеет следующий метрический тензор:

$$ 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}$$

Здесь мы можем легко увидеть координатную диаграмму: сферические координаты расширены до физики пространства-времени;

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

Следовательно, мы имеем дело с четырехмерным пространством-временем. $\mathcal{M}$.

I.2) Процедура заглубления червоточины Шваршильда

Базовый контекст здесь таков: нам нужно представить это четырехмерное пространство-время. $(6)$в трехмерном евклидовом пространстве. Затем мы должны встроить поверхность в трехмерное пространство.

Затем мы «подавляем» два измерения, то есть фиксируем момент координатного времени. $t = T \in \mathbb{R}$ и координатный угол $\theta = \frac{\pi}{2}$(фактически этот угол дает нам геометрию «экваториальной плоскости»). Следовательно, дифференциалы равны нулю:$dt^{2} = dT^{2} = 0 $, $d\theta^{2} = d\frac{\pi}{2}^{2} = 0 $ а затем метрика станет:

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

Следующий шаг - "сравнить" это $2D$ метрический тензор с цилиндрическим метрическим тензором:

$$ 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}$$

Затем мы говорим, что:

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

Что, наконец, подразумевает:

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

Мы можем интегрировать эту функцию и обнаружить саму функцию интереса здесь:

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

Интегрирующее уравнение $(11)$ и используя функцию $\mathrm{RevolutionPlot3D}$ мы рисуем поверхность, похожую на червоточину

ЧАСТЬ II) Мои сомнения и какую математическую программу я хочу написать

II.1) Числовой интеграл вложения Краскала

Есть много чего скрыть, но физический факт таков: это горло червоточины не является чем-то «постоянным во времени». Я имею в виду, что в черных дырах Шварцшильда червоточина закрывается сразу после образования черной дыры, а затем с использованием других координат, В координатах Крускала-Секереса мы можем представить «динамическую червоточину» в «течении времени», т.е. для каждого значения «времени Краскала» мы имеем разные поверхности!

Затем координаты меняются на координаты Крускала-Секереса:

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

где $v$называются «краскальское время». Важно отметить, что это время не время наших часов.$t$это не время наших часов, а скорее они несут временную подпись .

На этой координатной диаграмме интеграл внедрения (например, $(11)$ ) становится:

$$ 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}$$

Так, $v_{0}$ постоянные времена Краскала, поэтому для каждого $v_{0}$ мы можем иметь интеграл на $u$! Также функции$r(u)$ на самом деле:

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

Использование в этой задаче функции $(13)$ точнее (для $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}$$

Следовательно, интеграл $(12)$ становится наконец:

$$ 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}$$

Поэтому нам НУЖНО вычислить интеграл $(15)$, а это числовая задача. Короче, вычисляем (каким-то образом) интеграл$(15)$, а затем рисуем саму трехмерную поверхность:

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

II.2) Список моих вычислений NIntegrate

Итак, я провел числовую интеграцию с помощью NIntegrate, но я просто не могу использовать его как $z[u]$функция! Взглянуть:

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}]

Этот код фактически вычисляет интеграл численно, но я не могу использовать его в $\mathrm{ParametricPlot3D}$.

ЧАСТЬ III) Некоторые уже сделанные вставки и предложения

III.1) Мой старый код, основанный на ссылке $[4]$

Фактически пользователь $[4]$«решили» проблему. Я немного адаптировал его код:

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}]


Но он решает дифференциальное уравнение, я хочу использовать интегральный расчет!

III.2) Динамическое встраивание GIF Гамильтона

Этот парень Гамильтон достиг высочайшего сюжета, который я хочу сделать, на самом деле я хочу воспроизвести его динамичный сюжет, то есть этот мой вопрос и все мои сомнения существуют только для того, чтобы воспроизвести его сюжет. Вы можете взглянуть на динамическое горло червоточины следующим образом:

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

III.3) Совет моего профессора

Мой профессор сказал мне интересное возможное решение:

Возможно, вы можете попробовать решить числовой интеграл для различных значений $u$, и получите несколько очков типа $(u, z)$, а затем вы можете, например, интерполировать эти точки, чтобы получить плавную функцию $z = z (u)$, и используйте эту функцию в $\mathrm{ParametricPlot3D}$. Попробуйте и посмотрите, работает ли это.

Вроде бы правильно, но я просто не умею переводить получаю несколько точек типа$(u, z)$, а затем вы можете, например, интерполировать эти точки, чтобы получить плавную функцию $z = z (u)$ в код Mathematica.

ЧАСТЬ IV) Мои сомнения

Итак, мое численное интегрирование в разделе II.2 кажется правильным, поэтому это просто вопрос о том, как я могу повернуть эту кривую. Но как я все написал, я не могу использовать$\mathrm{RevolutionPlot3D}$, поэтому я сомневаюсь:

Как я могу использовать $\mathrm{RevolutionPlot3D}$ в моем коде II.2 ?

$$ * * * $$

$[1]$ Вложения и временная эволюция червоточины Шварцшильда -https://arxiv.org/abs/1107.4871

$[2]$ Гравитация - Миснер, Торн, Уиллер, страницы с 612 по 615

$[3]$ Червоточины в пространстве - времени и их использование для межзвездного путешествия: инструмент для обучения общей теории относительности -https://aapt.scitation.org/doi/10.1119/1.15620

$[4]$ Схема внедрения червоточины

Ответы

2 AlexTrounev Sep 28 2020 at 00:34

Пост такой длинный, а ответ очень короткий. На первом этапе мы определяем 3 функции:

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.}]]

А потом визуализируем червоточину (на это нужно время):

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