В прошлой заметке мы разобрали классическую задачу о лисе и зайце: лиса гонит зайца, держа курс строго на него. Заяц бежит прямолинейно с постоянной скоростью. Скорость лисы постоянна по величине. Нужно получить уравнение траектори лисы и выяснить, состоится ли поимка, и когда, если состоится.
Начальным условием был старт из следующего положения: заяц в начале координат, лиса в точке (0,1). То есть, изначально лиса направлено перпендикулярно курсу зайца.
А что, если он расположен не в начале координат, а где угодно на оси х, то есть его начальное положение это точка (Z,0)?
Сегодня разберем эту задачу. В общем-то уравнения мы все получили. Проследите, как мы пришли к этому:
x` = z = sinh( ln(y)/u ) + K.
В прошой заметке мы положили К=0, что было смело, но оправдалось. Обратная кавычка, напоминаю, означает производную по y.
Однако эта константа необходима, если заяц изначально находится не в точке x=0, а в какой-то другой x=Z. Решение будет такое:
Оно получается интегрированием того, в котором теперь надо не забыть константу:
Касательная к кривой в точке (0,1) должна пересекать ось х в точке (Z,0). Записываем уравнение касательной:
x = (dx/dy) (y - 1)
Подставляя в него x=Z, y=0, получаем x` = -Z.
Константу K определим из уравнения выше, подставив в него y=1 и найденную производную: K = -2Z.
Константу С найдем из проинтегрированного уравнения, подставив в него y=1, x=0 (начальная позиция лисы) и найденную К:
С = u/(u-1) - u/(u+1) + 2Z = 2u/(u²-1) + 2Z.
В особом случае u=1 получим такую же К, но решение будет
2x = y ²/2 - ln(y) - 2Zy + С.
Зачем мы всё это так подробно выписываем? Чтобы понять важную вещь. Лиса не догонит зайца, если не превосходит его в скорости, какую бы фору она не имела! Как видим, препятствия для достижения линии y=0, которое необходимо для поимки, остаются: логарифм при u=1 и отрицательная степень при u<1. При этом лиса более быстрая, чем заяц, догонит его при любой его форе.
Всё это проиллюстрировано ниже.
Пограничный случай равных скоростей любопытен ещё вот чем. Самое первое уравнение (см. предыдущую заметку) выражает время: t = x - y (dx/dy). В точке поимки (если скорость лисы выше, чем у зайца) у нас у=0 и тогда t=x. Заяц как раз окажется в этой точке, что и означает "поимку": лиса и заяц встретились. Если скорость лисы не больше скорости зайца (единичной), то она вообще оси х не достигнет. Но каково расстояние между лисой и зайцем?
Подробный анализ довольно сложен. Но ясно, что при больших временах y почти равен нулю, тогда лиса бежит почти по оси х с той же скоростью, что и заяц. Отстанет она от зайца или не отстанет?
С одной стороны, ясно, что отстанет; ведь заяц бежит только по прямой, а лисе ещё нужно к этой прямой приблизиться. С другой стороны, если скорость лисы хоть немного больше 1, то она зайца догонит; не значит ли это, что при равной скорости она его догонит асимптотически, в бесконечности? А практически просто приблизится достаточно, чтобы поймать?
Если выписать производные по времени, то получим
y' = -2y / (y² + 1),
откуда можно выразить время:
2t = (1 - y²) / 2 - ln(y).
Наоборот, выразить y через время явной формулой, не удастся. Но это ничего, ведь у нас есть выражение для х через у:
2x = (y² - 1) / 2 - ln(y).
Пусть прошло какое-то время, так что у стал совсем маленький. Тогда
2x ≈ -0.5 - ln(y), 2t ≈ 0.5 - ln(y).
Заяц за время t столько и пробегает по оси х, а лиса, которая почти по оси х и бежит, отстает от t на 0.5.
И далее для неё погоня безнадёжна: расстояние в половину начального расстояния до зайца ей не сократить.
А если чуть-чуть увеличить скорость, то сократить легко!
Получается удивительная вещь! Хотя после разбора легко не удивляться. Если параметр не превосходит единицы, поимки нет даже асимптотически, а если больше, то поимка есть за конечное время. Конечно, если всё изначально на прямой, то так и будет: при равных скоростях фору не сократить, а если скорость догоняющего больше, то любая форма будет преодолена. Но мы вычислили зато, какая именно фора останется у зайца! Лиса "меняет" расстояние в одну единицу "поперек" на половину единицу "вдоль". Тоже полезно...
Но ясно, что такой способ погони далеко не оптимален.
Прикладываю однострочники на R.
Для форы:
u=2; Y=1; Z=-5; K=-2*Z; C=-u/(u+1)*Y^((u+1)/u)+u/(u-1)*Y^((u-1)/u)-K*Y; y=Y-seq(1000)/1000*Y;x=(u/(u+1)*y^((u+1)/u)-u/(u-1)*y^((u-1)/u)+C+K*y)/2; plot(x,y,type='l',xlim=c(-5,3));abline(h=0,col='black');abline(v=0,col='black');abline(v=C/2,col='blue')
Для расстояния:
u=1; Y=1; Z=0; y=seq(1e5)/1e5*Y; t=(1-y^2)/4-log(y)/2; x=(y^2/2-log(y)-1/2)/2; plot(t,sqrt((x-t)^2+y^2),type='l',ylab='Distance');
Удачи в погонях!