Я хочу решить систему уравнений (24), (25) и (27) ...

Criado em: 10 de junho de 2026

Respondido usando GPT-5.5 Thinking por Chat01

Pergunta

2207.03944v2.pdf
Гаусс-Бонне_new.nb

Я хочу решить систему уравнений (24), (25) и (27) с граничными условиями (3), (28) и (32) методом стрельбы с параметром стрельбы phi_s, но мой код в wolfram выдает ошибки. Укажи, где ошибки, и исправь код

Pensamento

Clarifying final answer and providing concise details

I need to give a clear, final answer with a code snippet, but not too long — no 5000 characters. I'll deliver a concise bullet list, key code parts, and a link to the fixed file. Of course, I’ll include the needed equations and boundary conditions cited properly, as mentioned in the paper.

Since the user asked for the answer in Russian, I’ll make sure to include that, and mention that I couldn’t run Wolfram’s environment, but I reviewed the text and matched it with the PDF. I'll note that the code corrects the syntax/mathematical errors without running it.

Thought for 3m 49s

Resposta

Я нашёл основные причины ошибок в твоём .nb. Я не запускал Mathematica-ядро здесь, но проверил notebook как текст и сверил формулы с PDF.

Главные ошибки:

  1. Неверно записано уравнение (27).
    В квадратной скобке уравнения (27) должно быть сложение:

    (1eλ)(ν+νλ2ν)+eλνλ(1-e^{-\lambda})(\nu''+\frac{\nu'-\lambda'}{2}\nu') + e^{-\lambda}\nu'\lambda'

    а в твоём коде второй член фактически умножается на первый. Именно здесь ломается phiDDSymbolic. Уравнения (24), (25), (27) приведены в статье в секции 4. (2207.03944v2.pdf)

  2. Неправильное начальное условие для lam около горизонта.
    Из разложения

    eλ=b1(rrS)e^{-\lambda}=b_1(r-r_S)

    следует:

    wolfram
    lam[rS + eps] == -Log[bb eps]

    а не -Log[eps]. Формула для b1 дана в (30), а разложение у горизонта — в (29). (2207.03944v2.pdf)

  3. Нужно стартовать не ровно с phiS, а с разложения:

    wolfram
    phi[rS + eps] == phiS + dphiS eps

    Это соответствует разложению поля у горизонта в (29). (2207.03944v2.pdf)

  4. FindRoot::nlnum возникает потому, что NDSolve при сбое возвращает не численное решение.
    Поэтому residual[phiS] иногда становится не числом. Нужно использовать NDSolveValue + Check, а при сбое возвращать большое численное значение.

  5. Параметры в твоём коде, вероятно, физически плохие:
    ell = 10, mu = 1, h = 1, значит v = 1. Для больших ell и mu в статье есть ограничение порядка

    v0.4μ,v \lesssim \frac{0.4}{\mu \ell},

    иначе регулярного решения может не быть. Для твоих параметров правая часть равна 0.04, а v = 1, поэтому интегратор закономерно упирается в сингулярность. Это не только ошибка кода, а ещё и отсутствие регулярного решения для такого набора параметров. (2207.03944v2.pdf)

Я подготовил исправленный Wolfram-скрипт здесь:

Скачать исправленный код

Ключевое исправление для eq27 выглядит так:

wolfram
eq27 = phidd + (((nuPrimeExpr - lambdaPrimeExpr)/2) + 2/r) psi[r] + (8 ell^2 phi[r]/r^2) ((1 - Exp[-lam[r]]) (nuDoublePrimeExpr + ((nuPrimeExpr - lambdaPrimeExpr)/2) nuPrimeExpr) + Exp[-lam[r]] nuPrimeExpr lambdaPrimeExpr) - Exp[lam[r]] Vp[phi[r]];

А ключевое исправление в начальных условиях для стрельбы:

wolfram
phi[r0] == phis + psis eps, psi[r0] == psis, nu[r0] == Log[eps], lam[r0] == -Log[bb eps]

В файле я также заменил NDSolve на NDSolveValue, добавил защиту от нечисленных значений в residual и сделал v независимым параметром, после чего ставится h = mu/v.

Compartilhar esta Q&A