Создана программа построения линий уровня функций двух переменных для системы MVS-100. Программа рассчитана на функции, имеющие звездчатые множества уровня. Предполагается, что любой луч, проведенный из общего центра звездчатости, пересекает линию уровня только один раз.
Рис. 1: Схема наследования радиусов
Последовательный алгоритм заключается в следующем: из центра звездчатости равномерно по азимуту проводятся лучи, для каждого из них находятся точки пересечения с искомыми линиями уровня. Нахождение точки пересечения равнозначно решению нелинейного уравнения. В качестве начального приближения при поиске точек пересечения линий уровня с очередным лучом целесообразно брать значения радиусов точек пересечения с предыдущего луча (рис.1).
При распараллеливании алгоритм хорошо ложится [2] на схему процессорной фермы, но в программном обеспечении MVS-100 [1] нет средств для автоматического создания такой конфигурации. Поэтому необходимо "ручное" программирование распределения вычислительной нагрузки на процессоры.
Рассмотрено несколько вариантов параллельного алгоритма. В простейшем алгоритме корневой процессор выполняет только обмен с задачами-рабочими и не занят продуктивными вычислениями, что при малом числе процессоров дает плохую производительность. Более сложные алгоритмы реализуют на корневом процессоре "псевдопараллельное" совмещение вычислений и обмена.
Результатом работы программы является файл с численным описанием линий уровня и метафайл, содержащий их график.
При помощи описанной параллельной программы исследована задача о брахистохроне [3] в центральном поле тяготения. Построены изохроны -- линии уровня времени оптимального спуска (рис.2).
[1] Лацис А.О. Операционная среда ROUTER для транспьютерных систем. Москва, ИПМ им. М. В. Келдыша РАН, 1995.
[2] Иванов А.Г. Опыт построения линий уровня на транспьютерных системах // Алгоритмы и программные средства параллельных вычислений: [Сб. науч.тр.]. Екатеринбург: УрО РАН, 1995.
[3] Эльсгольц Л.Э. Вариационное исчисление. М.: Техгиз, 1958.