Почти безмассовый кот упал в космос (не волнуйтесь, с скафандром и всем остальным) в точке (x, y, z)
со скоростью (vx, vy, vz)
. В этой точке находится фиксированная, бесконечно плотная планета (с объемом 0), (0, 0, 0)
которая притягивает объекты на расстоянии r
с ускорением 1/r^2
. Согласно ньютоновской гравитации, куда движется объект после времени t
?
Почти безмассовое в этом случае означает, что вы выводите значение lim (mass --> 0) <position of cat>
. На массу влияет гравитация планеты, но гравитация кошки не влияет на планету. Другими словами, центральное тело является фиксированным.
Это несколько похоже на Code Golf: какова судьба космического корабля? [версия с плавающей запятой] , но это отличается, потому что это измерение точности.
Вы можете реализовать решение, основанное на моделировании, которое должно выполняться менее чем за 3 секунды, ИЛИ вы можете реализовать программу, которая дает точное значение (также должна выполняться менее чем за 3 секунды). Смотрите подробности о выигрыше ниже. Если вы реализуете симуляцию, она не должна быть точной, но ваш счет будет ниже из-за неточности.
Ввод : x y z vx vy vz t
не обязательно целые числа, представляющие координаты x, y, z, скорость в направлениях x, y и z и время соответственно. Гарантируется, что скорость кошки строго меньше, чем скорость спасения на этой высоте. Ввод может быть взят из любого места, включая параметры для функции. Программа должна работать менее чем за три секунды на моем ноутбуке t < 2^30
, а это означает, что если вы запускаете симуляцию, вы должны соответствующим образом скорректировать свой временной шаг. Если вы планируете использовать ограничение в 3 секунды для каждого тестового случая, убедитесь, что есть настраиваемый параметр, который может сделать его более точным / менее точным для увеличения скорости, чтобы я мог запустить его за три секунды на моем компьютере.
Выход : x y z
позиция после времени t
.
Поскольку проблема двух тел может быть полностью решена, теоретически можно получить идеальный, правильный ответ.
Оценка : для любого тестового случая ошибка определяется как расстояние между вашим выходом и «истинным» выходом. Истинный вывод определен как тот, который генерирует фрагмент теста. Если ошибка меньше чем 10^(-8)
, ошибка округляется до нуля. Ваша оценка - это средняя ошибка на 100 (или более) случайных тестовых случаях. Если вы напишите совершенно точный ответ, вы должны получить оценку 0; выигрывает наименьшее количество очков, и связи будут нарушены по длине кода.
Тестовые случаи :
1 0 0 0 -1 0 1000000000 --> 0.83789 -0.54584 0
В этом случае орбита идеально круглая с периодом 2 * пи, поэтому после оборота 159154943 раз кошка окажется примерно на (0,83789, -0,54584). Это не тестовый пример, на котором будет проверяться ваш код; однако, если вы отправите совершенно точный ответ, вы можете проверить его на этом.
Фрагмент ниже генерирует случайные дополнительные тестовые случаи и будет использоваться для оценки представлений; дайте мне знать, если есть ошибка с этим:
t
дается в единицу времени, что бы это ни было, и скорость будет использовать ту же единицу. Будь то в секундах или часах, ответ будет одинаковым.
nearly massless cat
Ну, а какой будет точная масса кошки? Должны ли мы просто использовать 0
в качестве значения массы этой кошки?
t
дается в секундах? Если да, будет ли скорость указываться в единицах в секунду или что-то меньшее?