Gnuplot的计算不正确

时间:2013-11-11 20:12:44

标签: gnuplot orbital-mechanics

我尝试用gnuplot绘制轨道速度,但不知何故gnuplot得到的结果与我完全不同。现在根据经验,我认为我的价值观是正确的,但是我使用Google的计算器检查了结果。

我使用WikipediaGoogle gets a velocity at apoapsis of about 2.2 km/s中的公式。现在gnuplot本身的速度约为3.2 km / s。

set xlabel "Altitude above sea level (meters)"
set ylabel "Orbital velocity (meters per second)"
set title "Velocity of an 80×100 km orbit around Kebrin"
set terminal png size 800,640
set output "orbitv.png"
set xrange [80000:100000]
G=6.674*10**-11
M=5.2915793*10**22
R=600000
plot sqrt(G*M*(2/(x+R)-1/(90000+R))) title 'Orbital velocity' with lines

This is the resulting graph

我想知道我犯了错误吗?我将公式直接复制到Google,并将GMR替换为常量值,将x替换为100000,并将结果链接到上面。

1 个答案:

答案 0 :(得分:3)

这个问题与gnuplot在进行算术时如何处理整数有关。如果有1/(90000 + R)之类的表达式,如果R是整数,则gnuplot会计算1/(690000) = 0,这是完全有效的整数运算。解决方案是在数字中添加一个句点,以便gnuplot知道将其转换为浮点数:

R = 600000.     # short option
R = 600000.0    # clearer option

另一个解决方案是对大数字使用电子记数法:

R = 6e5

Gnuplot将其视为浮动。这也有助于防止数量级/零数错误。

顺便说一句,python和其他语言在整数运算方面有同样的问题 - 小心!