Wolfram mathematica Wolfram Mathematics是非线性方程组的求解命令

Wolfram mathematica Wolfram Mathematics是非线性方程组的求解命令,wolfram-mathematica,equation-solving,Wolfram Mathematica,Equation Solving,我试图通过使用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

我试图通过使用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)
eqs = 
  Table[Var[[i]] == (Var[[i]] /. Sol[[1]]), {i, Length[Var]}];
其中B、C、D、G、m和H为常数。在这里,我也删除了一些乘法常量,以简化代码

最后,我定义了变量:

Var = {ee[x], pp[x], nn[x], ms[x]}
然后“隐式”求解系统:

(注:就是在这里,代码被卡住了!!!!尽管,正如我所说,有一个类似的方程导数系统,一切都很好。)

并列出方程式:

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)
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]];

以前设置席= 10 ^ 8和XF=10。< /P> 更清楚地说,当我试图通过Solve命令评估系统时,评估将无限期地继续,我无法理解为什么,错误在哪里。尽管有一个类似的系统,使用前面方程的导数和NDSolve替换为NDSolve,但其工作没有任何问题,并且“等效”行(Sol=Solve[{eq1[x]==0,eq2[x]==0,eq3[x]==0,eq4[x]==0},Core])的执行速度非常快(约1秒)

任何有助于理解我错在哪里的建议都是受欢迎的,也欢迎任何用数值方法解决这类方程组的建议

更清楚地说,当我试图通过Solve命令评估系统时,评估将无限期地继续,我无法理解为什么,错误在哪里。尽管有一个类似的系统,使用前面方程的导数和NDSolve替换为NDSolve,但其工作没有任何问题,并且“等效”行(Sol=Solve[{eq1[x]==0,eq2[x]==0,eq3[x]==0,eq4[x]==0},Core])的执行速度非常快(约1秒)


任何帮助我理解错误所在的建议都是受欢迎的,以及任何用数值方法解决这类方程组的建议。

@Bill,
m
是一个常数,所有其他常数都在这里被修改以解释我的问题,所以我并不是真正使用
C
D
名称。变量基本上取决于
G
的值(我正在做一个从~8x10^6到~5x10^7的循环),因此,
ms
的范围应该是从0.8到0,
ee
pp
nn
的数量级(比如从~100到~600)。@Bill,
m
是一个常数,所有其他常数都被修改来解释我的问题,所以我没有真正使用
C
D
名称。变量基本上取决于
G
的值(我正在做一个从~8x10^6到~5x10^7的循环),因此,
ms
的范围应该是从0.8到0,
ee
pp
nn
的数量级(比如从~100到~600)。