1995 | 1996 | 1997 | 1998 | 1999 | 2000 | 2001 | 2002 | 2003 | 2004 | Оглавление текущего номера /190, 1997 г./ | Бонус | Поиск  

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

ВАЛЕРИЙ ОЧКОВ,
Опубликовано: 31.3.1997


© 2003, Журнал «Компьютерра» | http://www.computerra.ru/offline
Этот материал вы сможете найти в Интернете по адресу: http://www.computerra.ru/offline/1997/190/448/

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

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

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

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

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

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

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

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

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

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

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

Примечание редакции:

В настоящее время разработаны драйверы, корректирующие прохождение файлов с севера на юг и обратно. Их можно считать по ftp://coriolis.com/coriolis.


1995 | 1996 | 1997 | 1998 | 1999 | 2000 | 2001 | 2002 | 2003 | 2004 | Оглавление текущего номера /190, 1997 г./ | Бонус | Поиск  

© 2004, Издательский дом «Компьютерра» | http://www.computerra.ru
Телефон редакции: (095) 232-22-61
E-mail редакции: inform@computerra.ru