Лекция Стивена Вольфрама

ВНИМАНИЕ!!!

БЛОГ ПЕРЕЕХАЛ НА НОВЫЙ АДРЕС https://blog.wolframmathematica.ru

Онлайн машина вычисления знаний Wolfram|Alpha ®

Онлайн машина вычисления знаний Wolfram|Alpha ®

понедельник, 30 июля 2012 г.

Следя за мировыми рекордами
Следя за мировыми рекордами

Перевод поста Даниэля Лихтблау (Daniel Lichtblau),
сотрудника научно-информационной группы
компании Wolfram Research
Оригинальный пост: Tracking the World Records
Перевод сделал Осипов Р. А.
Так как летние Олимпийские игры 2012 года уже совсем близко, а рекорды ждут пока они будут побиты, то сейчас самое время, чтобы рассмотреть некоторые стороны беговых видов легкой атлетики. Я пишу эту статью сейчас, так как, как только начнутся соревнования по легкой атлетике на Олимпийских играх, я твердо намерен провести это время смотря телетрансляцию. Почему мне нравится легкая атлетика? Ну, каким школьным спортом может заняться кто-то (хотя лучше сказать, мог заняться), если он тощий и не обладает особой (хотя лучше сказать, совершенно не обладает) координацией движений?
Я остановлюсь на соревнованиях по бегу среди мужчин, но все, что будет сказано, почти наверняка будет верно и для женщин. Мы будем рассматривать скорости мировых рекордов, и то, как они меняются по мере увеличения дистанции. Я хотел бы начать с демонстрации моей коллеги в Wolfram Research, Си Блиндер, которая называется “Как быстро вы можете бегать?” (“How Fast Can You Run?”). Демонстрация показывает, что скорость бега имеет интересную зависимость от длины дистанции, которая будет рассматриваться мной в этом посте. Попутно я также покажу вам ненароком, что я ничего не знаю о моделировании данных.

Для того чтобы подчеркнуть мои слова о рекордах, которые будут побиты, скажу, что некоторые из рекордов, перечисленные в демонстрации Блиндер уже устарели. Ниже приведен список рекордов, которые существуют на данный момент, в виде списка, каждый элемент которого имеет вид {дистанция (расстояние), время}, единицы измерения — {метры, секунды}. Я опустил менее распространенные дистанции, потому что они могут не показывать лучшие возможные результаты, даже среди самых лучших спортсменов.
In[1]:=
dtlist = {{100, 9.58}, {200, 19.19}, {400, 43.18}, {800, 101.01}, {1500, 206.}, {1609.34, 223.13}, {3000, 440.67}, {5000, 757.35}, {10000, 1577.53}, {42195, 7380}} ; distances = dtlist[[All, 1]] ;
Раздел, в котором мы претендуем на то, чтобы сделать серьезные вычисления  (или: Как линия может иметь два разных угла наклона)
В демонстрации Блиндер, было отмечено, что зависимость времени от длины дистанции в логарифмическом масштабе имеет вид, близкий к линейной зависимости. Ниже представлена картинка, на которой это видно.
In[2]:=
p1 = ListLogLogPlot[dtlist, AxesOrigin-> {40, 1}, ImageSize->500, TicksStyle->16, PlotMarkers-> {Automatic, Tiny}]
Out[2]=
Sledja_za_mirovymi_rekordami_1.gif
Эта зависимость похоже линейна. Давайте посмотрим, какой вид имеет эта линейная зависимость (в дважды логарифмическом масштабе), описывающая взаимосвязь между временем и дистанцией, которую мы видим. Возьмем уравнение линии в дважды логарифмическом масштабе в общем виде: log(y)=a log(x)+b. Итак, что же можно сказать о зависимости y как функции x, следующей из этого уравнения?
In[3]:=
f1 = y/.First[Solve[Log[y] == a * Log[x] + b, y]]
Out[3]=
Sledja_za_mirovymi_rekordami_2.gif
Так как e^b является положительной константой, то мы имеем модель вида y = k x^a, которая имеет неизвестные параметры k и a. Пока что не плохо. Теперь, чтобы найти значения этих параметров, при которых модель будет наилучшим образом описывать наши данные, нам потребуется помощь специалиста в области регрессионного анализа. Я не специалист в этом вопросе. Я попробовал просто подогнать модель в дважды логарифмическом масштабе, переводя затем все в обычные координаты, при этом я увидел, что при больших значениях абсциссы, экспериментальные значения начинают значительно отклоняться от найденных по модели предсказанных значений.
Все-же, модель плохо описывала данные. Если вы присмотритесь внимательно к точкам на рисунке выше, или загляните каким-то образом в мой разум, то думаю, вы согласитесь, что на самом деле чтобы описать наши данные через точки на рисунке нужно провести две немного отличающиеся прямые линии, которые образуют незначительный «излом» в той точке, где они пересекаются (это легче увидеть на рисунке, представленном ниже). Эта точка находится где-то в районе дистанций, имеющих среднюю длину, подробнее об этом позже. Итак, я буду описывать разными моделями эти два участка значений  дистанций (хотя и с некоторым их перекрытием), а затем отображу их на одном графике.
Я позволю себе отбросить первую точку. Причиной для этого служит то, что дистанции 100 и 200 метров лучшие спортсмены пробегают с одинаковой скоростью. То есть, время рекорда на дистанции 200 м почти точно (ошибка в настоящее время составляет всего 2 сотые секунды) в 2 раза больше времени рекорда на дистанции 100 м. Это означает, что эти две точки не могут удовлетворять нетривиальной экспоненциальной зависимости, а значит включение точки, соответствующей дистанции 100 м может ухудшить модель.
Без лишних слов, найдем модель (экспоненциальную кривую), описывающую короткие дистанции на отрезке от 200 м до 1 мили.
In[4]:=
y1[x_] = f1/.FindFit[Log @ N @ dtlist[[2;;6]], a * x + b, {a, b}, {x}]
Out[4]=
Sledja_za_mirovymi_rekordami_3.gif
Посмотрим, какие значения предскажет данная модель для некоторых коротких дистанций.
In[5]:=
Map[{#, y1[#]} &, distances[[1;;7]]]
Out[5]=
Sledja_za_mirovymi_rekordami_4.gif
Сравнивая полученные значения с реальными данными, мы видим, что эта модель неплохо описывает почти всю первую половину дистанций, после чего она дает сильно заниженное значение времени для дистанции 3000 м. ”Почти” относится к тому, что по причине, указанной выше, дистанция 100 м описывается плохо.
Теперь перейдем к длинным дистанциям, найдем модель, которая предсказывала бы значения времени для дистанций от 1500 м до марафонского забега.
In[6]:=
y2[x_] = f1/.FindFit[Log @ N @ dtlist[[5;; -1]], a * x + b, {a, b}, {x}]
Out[6]=
Sledja_za_mirovymi_rekordami_5.gif
In[7]:=
Map[{#, y2[#]} &, distances[[4;; -1]]]
Out[7]=
Sledja_za_mirovymi_rekordami_6.gif
Снова полученная модель не плохо описывает большую часть дистанций, однако для длин дистанций не превышающих 800 м ошибка видна даже невооруженным глазом.
Теперь покажем обе модели и точки реальных рекордов на одном графике. Обе модели продолжены за границы тех интервалов, на которых они построены, так что легко видеть те участки, где их предсказания плохи.
In[8]:=
Sledja_za_mirovymi_rekordami_7.gif
Out[10]=
Sledja_za_mirovymi_rekordami_8.gif
Получается, что наилучшая модель состоит из линии, состоящей из отрезков двух прямых с изломом. (Может ли линия изменить свой наклон? А может ли леопард изменить свои пятна?)
Раздел, в котором героем повествования становится кривая
Я думаю, что теперь многое ясно. Но вряд ли история на этом заканчивается. Для того, чтобы придти к новой идее (которая приведет нас к излому, о котором говорилось выше), давайте посмотрим на график скорости. Найдем скорости (размерность скорости будет м/с):
In[11]:=
speeds = Map[{#[[1]], #[[1]]/#[[2]]} &, N @ dtlist]
Out[11]=
Sledja_za_mirovymi_rekordami_9.gif
Теперь построим график зависимости скорости от длины дистанции в дважды логарифмическом масштабе.
In[12]:=
ListLogLogPlot[speeds, Joined->True, ImageSize->500, TicksStyle->16, PlotMarkers-> {Automatic, Tiny}]
Out[12]=
Sledja_za_mirovymi_rekordami_10.gif
Из этого графика ясно видно, что дистанции 100 и 200 м атлеты пробегают с одной и той-же средней скоростью (хотя на самом деле более глубокое рассмотрение забегов показывает, что все не так просто). Опять мы наблюдаем явление, связанное с одним или двумя изломами в графике, которые показывают разрывность в изменении скорости. Так что-же происходит?
Несколько лет назад, когда я раздумывал о мировых рекордах, я понял, что начиная с дистанции 200 метров время рекорда падает примерно на одну секунду за каждые 100 метров при каждом удвоении дистанции. За одним исключением, которое я называю “аномалией”. Между дистанциями 400 и 800 метров изменение составляет около 2 секунд на каждые сто метров. То есть, рекорд на дистанции 800 м составляет около 16 секунд, что больше, чем на вдвое меньшей дистанции в 400 м. Есть ли объяснение этому? Я расскажу об этом позже.
Замечу, что рассматриваемые цифры и выводы относятся только к элите мужских бегунов. В некоторых случаях они могут даже применяться к одному и тому же бегуну. На Олимпийских играх 1976 года, например, время, за которое бегун Альберто Хуанторена (Alberto Juantorena) преодолел дистанцию 800 м превышало чуть меньше чем на 16 с время, которое он показал на дистанции 400, причем, помимо всего прочего, это был новый мировой рекорд. (Нет никаких оснований помнить об этой мелочи, конечно. Только если вам не попался этот вопрос в качестве домашнего задания). Это говорит о том, что он пробежал 800 м относительно быстрее. Для лучших бегуний, рекорды которых я правда не изучал, я ожидаю, что существует аналогичное правило, хотя и с несколько большим изменением скорости и изломом, который, вероятно, может находиться в другом месте.
А пока давайте проигнорируем наличие аномалии и сделаем вид, что потеря скорости с удвоением длины дистанции является постоянной. Означает ли это, что мы снова получим экспоненциальную зависимость? Ну, мы сможем узнать это, так как у нас в руках есть Mathematica. Рекуррентное соотношение, соответствующее такой модели имеет вид  f(2 x)=2 f(x)+k x, где k — некоторая константа. Нам потребуется некоторое значение из нашего набора данных, я взял время на дистанции 1500 м в качестве этого значения.
In[13]:=
model2 = f[x]/.First[RSolve[{f[2x] == 2f[x] + k x, f[1500] == 206.}, f[x], x]]
Out[13]=
Sledja_za_mirovymi_rekordami_11.gif
Хм... полученный результат вряд ли похож на экспоненциальную зависимость. Совершенно ясно, почему мы не получили ее. Однако, не будем бояться и сделаем еще одну попытку. Так как x log(x) мажорирует х, мы должны указать, что параметр k должен быть положителен. Зная, что имеются проблемы со скоростями предшествующими дистанции в 800 м, будем использовать данные для дистанций, не короче 800 м, чтобы построить модель.
In[14]:=
y3[x_] = model2/.FindFit[dtlist[[4;; -1]], {model2, k≥.001}, {k}, {x}]
Out[14]=
Sledja_za_mirovymi_rekordami_12.gif
Теперь проверим качество этой модели на всем наборе данных.
In[15]:=
Map[{#, y3[#]} &, distances]
Out[15]=
Sledja_za_mirovymi_rekordami_13.gif
Эта модель не очень хороша для дистанций меньших 800 м. Для дистанции 800 м она также не точна, хотя я помню, когда предсказание согласно этой модели было весьма точно для давно установленного мирового рекорда (см. замечание выше о Олимпиаде 1976 года).
In[16]:=
Sledja_za_mirovymi_rekordami_14.gif
Out[17]=
Sledja_za_mirovymi_rekordami_15.gif
Хотя трудно показать визуально, эта кривая лучше описывает данные, чем та, которая состоит из двух отрезков прямых, что была рассмотрена выше. Красная линия лежит ближе к данным, но плохо описывает короткие дистанции. В последней модели нам требуется лишь один параметр, а не два, так что в некотором смысле последняя модель несколько ближе к минимальной.
Не зная, что я буду писать на эту тему, мой коллега Майкл Тротт (Michael Trott), как будто предвидя это, дал посмотреть мне следующую ссылку: “Оптимальный темп бега в соревнованиях на дистанциях 400 и 800 м” Джеймса Рирдон (James Reardon), от 2 апреля этого года. Эта статья содержит огромное количество информации и гораздо более качественную модель, чем та, которую я мог сделать, и объясняет некоторые  физиологические явления, которые, скорее всего, имеют отношение к аномальному падению скорости при переходе от дистанции длиной 400 м к дистанции 800 м. Одним из важных факторов является то, что анаэробный метаболизм может происходить у лучших бегунов почти на всей длине дистанции в 400 м. Таким образом, забег на 800 м с физиологической точки зрения является совершенно иным явлением. Ответственно ли это физиологическое изменение за аномальный скачок в уменьшении скорости? Я не достаточно знаю, чтобы говорить об этом с уверенностью, но я нахожу эту корреляцию весьма интригующей.
Домашнее задание
Джесси Оуэнс (Jesse Owens) выиграл олимпийские медали, золотые, на двух последовательных дистанциях (100 и 200 м). Майкл Джонсон (Michael Johnson) сделал то же самое на дистанциях 200 и 400 м (обе тоже золотые). На самом деле,  для каждой последующей пары дистанций есть, по крайней мере один, бегун который завоевывал медали на обеих дистанциях (я знал это даже без поиска в интернете).
Вопрос таков: для каждой такой последовательной пары, назовите бегуна, который выиграл золотые олимпийские медали на обеих дистанциях.
Ладно, я признаюсь. Была одна пара, для поиска которой мне пришлось воспользоваться Wolfram|Alpha. (Подсказка: просмотрите пары дистанций между 1500 и 5000 м и посмотрите, что получится)

Блог принадлежит “Русскоязычной поддержке Wolfram Mathematica
При любом использовании материалов блога, ссылка на блог обязательна.
SpikeyСоздано с помощью Wolfram Mathematica 8

Комментариев нет:

Отправить комментарий