Программирование и сила Кориолиса,
или
Необычайное приключение файла в Internet

(Programming and The Force of Coriolis – English text)

Валерий Очков

(Журнал «КомпьюТерра», 13’1997)

В свое время автору пришлось писать на языке Mathcad программу поиска минимума многомерной функции. Она здесь не приводится, но любопытные могут увидеть ее на стр. 134 в [2] или скачать с ftp://twt.mpei.ac.ru/ochkov.

Программа довольно простая – у автора больше времени ушло на поиск ей названия, чем на ее написание. В книге про Mathcad PLUS 6.0 программа названа «Два шага – Two step». Есть такой бальный танец. Один персонаж фильма «Свадьба в Малиновке» называл его «В ту степь». Программа при поиске минимума делает два шага от очередной точки приближения (от «печки», если вспомнить танец) и переходит туда, где значение оптимизируемой функции минимально. Эти два шага делаются по всем координатам (их N) в положительном (+D) и в отрицательном (-D) направлениях. По мере приближения к минимуму шаги укорачиваются. «Танец» повторяется до тех пор, пока шаг не станет короче заданного значения погрешности (D<TOL).

В программе интересен не сам алгоритм, а след, оставляемый программой на плоскости X-Y (в «поле») при оптимизации функции двух переменных - см. рис. 1 и 2.

Рис. 1. Начальные шаги приближения к минимуму

Рис. 1. Начальные шаги приближения к минимуму

Рис. 2. Конечные шаги приближения к минимуму

Рис. 2. Конечные шаги приближения к минимуму

Форма следа программы «Тустеп» позволила дать ей и другие названия. У многих народов считается, что чем больше у человека имен, тем больше у него небесных покровителей. Это, наверно, можно отнести и к программам.

Если наполнить ванну водой, бросить в нее, к примеру, перышко и выдернуть пробку, то перышко сначала будет более-менее спокойно двигаться к дырке, а потом закрутится в водовороте. Совсем как на наших рисунках: при начальных шагах приближения (рис. 1) промежуточные точки спокойно дрейфуют к минимуму, а затем закручиваются в вихре (рис. 2), который позволяет называть данный метод оптимизации не только «Тустеп», но и «Вальс». Но если быть совсем точным, то его следует именовать также и методом наискорейшего спуска воды. И вот почему.

Вода в ванне или в каком-либо ином сосуде с дыркой на дне всегда закручивается в одну сторону. Даже если воду раскрутить рукой в другом направлении, то, преодолев насилие, она вернет свою природную закрутку. Это связано с силой Кориолиса, которая в свою очередь зависит от вращения Земли вокруг своей оси. В северном полушарии вода закручивается по часовой стрелке, в южном – против, на экваторе – сливается без вихрей, а на полюсах – совсем не течет: замерзает (шутка!).

Автор переслал по Internet файл с программой оптимизации коллеге в Австралию (чем черт не шутит) и к полному своему удивлению, переходящему в удовлетворение, узнал, что след поиска минимума в южном полушарии закручивается против часовой стрелки. “Австралийский” след оптимизации из-за экономии места здесь не приводится. Но его можно увидеть, посмотрев на рис. 1 и 2 через зеркало.

Читатель, конечно, уже догадался, что его разыгрывают – статья помещена в апрельском номере журнала [3]. Причина иной закрутки следа поиска минимума южнее экватора, конечно, не в воде, хотя сила Кориолиса здесь присутствует: при пересылке файла в Австралию в текст программы вкралось маленькое изменение. Вместо строки for i Î 1..N появилась другая – for i Î N..1. На поиск минимума это не повлияло (перебор координат оптимизируемой функции ведется всего лишь с другого конца), но, тем не менее, след стал закручиваться по-иному. А виной тому все та же сила Кориолиса, заставляющая жесткие диски серверов и маршрутизаторов на юге вращаться несколько иначе, чем на севере. Отсюда и незначительные сбои при пересечении файлами экватора. Их выловить довольно трудно, т.к. при контрольной обратной пересылке файла ошибка исправляется по принципу минус на минус дает плюс.

Литература:

  1. Б.М. Яворский, А.А. Детлаф «Справочник по физике для инженеров и студентов вузов». М.: Наука, 1977
  1. В.Очков «Mathcad PLUS 6.0 для студентов и иженеров». М.: КомпьютерПресс, 1996
  1. Отрывной календарь на 1997 год для программистов и пользователей. ТОО «Тосна», 1996