Clear["Global`*"]
f[x_, \[Delta]_] = x (1 - (1 + \[Delta]/x^3)^(-1/3));
w[x_] := x^(-4) + 2 x^2 - 3 + c*(x^4 + 2*x^(-2) - 3) ;
pind[\[Lambda]_] =
Integrate[D[w[\[Lambda]], \[Lambda]]/(-1 + \[Lambda]^3), \[Lambda],
Assumptions -> \[Lambda] > 1];
h[x_, \[Delta]_, c_] =
pind[x] - pind[((x^3 + \[Delta])/(1 + \[Delta]))^(1/3)];
g[x_, \[Delta]_] =
1/2*((1 + \[Delta]/x^3)^(-4/3) - 4 (1 + \[Delta]/x^3)^(-1/3) + 3);
p[p1_, \[Epsilon]_, \[Omega]_, t_] := p1 + \[Epsilon]*Sin[\[Omega]*t];
tendlist = {2000, 5000}; (*两个不同的截止时间*)
sol = Table[
Block[{p1 = 0.6338, \[Delta] = 1,
c = 0.1, \[Omega] = 1.88, \[Epsilon] = 0.001},
NDSolve[{f[x[t], \[Delta]]*x''[t] + g[x[t], \[Delta]]* x'[t]^2 +
h[x[t], \[Delta], c] == p[p1, \[Epsilon], \[Omega], t]
, x[0] == 2.25375, x'[0] == 0}, {x[t], x'[t]}, {t, 0,
tend (*此处为截止时间*)}, MaxSteps -> \[Infinity]]], {tend, tendlist}];
tx1 = Plot[Evaluate[x[t] /. sol[[1]]], {t, 0, 100},
AxesLabel -> {"t", "x"},
GridLines -> {None, {{2.25375, {Red, Thick}}}},
PlotStyle -> Dashed];
tx2 = Plot[Evaluate[x[t] /. sol[[2]]], {t, 0, 100},
AxesLabel -> {"t", "x"},
GridLines -> {None, {{2.25375, {Red, Thick}}}}];
Show[tx1, tx2](*对比不同截止时间,相同时间段0--100的数值结果,出现差异现象*)
NDSolve解微分方程为什么会受截止时间的影响?
附对比图如下
![](https://mmaqa.com/qa/?qa=blob&qa_blobid=10010723628949682169)
其中,虚线 tmax=2000
实线 tmax=5000