Сейчас, когда пишу эту заметку, июль; жарко, и вспомнилась любопытная задачка. Почему мотыльки летят на свет?
Первое, что надо отметить: важно правильно поставить вопрос. Спросишь "зачем им лететь на свет" или даже "почему они стремятся сгореть" и сам вопрос заведет не туда. Правильный вопрос: "Почему мотыльки летят на свет".
Ответ, конечно, всем известен. Потому что эволюция выработала эффективный способ полета по прямой: направление полета должно быть под постоянным углом к направлению на Луну. Луна далеко, так что за небольшие интервалы времени она практически неподвижна на небе, так что действительно метод работает.
Однако эволюция не успела приспособиться к искусственным источникам света. Мотыльки принимают его за Луну и летят так, чтобы свет падал под постоянным углом к вектору их мгновенной скорости. И... какова же траектория?
Я расскажу, как я бы решал эту задачу. Точнее, как я ее и решал. Возможно, есть более изящные и простые решения. Я люблю такие изучать, но сам в работе предпочитаю самые прямые и незатейливые методы. И когда решаю задачки для удовольствия, действую той же тяжелой шпагой: без особых финтов и пируэтов.
Итак, поместим начало координат в источник света. Тогда положение мотылька задается некоторым двумерным вектором r. Он зависит от параметра, которым может (но не обязано) быть время. Если нас интересует траектория, то лучше не время, а что-нибудь другое, так как по одной и той же траектории можно двигаться с разными скоростями.
Касательный вектор к траектории — производная по параметру, r'. По условию, между этими векторами постоянный угол α.
Запишем определение скалярного произведения: rr'=|r|∙|r'|∙cos(α). Получилось векторное дифференциальное уравнение: неплохо, но пока неясно, как его решать. Тем более, что неизвестных две, а уравнение одно.
Нас интересует расстояние R=|r| до источника, ведь именно его убывание согласуется с семантикой "лететь на огонь". Попробуем перейти в полярные координаты, в которых r=R∙(cos(φ),sin(φ)). Азимутальный угол φ и будет параметром. Тогда производная r' по нему есть
R'(φ)(cos(φ),sin(φ)) + R(φ)(-sin(φ),cos(φ)),
а ее длина |r'|²=(R')²+R², что несложно проверить непосредственно.
Скалярное произведение rr' тоже легко вычислить: оно равно RR'. В итоге в уравнении вообще не остается угла φ. Возведя обе части в квадрат, мы получим
R²(φ)(R')²=R²(φ)∙((R')²+R²)∙cos²(α)
Упрощение приводит к R'(φ)sin(α)=±Rcos(α).
Это уравнение легко решается разделением переменных. Дело в том, что производная R' есть dR/dφ, и можно переписать уравнение в виде
dR/R=±ctg(α)∙dφ.
Интегрируя, приходим к ln(R)=±ctg(α)∙φ + C, или
R(φ)=C∙exp(-ctg(α)∙φ)
Знак можно поменять, добавив 180 градусов к углу α.
Итак, получилась спираль: расстояние до центра экспоненциально убывает (или растет), за исключением особого случая α=90°: тогда траектория — окружность.
Остался неразобранным случай α=0, который в схему не попадает, давая обескураживающий ответ R=0, да и то через предел.
Если α=0, то r и r' лежат на одной прямой и, в принципе, мотылек либо летит к огню, либо от него.
Что тут осталось заметить. У уравнения может быть много решений, но мы уменьшили неопределенность, правильно выбрав параметр кривой. Всё многообразие вариантов упрятано в скорость движения по траектории, которая может быть какой угодно. Если бы параметром было время, задача бы резко усложнилась.
Второе: котангенс может принимать любые значения, и только он (то есть, угол α) определяет приближение к огню за один оборот вокруг него. Мотылек может летать с какой угодно скоростью, но за один оборот он сократит расстояние в одно и то же количество раз.
Третье: формально спираль нуля не достигает (только асимптотически, через бесконечное число оборотов), но мотылек вполне себе достигает: он не точка и огонек тоже, достаточно просто подлететь достаточно близко. Впрочем, в случае α=0 долететь до нуля за конечное время вполне себе можно.
Последнее: возможна и раскручивающаяся спираль, но эти мотыльки к огню не подлетают и потому в статистику не попадают...