我把一些小数表示的实数用分数表示,然后加大了工作精度WorkingPrecision、设定最小递推数MinRecursion,结果就没有虚数了,虽然不太了解其中的道道...
v11[x_, \[Delta]_, p1_, b11_] := -2 - b11 + (-1 + x)/x + 2 b11 x +
2 x^2 - b11 x^4 - 1/3 p1*\[Delta] (-1 + x^3) - (
1 - 1/(x^3 (1 + \[Delta])^3 - \[Delta] (3 + \[Delta] (3 + \
\[Delta])))^(1/3))/(1 + \[Delta])^3 - (
2 b11 (-1 + (x^3 (1 + \[Delta])^3 - \[Delta] (3 + \[Delta] (3 + \
\[Delta])))^(1/3)))/(1 + \[Delta])^3 - (
2 (-1 + (x^3 (1 + \[Delta])^3 - \[Delta] (3 + \[Delta] (3 + \
\[Delta])))^(2/3)))/(1 + \[Delta])^3 + (
b11 (-1 + (x^3 (1 + \[Delta])^3 - \[Delta] (3 + \[Delta] (3 + \
\[Delta])))^(4/3)))/(1 + \[Delta])^3
F[x_, \[Delta]_] := ((1/((1 + \[Delta])^3*x^3) - x^(-3) + 1)^(-1/3) -
1) x
plist = Range[5/2, 3, 1/100];
Tpoint = Table[{sol =
NSolve[v11[x, 1/100, p, 1/10] == 0 && x > 0, x,
WorkingPrecision -> 30];
xa = x /. sol[[-1]];
xb = x /. sol[[-2]];
p // N,
T = 2*NIntegrate[(-1/2 x^2*F[x, 0.01]/v11[x, 0.01, p, 0.1])^(1/
2), {x, xa, xb}, MinRecursion -> 5]}, {p, plist}]
结果如下
{{2.5, 2.50447}, {2.51, 2.53123}, {2.52, 2.55932}, {2.53,
2.58888}, {2.54, 2.62006}, {2.55, 2.65303}, {2.56, 2.688}, {2.57,
2.7252}, {2.58, 2.76494}, {2.59, 2.80755}, {2.6, 2.85345}, {2.61,
2.90318}, {2.62, 2.95738}, {2.63, 3.01689}, {2.64, 3.0828}, {2.65,
3.15656}, {2.66, 3.2402}, {2.67, 3.33662}, {2.68, 3.45019}, {2.69,
3.58799}, {2.7, 3.76258}, {2.71, 3.99961}, {2.72, 4.36644}, {2.73,
5.1881}, {2.74, 11.6725}, {2.75, 10.0877}, {2.76, 9.32684}, {2.77,
8.82028}, {2.78, 8.44005}, {2.79, 8.13582}, {2.8, 7.88246}, {2.81,
7.66561}, {2.82, 7.47624}, {2.83, 7.30832}, {2.84, 7.1576}, {2.85,
7.021}, {2.86, 6.89617}, {2.87, 6.78132}, {2.88, 6.67503}, {2.89,
6.57617}, {2.9, 6.48381}, {2.91, 6.39719}, {2.92, 6.31566}, {2.93,
6.23869}, {2.94, 6.16583}, {2.95, 6.09667}, {2.96, 6.03088}, {2.97,
5.96816}, {2.98, 5.90825}, {2.99, 5.85093}, {3., 5.796}}
不再有虚数了,希望有人能给出解释