2013-11-11 2 views
2

Я пытаюсь построить орбитальную скорость с помощью gnuplot, но как-то gnuplot получает совершенно разные результаты, чем я. Теперь, исходя из опыта, я думаю, что мои ценности верны, но я проверил его с помощью калькулятора Google и получаю результаты.Расчет Gnuplot неверен

Я использую формулу от Wikipedia и Google gets a velocity at apoapsis of about 2.2 km/s. Теперь сам 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 

This is the resulting graph

Я задаюсь вопросом, были, я сделал ошибку? Я скопировал формулу непосредственно в Google и заменил G, M и R с постоянными значениями и x с 100000 и получить результат, связанный выше.

ответ

2

Эта проблема связана с тем, как gnuplot обрабатывает целые числа при выполнении арифметики. Если у вас есть выражение типа 1/(90000 + R), если R является целым числом, gnuplot оценивает 1/(690000) = 0, что является вполне допустимой целочисленной арифметикой. Решение состоит в том, чтобы добавить период к числу так, что Gnuplot знает, чтобы бросить его как число с плавающей точкой:

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

Другим решением является использование электронного обозначения больших чисел:

R = 6e5 

Gnuplot рассматривает это как поплавок. Это также помогает предотвратить ошибки порядка величины/числа нулей.

Кстати, python и другие языки имеют одинаковую проблему с целочисленной арифметикой - следите!

Смежные вопросы