Gnuplot';他的计算不正确

Gnuplot';他的计算不正确,gnuplot,orbital-mechanics,Gnuplot,Orbital Mechanics,我试图用gnuplot绘制轨道速度,但不知怎么的,gnuplot得到的结果与我完全不同。根据经验,我认为我的值是正确的,但我用谷歌的计算器检查了一下,得到了结果 我使用和中的公式。现在gnuplot本身的速度大约为3.2公里/秒 set xlabel "Altitude above sea level (meters)" set ylabel "Orbital velocity (meters per second)" set title "Velocity of an 80×100 km or

我试图用gnuplot绘制轨道速度,但不知怎么的,gnuplot得到的结果与我完全不同。根据经验,我认为我的值是正确的,但我用谷歌的计算器检查了一下,得到了结果

我使用和中的公式。现在gnuplot本身的速度大约为3.2公里/秒

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


我想知道我是不是犯了错误?我把公式直接复制到谷歌,用常量替换了
G
M
R
,用100000替换了
x
,得到了上面链接的结果。

这个问题与gnuplot在做算术时如何处理整数有关。当你有一个像
1/(90000+R)
这样的表达式时,如果
R
是一个整数,gnuplot计算
1/(690000)=0
,这是一个非常有效的整数算术。解决方案是在数字中添加句点,以便gnuplot知道将其转换为浮点数:

R = 600000.     # short option
R = 600000.0    # clearer option
另一种解决方案是对大数字使用e表示法:

R = 6e5
Gnuplot将其视为浮点数。这也有助于防止数量级/零的数量错误

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