Scientific journal
Advances in current natural sciences
ISSN 1681-7494
"Перечень" ВАК
ИФ РИНЦ = 0,775

Предложен параллельный алгоритм переменного шага на основе (2,1)-метода. В предлагаемом параллельном алгоритме изменение величины шага построено на основе контроля точности численной схемы.

В настоящее время одним из основных параметром, характеризующих эффективность использования вычислительной техники в науке и технологии, являются математические модели и численные методы, применяемые при создании программ для реализации исследований и расчетов по этим моделям. Моделирование процессов во многие важных приложениях приводит к необходимости численного решения задачи Коши для умеренно жестких систем обыкновенных дифференциальных уравнений [1, 2].

Рассматривается задача Коши для автономной системы обыкновенных дифференциаль ных уравнений первого порядка

f (1)

где y:[t0, tk] → RN, f:[t0, tk]×RN → RN, [t0, tk] - отрезок интегрирования. Для численного решения (1) применим схему (2,1)-метода

f (2)

f f

f

где коэффициенты a, p1 и p2 определяют свойства точности и устойчивости схемы (2), h - шаг интегрирования, fn′ = ∂f(yn)/∂y - матрица Якоби системы (1). Будем считать, что (1) имеет единственное решение. Пусть известны условия для контроля точности вычислений, именно p1 + p2 = 1 и ap1 + 2ap2 = 0,5, f. Изменение величины шага основано на оценке локальной ошибки δn. Учитывая соотношение, f, новый шаг hnew определяем по формуле hnew = qh, где значение q находится из уравнения q2||δn|| = ε. Если q < 1, то осуществляем повторное вычисление решения с шагом h = hnew. При q > 1 выполняем следующий шаг интегрирования с шагом hnew. Введем функции Par_LU_Decompos(), Par_LU_Solution(), реализующие декомпозицию матрицы Dn и нахождение векторов f, f. Для контроля точности численной схемы (2) введем функцию accur_control (), для выполнения которой назначим процессор proc(1). Параллельный алгоритм вычисления приближенного решения y(n+1) переменного шага формулируем следующим образом.

Алгоритм. Пусть для численного решения системы (1) используется (2.1)-метод с контролем точности, и известно решение y(n) в точке tn с шагом hn. Тогда для получения значения y(n+1) в точке tn+1 справедлив параллельный алгоритм, в котором на каждом процессоре proc(j) формируется своя j-я часть вектора решения.

Шаг 1. В каждом proc(j), 1 ≤ j ≤ p; (j-1) s + 1 ≤ sj ≤ j⋅s: выполнить recv(f, h; 1,..., p), вычислить f и матрицу Якоби Jj, 1 ≤ j ≤ p.

Шаг 2. Сформировать матрицу f.

Шаг 3. Разложить матрицу Dn, Dn = Par_LU_Decompos().

Шаг 4. Вычислить f,

f.

Шаг 5. Вычислить f,

f

Шаг 6. В каждом proc(j), 1 ≤ j ≤ p;

(j-1)⋅s +1 ≤ sj ≤ j⋅s:

определить

f,

f

и выполнить f.

Шаг 7. В proc(1): выполнить accur_control () и, если необходимо, вывести вектор y(n+1).

Шаг 8. В каждом proc(j), 1 ≤ j » p;

(j-1)⋅s +1 ≤ sj ≤ j⋅s:

вычислить

f

и выполнить f.

Шаг 9. Выполнить следующий шаг интегрирования.

Как показывают теоретические и практические расчеты, выполняемые на кластере ИВМ СО РАН [3] показывают, что основные вычислительные затраты связаны с реализацией
LU-факторизации и последующем решении систем для определения шаговых коэффициентов.

Работа выполнена при финансовой поддержке РФФИ проект №11-01-00106.

Список литературы

  1. Новиков Е.А. Явные методы для жестких систем. - Новосибирск: Наука, 1997.
  2. Хайрер Э., Ваннер Г. Решение обыкновенных дифференциальных уравнений. Жесткие и дифференциально-алгебраические задачи. - М.: Мир, 1999.
  3. Исаев С.В., Малышев А.В., Шайдуров В.В. Развитие Красноярского центра параллельных вычислений // Вычислительные технологии. - 2006. - №11. - С. 28-33.