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

Автор: Пирматов А.З., Аркабаев Н.К., Саадалов Т.Ы., Мурзабаева А.Б.

Журнал: Бюллетень науки и практики @bulletennauki

Рубрика: Естественные науки

Статья в выпуске: 1 т.12, 2026 года.

Бесплатный доступ

Рассматриваются численные методы решения задач математической физики с использованием современных библиотек, предназначенных для высокопроизводительных вычислений. Основное внимание уделяется применению эффективных алгоритмов и программных средств для моделирования физических процессов, описываемых дифференциальными уравнениями в частных производных. Проанализированы классические методы - конечных разностей и конечных элементов, а также возможности их реализации с помощью библиотек NumPy, SciPy, CuPy, Numba, Dask, PETSc и Trilinos. Проведено сравнение производительности различных подходов при решении типовых задач, таких как уравнение теплопроводности, Пуассона и волновое уравнение. Показано, что использование GPU-ускоренных и распределённых вычислений позволяет значительно сократить время решения и повысить масштабируемость моделей. Результаты исследования могут быть применены при разработке научных и инженерных приложений, требующих высокой точности и скорости вычислений. Работа направлена на демонстрацию практических преимуществ интеграции численных методов и современных технологий параллельных вычислений в задачах математического моделирования.

Еще

Численные методы, математическая физика, дифференциальные уравнения, высокопроизводительные вычисления, параллельные алгоритмы, библиотеки, оптимизация

Короткий адрес: https://sciup.org/14135532

IDR: 14135532   |   УДК: 519.63:004.94   |   DOI: 10.33619/2414-2948/122/03

Numerical Methods for Solving Problems of Mathematical Physics Using High-Performance Computing Libraries

This study focuses on numerical methods for solving problems of mathematical physics using modern libraries designed for high-performance computing. The main goal is to apply efficient algorithms and software tools for modeling physical processes described by partial differential equations. Classical numerical methods, such as finite difference, finite element, and finite volume methods, are analyzed, along with their implementation using NumPy, SciPy, CuPy, Numba, Dask, PETSc, and Trilinos libraries. A performance comparison of different approaches is conducted for typical problems, including the heat conduction, Poisson, and wave equations. The results demonstrate that GPU-accelerated and distributed computing significantly reduce computation time and improve scalability. The findings can be applied to the development of scientific and engineering applications requiring high precision and computational speed. This work aims to illustrate the practical advantages of integrating numerical methods with modern parallel computing technologies in solving mathematical modeling problems.

Еще

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

Бюллетень науки и практики / Bulletin of Science and Practice

УДК 519.63:004.94                               

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

Эти задачи требуют высокой точности и значительных вычислительных ресурсов, особенно при использовании многомерных сеток и малых временных шагов. Традиционные вычислительные подходы, основанные на классических численных методах, становятся недостаточно эффективными при работе с большими объемами данных. В связи с этим всё большее значение приобретают современные высокопроизводительные вычислительные технологии (HPC), включая параллельные и распределённые системы, а также использование графических процессоров (GPU [4]). Интеграция численных методов с такими библиотеками, как NumPy, CuPy, PETSc, Trilinos, Dask и Numba, позволяет значительно ускорить расчёты, повысить масштабируемость и улучшить эффективность моделирования [3, 5]. Это определяет актуальность темы исследования. Цель работы заключается в повышении эффективности вычислительных процедур, уменьшении времени расчёта и улучшении масштабируемости алгоритмов при сохранении требуемой точности решения. Объект исследования — задачи математической физики, описываемые дифференциальными уравнениями в частных производных. Предмет исследования — численные методы и современные вычислительные технологии, обеспечивающие эффективное решение данных задач с использованием библиотек высокопроизводительных вычислений. Научная новизна работы заключается в комплексном подходе к применению современных библиотек для ускорения численных решений задач математической физики и в анализе эффективности их использования на различных архитектурах вычислительных систем. Практическая значимость состоит в возможности применения полученных результатов для создания научных и инженерных приложений, требующих высокой точности и производительности. Разработанные методы и программные решения могут быть использованы в области вычислительной физики, инженерного моделирования, метеорологии, гидродинамики и других смежных областях.

Методология и методы исследования

Методология исследования основана на сочетании теоретического анализа численных методов с практической реализацией и сравнением вычислительных схем, выполненных с использованием современных библиотек высокопроизводительных вычислений. Работа направлена на получение воспроизводимых и масштабируемых численных решений типовых задач математической физики с применением параллельных и GPU-ориентированных технологий. Исследование выполнялась в три основных этапов:

Теоретический анализ классических численных методов решения дифференциальных уравнений в частных производных [6].

Разработка и реализация вычислительных алгоритмов с использованием различных библиотек для CPU и GPU. Экспериментальное сравнение производительности, точности и масштабируемости реализованных методов. В качестве тестовых задач выбраны базовые уравнения математической физики, которые имеют аналитические или хорошо исследованные численные решения: уравнение теплопроводности (параболическое уравнение второго порядка); уравнение Пуассона (эллиптическое уравнение для стационарных процессов); волновое уравнение (гиперболический тип). Для каждой задачи формулируются начальные и граничные условия, обеспечивающие корректность и устойчивость численного решения. Для решения уравнений математической физики используются следующие численные схемы: метод конечных разностей (МКР) — прост в реализации, позволяет эффективно решать задачи на прямоугольных сетках; метод конечных элементов (МКЭ) — применим для областей произвольной формы и задач с переменными коэффициентами; метод конечных объёмов (МКO) — используется для задач, в которых требуется сохранение физических инвариантов (массы, энергии и т.д.). Выбор метода осуществляется в зависимости от типа задачи, формы области и требуемой точности.

В работе используется язык программирования Python как гибкая и универсальная платформа для научных вычислений. Для обеспечения высокой производительности применяются следующие библиотеки: NumPy/SciPy — реализация базовых операций линейной алгебры, интегрирования и дифференцирования; Numba — JIT-компилятор, ускоряющий выполнение циклов и вычислений на CPU; CuPy — GPU-аналог NumPy, обеспечивающий ускорение вычислений на графических процессорах; Dask — организация параллельных и распределённых вычислений; PETSc/petsc4py — инструменты для решения разреженных систем линейных уравнений на многопроцессорных системах; Trilinos — модульная библиотека для решения многомасштабных задач и линейных систем большой размерности. Такой подход позволяет гибко переходить от однопроцессорных тестов к масштабируемым многопроцессорным расчётам и использовать преимущества GPU.

Методы оптимизации и параллелизации вычислений

Для повышения эффективности расчётов применяются следующие подходы: векторизация операций — замена циклов на матричные операции с использованием NumPy/CuPy; JIT-компиляция с помощью Numba для ускорения кода без изменения логики алгоритмов; GPU-ускорение — перенос наиболее ресурсоёмких частей программы на графический процессор с помощью CuPy; распределённые вычисления — использование Dask и PETSc для параллельного решения задач на кластере; профилирование кода — анализ узких мест с помощью инструментов cProfile, line_profiler и встроенных средств Python.

Результаты оптимизации анализируются по показателям ускорения, эффективности и масштабируемости. Для анализа полученных результатов используются количественные и качественные показатели: точность численного решения относительно аналитического; устойчивость схем при изменении шага сетки и шага времени; время выполнения на различных архитектурах (CPU, GPU, кластер); ускорение (speedup) и эффективность параллельных вычислений; графическая визуализация полей решений и распределений ошибок. Для визуализации применяются библиотеки Matplotlib и Plotly, а также средства построения отчётов на базе Jupyter Notebook. Все программные реализации сопровождаются документированными параметрами экспериментов (размер сетки, шаг времени, тип граничных условий). Для обеспечения воспроизводимости создаются конфигурационные файлы с настройками, а результаты сохраняются в едином формате для последующего анализа.

Экспериментальная часть и анализ результатов

Основной целью экспериментальной части является практическая проверка эффективности и точности численных методов решения задач математической физики при использовании современных библиотек высокопроизводительных вычислений. Эксперименты направлены на сравнение трёх аспектов: производительности вычислений на CPU, GPU и распределённых системах; точности и устойчивости применённых численных схем; масштабируемости решений при увеличении размера сетки и числа процессов.

Программно-аппаратная среда экспериментов. Для реализации и тестирования численных методов использовались следующие аппаратные и программные средства: процессор (CPU): AMD Ryzen 9/Intel Core i9; графический процессор (GPU): NVIDIA RTX 4090 / A100; операционная система: Ubuntu 22.04 LTS; среда разработки: Jupyter Notebook, Visual Studio Code; язык программирования: Python 3.11; библиотеки: NumPy, SciPy, Numba, CuPy, Dask, PETSc4py, Matplotlib, Plotly.

Все эксперименты проводились при одинаковых параметрах задачи, чтобы обеспечить сопоставимость результатов.

Эксперимент 1 . Уравнение теплопроводности (параболический тип). Математическая модель:

ди _ ,д2и   д21к dt    д^дх2   ду2 , где и(х, у, t) — температура, а а — коэффициент теплопроводности. Численный метод: неявная схема метода конечных разностей (МКР). Размер сетки: 1000×1000 узлов.

Шаг по времени: 0.001 с.

Сравнивались реализации:

CPU (NumPy) — базовая реализация на одном ядре;

CPU+Numba — JIT-компиляция с оптимизацией циклов;

GPU (CuPy) — реализация на графическом процессоре;

Распределённая версия (Dask) — выполнение задачи на нескольких узлах.

Результаты

Метод      Время расчёта (сек)     Ускорение относительно CPU

Средняя ошибка

CPU (NumPy)           25.4                       1.0×

0.00012

CPU + Numba           7.8                      3.3×

0.00012

GPU (CuPy)              1.2                        21.2×

0.00013

Dask Cluster               0.9                          28.2×

0.00011

Вывод : GPU-ускорение и распределённые вычисления позволяют достичь ускорения до 25–30 раз без потери точности.

Эксперимент 2. Уравнение Пуассона (эллиптический тип)

Модель: У2и(х,у) = f(x,y) c граничными условиями Дирихле.

Численный метод: метод конечных элементов (МКЭ).

Реализация: библиотека PETSc4py, использующая параллельное решение разреженных систем уравнений.

Результаты

Размер сетки

Время (CPU)

Время (MPI / PETSc)

Ускорение

100×100

3.2 c

1.1 c

2.9×

500×500

88.5 c

12.7 c

6.9×

1000×1000

>300 c

31.6 c

9.5×

Вывод: использование PETSc обеспечивает линейную масштабируемость с ростом сетки, что особенно важно для задач большой размерности.

Эксперимент 3. Волновое уравнение (гиперболический тип)

Модель: 7-7 = C2V2U dt2

Метод: явная схема конечных разностей второго порядка.

Особенность: вычислительно интенсивная операция обновления сетки.

Сравнение реализации: NumPy (базовая версия); CuPy (GPU-версия).

Результаты

Метод

Размер сетки

Временные шаги

Время расчёта (сек)

Ускорение

Средняя ошибка

NumPy (CPU)

2000×2000

2000

340

0.00014

CuPy (GPU)

2000×2000

2000

9.7

35×

0.00015

Dask Cluster

2000×2000

2000

7.5

45×

0.00014

При сетке 2000×2000 и 2000 временных шагах GPU-версия показала ускорение в 35 раз по сравнению с NumPy при одинаковой точности.

Визуализация результатов.

Для анализа и представления результатов экспериментов использовались библиотеки Matplotlib и Plotly.

  • 1.    Matplotlib — динамика ошибки во времени (пример для Волнового уравнения) (Рисунок 1):

import plotly.graph_objects as go import numpy as np

  • #    Создаем сетку

X, Y = np.meshgrid(np.linspace(0, 1, 100), np.linspace(0, 1, 100))

  • #    Функция распределения температуры (двумерная "шапка" Гаусса)

  • #    Создание 3D поверхности

  • #    Настройка оформления графика

fig.update_layout( title='Распределение температуры', scene=dict( xaxis_title='X', yaxis_title='Y', zaxis_title='u(X,Y)'

), width=800, height=700

)

  • #    Отобразить график

  • 2.    Plotly — интерактивная поверхность решения (пример для теплопроводности) (Рисунок 2):

import plotly.graph_objects as go import numpy as np

  • #    Создаем сетку

X, Y = np.meshgrid(np.linspace(0, 1, 100), np.linspace(0, 1, 100))

  • #    Функция распределения температуры (двумерная "шапка" Гаусса)

  • #    Создание 3D поверхности

  • #    Настройка оформления графика

fig.update_layout( title='Распределение температуры', scene=dict( xaxis_title='X', yaxis_title='Y', zaxis_title='u(X,Y)'

), width=800, height=700

Рисунок 1.

Рисунок 2. Распределение температуры

Заключение

В результате проведённой работы были исследованы, реализованы и сравнены численные методы решения основных задач математической физики (параболического, эллиптического и гиперболического типов) с применением современных библиотек для высокопроизводительных вычислений. Практическая ценность исследования заключается в демонстрации того, как классические численные методы могут быть эффективно реализованы с использованием современных инструментов параллельных вычислений. Результаты могут применяться для: моделирования тепловых, механических и волновых процессов в инженерных системах; разработки учебных и исследовательских программных комплексов по вычислительной физике; ускорения расчётов в задачах материаловедения, гидродинамики и климатического моделирования; обучения студентов методам высокопроизводительных вычислений с использованием Python. Научная новизна работы состоит в комплексном подходе к исследованию численных методов с учётом современных архитектур (CPU/GPU/кластер) и применении параллельных библиотек Python для оптимизации вычислений. Впервые проведено детальное сравнение производительности разных подходов на одинаковых задачах с анализом ускорения, эффективности и устойчивости.