На днях я решил ознакомиться с поэзией Иосифа Бродского, и в сборнике его стихов мне попалось вот такое замечательное стихотворение:
Прачечный мост
F. W.
На Прачечном мосту, где мы с тобой
уподоблялись стрелкам циферблата,
обнявшимся в двенадцать перед тем,
как не на сутки, а навек расстаться,
- сегодня здесь, на Прачечном мосту,
рыбак, страдая комплексом Нарцисса,
таращится, забыв о поплавке,
на зыбкое свое изображенье.
Река его то молодит, то старит.
То проступают юные черты,
то набегают на чело морщины.
Он занял наше место. Что ж, он прав!
С недавних пор все то, что одиноко,
символизирует другое время;
а это - ордер на пространство.
Пусть
он смотрится спокойно в наши воды
и даже узнает себя. Ему
река теперь принадлежит по праву,
как дом, в который зеркало внесли,
но жить не стали.
Стихотворение само по себе превосходное, но особое внимание я обратил на строки:
«...уподоблялись стрелкам циферблата,
обнявшимся в двенадцать перед тем,
как не на сутки, а навек расстаться...»
Сравнение действительно очень красивое и поэтичное, вот только через некоторое время мне пришло в голову, что стрелки-то часов встречаются не раз в сутки, и даже не два... А сколько? Ну, наверное, 24... А может меньше? Что ж, давайте вычислим.
Для начала запишем выражения, определяющие зависимость угла отклонения часовой (h) и минутной (m) стрелки от времени суток (заданного в секундах). Положение часовой стрелки определяется дробной частью отношения текущего времени в секундах к двенадцати часам (выраженным в секундах — 43200 с). Дробная часть вычисляется путем вычитания из числа его целой части (функция floor выделяет целую часть). Аналогично, положение минутной стрелки определяется отношением текущего времени в секундах к одному часу (3600 с). Естественно, соотношения умножаются на 360 градусов и результат будет у нас в градусах.
Время у нас варьируется от 0 до 86400 секунд, в Mathcad установлен шаг в одну секунду. Таким образом, в час ночи (3600 секунд) часовая стрелка будет отклонена от положения «12 часов» (принятого за 0 градусов) на 30 градусов, а минутная стрелка будет установлена на 0 градусов (на 12 часов):
А в 3:30 (12600 с) и 15:30 (55800 с) положение будет следующим:
А теперь взглянем на график функций h(t) и m(t):
Итак, мы видим, что пересечение часовой и минутной стрелки за сутки происходит 22 раза — так как 0 и 24 часа — это одна и та же точка, а точки, соответствующие нулевому положению минутной стрелки являются точками разрыва (неустранимый разрыв 1-го рода), и потому фактически пересечения графиков в области этих точек не происходит.
Но как же точно определить моменты времени (значения аргумента t), в которые графики пересекаются (h(t)=m(t))? Давайте для начала построим график разности двух функций:
Опять же, моменты «сброса» угла в ноль (вертикальные участки графика) не учитываются и являются точками разрыва. В таком случае мы опять же получаем 22 точки пересечения (где функция равна нулю).
Для того чтобы определить все 22 момента времени, нам надо найти корни уравнения:
Для этого воспользуемся разностной функцией и оператором root, который позволяет определять точки, в которых функция обращается в ноль. За начальные точки (t1) возьмем начало каждого из 24 часов — от 0 до 23 (0 с, 3600 с, 7200 с ... 84200 с). К сожалению, функция root не позволяет использовать в качестве аргумента (начального значения) вектор, потому каждое значение t1 придется прописывать вручную.
Для наглядности будем вычислять время в формате hh:mm:ss по формулам:
Конечно же получилось время 00:00:00. После часу ночи следующая точка:
После двух:
И так далее, увеличивая начальные условия на 3600 (1 час), с точностью до одной секунды мы получаем следующие значения времени:
Начальная точка, с | с | hh:mm:ss |
0 | 0 | 00:00:00 |
3600 | 3927 | 01:05:27 |
7200 | 7855 | 02:10:54 |
10800 | 11782 | 03:16:21 |
14400 | 15709 | 04:21:49 |
18000 | 19636 | 05:27:16 |
21600 | 23564 | 06:32:43 |
25200 | 27491 | 07:38:10 |
28800 | 31418 | 08:43:38 |
32400 | 35345 | 09:49:05 |
36000 | 39273 | 10:54:32 |
39600 | 43200 | 12:00:00 |
43200 | 43200 | 12:00:00 |
46800 | 46800 | 13:05:27 |
50400 | 51055 | 14:10:54 |
54000 | 54982 | 15:16:21 |
57600 | 58909 | 16:21:49 |
61200 | 62836 | 17:27:16 |
64800 | 66764 | 18:32:43 |
68400 | 70691 | 19:38:10 |
72000 | 74618 | 20:43:38 |
75600 | 78545 | 21:49:05 |
79200 | 82473 | 22:54:32 |
82800 | 86400 | 00:00:00 |