您正在浮點數與大指數,幾個數字的小數點之後,指數[大咬數字]等等。將你的結果與這個修改進行比較,該修改用精確的合理數學完成一切,直到它使用64位精度的最後一步。
EAminusEV = 0067/1000;
NA = 10^16;
ND = 10^14;
k = 1381/1000*10^-23;
gA = 4;
m0 = 911/100*10^-31;
mp = 081/100*m0;
h = 6626/1000*10^-34;
keV = 8617/1000*10^-5;
Nv[x_] = 2 ((2 \[Pi] mp k)/(h^2 x))^(3/2)*10^-6;
p1[x_] = Nv[x]/gA Exp[EAminusEV/keV x];
pPlus[x_] = (-(ND + p1[x]) + Sqrt[(ND + p1[x])^2 + 4 p1[x] (NA - ND)])/2;
pMinus[x_] = (-(ND + p1[x]) - Sqrt[(ND + p1[x])^2 + 4 p1[x] (NA - ND)])/2;
ListLogLogPlot[Table[{N[x,64], N[pPlus[x],64]}, {x,1/300,1/20,1/10^4}],
Joined->True, PlotRange->All]
您應該注意在垂直軸上的小範圍,並在該軸上的幅度。這幾乎肯定意味着您應該仔細檢查以確認所有輸入參數都正確,至少有六位數的精度,考慮到您輸入的形式,這似乎不太可能。如果你沒有那個,那麼借用一些價格昂貴的新近校準的儀器,精確到六位或七位已知位數,以便進行所有測量。如果你對每個參數都沒有這個精度,那麼這可能只是使用高精度的精確數學來把不確定性轉化爲圖形毫無意義的廢話。就像提示一樣,這就是你的pPlus [x]的樣子。
1/2 (-100000000000000 + \[Sqrt]((100000000000000 + (2292870847500000000000
Sqrt[6290455] E^(6700000 x/8617) \[Pi]^(3/2) (1/x)^(3/2))/36363385297)^2 +
(90797685561000000000000000000000000000 Sqrt[6290455] E^(6700000 x/8617)
\[Pi]^(3/2) (1/x)^(3/2))/36363385297) - (2292870847500000000000 Sqrt[6290455]
E^(6700000 x/8617) \[Pi]^(3/2) (1/x)^(3/2))/36363385297)