Я пытаюсь решить нелинейную систему уравнений с помощью команды Solve (и NSolve), но оценка застревает.
Для очень похожей системы, в основном такой же, но с производными уравнений, у меня нет проблем. Я определяю нужные мне функции, пишу уравнения, определяю переменные, определяю решения с помощью команды Solve и, как только получаю с другой системой начальные значения, я пытаюсь решить систему с помощью NSolve.
Определение функций:
a[x_] := A (1 - ms[x])
b[x_]:=2 ((ArcSinh[nn[x]/ms[x]] ms[x]^3 + nn[x] ms[x] Sqrt[nn[x]^2 + ms[x]^2])/(8 \[Pi]^2) + (ArcSinh[pp[x]/ms[x]] ms[x]^3 + pp[x] ms[x] Sqrt[pp[x]^2 + ms[x]^2])/(8 \[Pi]^2))
где A - постоянная. Здесь я удалил некоторые мультипликативные константы, чтобы упростить задачу.
Тогда у меня есть уравнения:
eq1[x_]:= B a[x] + C a[x]^2 + D a[x]^3 - F b[x]
eq2[x_]:= pp[x]^3 - nn[x]^3
eq3[x_]:= G - (pp[x]^3 + nn[x]^3)
eq4[x_]:= Sqrt[nn[x]^2 + ms[x]^2] - Sqrt[pp[x]^2 + ms[x]^2] - Sqrt[m + ee[x]^2] + H (pp[x]^3 - nn[x]^3)
где B, C, D, G, m и H - постоянные. Здесь я также удалил некоторые мультипликативные константы, чтобы упростить код для вас.
Наконец, я определяю переменные:
Var = {ee[x], pp[x], nn[x], ms[x]}
затем решить систему "неявно":
Sol =
Solve[{eq1[x] == 0, eq2[x] == 0, eq3[x] == 0, eq4[x] == 0}, Var]
(N.B: именно здесь код застревает !!!! Несмотря на, как я уже сказал, с аналогичной системой с производными уравнений, все работает нормально.)
и составьте список уравнений:
eqs =
Table[Var[[i]] == (Var[[i]] /. Sol[[1]]), {i, Length[Var]}];
В заключение, получив начальные условия, я попытаюсь решить систему:
system0 = Flatten[{eqs, ee[xi] == eei, pp[xi] == ppi, nn[xi] == nni, ms[xi] == msi}];
sol0 = NSolve[system0, {ee, kpp, nn, ms}, {x, xi, xf}, Flatten[{MaxSteps -> 10^4, MaxStepFraction -> 10^-2, WorkingPrecision -> 30, InterpolationOrder -> All}, 1]];
, где я ранее установил xi = 10 ^ -8 и xf = 10.
Пытаясь быть более понятным, когда я пытаюсь оценить систему с помощью команды Solve, оценка продолжается бесконечно, и я не могу понять, почему, где ошибка. Несмотря на аналогичную систему с производной предыдущих уравнений и заменой NSolve на NDSolve, работает без проблем и выполнение «эквивалентной» строки (Sol = Solve [{eq1 [x] == 0, eq2 [x] = = 0, eq3 [x] == 0, eq4 [x] == 0}, Core]) очень быстро (~ 1 сек).
Любая помощь, чтобы понять, где я ошибаюсь, приветствуется, также как и любое предложение для численного решения этой системы уравнений.
Пытаясь быть более понятным, когда я пытаюсь оценить систему с помощью команды Solve, оценка продолжается бесконечно, и я не могу понять, почему, где ошибка. Несмотря на аналогичную систему с производной предыдущих уравнений и заменой NSolve на NDSolve, работает без проблем и выполнение «эквивалентной» строки (Sol = Solve [{eq1 [x] == 0, eq2 [x] = = 0, eq3 [x] == 0, eq4 [x] == 0}, Core]) очень быстро (~ 1 сек).
Любая помощь, чтобы понять, где я ошибаюсь, приветствуется, также как и любое предложение для численного решения такого рода системы уравнений.