level 4
Clear["Global`*"]\[CapitalLambda] = \!\(TraditionalForm\`2.4*10^\((\(-3\))\)\);M = 1.0*10^23;R1 = 0.01;\[Rho]2 = 5.0*10^1;x1 = 0 10^-6;rou[x_] := If[x <= R1, 1.2*10^19, \[Rho]2]eq = \[Phi]''[x] + 2/x \[Phi]'[ x] == ((5.07*10^6)^2)*(-\[CapitalLambda]^5/\[Phi][x] ^2 + rou[x] /M)esol = Block[{\[Epsilon] = $MachineEpsilon}, NDSolve[{eq, \[Phi]'[\[Epsilon]] == 0, \[Phi][0.1] == Sqrt[( M \[CapitalLambda]^5)/\[Rho]2 ] }, \[Phi], {x, \[Epsilon], 0.1}, MaxStepSize -> 0.0001]] // Quiet
LogLogPlot[Evaluate[\[Phi][x] /. First[esol]], {x, x1, 0.1},
PlotRange -> All]
2020年03月09日 04点03分
3
level 9
\[CapitalLambda] = \!\(TraditionalForm\`2.4*10^\((\(-3\))\)\); M =
1.0*10^23; R1 = 0.01; \[Rho]2 = 5.0*10^1; x1 = 0 10^-6;
rou[x_] := If[x <= R1, 1.2*10^19, \[Rho]2];
eq = \[Phi]''[x] +
2/x \[Phi]'[
x] == ((5.07*10^6)^2)*(-\[CapitalLambda]^5/\[Phi][x] ^2 +
rou[x] /M);
s = NDSolve[{eq, \[Phi]'[$MachineEpsilon] == 0, \[Phi][0.1] ==
Sqrt[( M \[CapitalLambda]^5)/\[Rho]2 ] }, \[Phi][
x], {x, $MachineEpsilon, 0.1}, MaxStepSize -> 0.0001];
Plot[Evaluate[\[Phi][x] /. s], {x, 0, 30}, PlotRange -> All]
2020年03月09日 08点03分
8
尝试求了一下解析解,以解决你想要掩盖的步长问题,实践证明失败
2020年03月09日 08点03分
吧务
level 15
1. 谁告诉你们MaxStepSize代表精度了。
2. MaxStepSize没事别动,或者说具体点,这选项对非线性常微分方程边值问题的求解没帮助,瞎动反而容易导致问题。
3. 不要在没搞清楚代码正误的情况下往里加Quiet。
4. 四楼的画图范围错了。
2020年04月04日 03点04分
9