Поскольку это домашнее задание, я не дам вам полного ответа - я просто дам несколько советов.
Вопрос задает вопрос о сокращении времени. Для того, чтобы сделать это изменение этой линии:
dt = 0.1 # Use a smaller value.
Затем просит вас подтвердить, что период и амплитуда колебаний являются правильными. Самый простой способ сделать это - распечатать результаты на экране или в файле и проверить их вручную. Это требует незначительной возможности программирования и может быть выполнено всего за несколько минут.
Альтернативно, вы можете рассчитать период и амплитуду программно, найдя локальный максимум угла. Для этого выполните поиск для каждого из трех значений, чтобы средний был больше двух с обеих сторон. Я бы предложил написать это отдельная функция - возможно, как генератор (используя выход). Период между двумя локальными максимумами - это период.
Это не имеет ничего общего с «логическим программированием»: http://en.wikipedia.org/wiki/Logic_programming –