Gnuplot的计算不正确

标签 gnuplot orbital-mechanics

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

我使用 Wikipedia 中的公式和 Google 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并获得上面链接的结果。

最佳答案

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

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

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

R = 6e5

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

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

关于Gnuplot的计算不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19915037/

相关文章:

linux - 在 gnuplot 中保存 'stats' 命令的输出

gnuplot 5 多图对齐不向后兼容

gnuplot - 如何使用 png 终端通过 gnuplot 访问各种真实字体?

plot - 如何为 Gnuplot 数据文件中的每个点选择颜色?

javascript - Three.js 中太阳系可视化的轨道力学(行星的 x、y、z)

c++ - 如何在给定时间后确定物体在 2D 空间中的位置?

javascript - 无法将 ThreeJS 网格添加到范围外的场景 - THREE.Object3D.add : object not an instance

c# - 如何预测船舶与人体在二维影响范围内的相遇

c - 将数据从 C 管道传输到 Gnuplot