Использование шаблонизатора как инструментария компьютерной алгебры

В исследовательских задачах, требующих применения численных методов решения систем обыкновенных дифференциальных уравнений, часто возникает необходимость выбора наиболее эффективного и оптимального для конкретной задачи численного метода. В частности, для решения задачи Коши, сформулированной для системы обыкновенных дифференциальных уравнений, применяются методы Рунге–Кутты (явные или неявные, с управлением шагом сетки или без и т.д.). При этом приходится перебирать множество реализаций численного метода, подбирать коэффициенты или другие параметры численной схемы. В данной статье предложено описание разработанной авторами библиотеки и скриптов автоматизации генерации функций программного кода на языке Julia для набора численных схем методов Рунге–Кутты. При этом для символьных манипуляций использовано программное средство подстановки по шаблону. Предлагаемый подход к автоматизации генерации программного кода позволяет вносить изменения не в каждую подлежащую сравнению функцию по отдельности, а использовать для редактирования единый шаблон, что с одной стороны дает универсальность в реализации численной схемы, а с другой позволяет свести к минимуму число ошибок в процессе внесения изменений в сравниваемые реализации численного метода. Рассмотрены методы Рунге–Кутты без управления шагом, вложенные методы с управлением шагом и методы Розенброка также с управлением шагом. Полученные автоматически с помощью разработанной библиотеки программные коды численных схем протестированы при численном решении нескольких известных задач.

Publisher
Федеральное государственное бюджетное учреждение "Российская академия наук"
Number of issue
1
Language
Russian
Pages
25-34
Status
Published
Year
2021
Organizations
  • 1 Кафедра прикладной информатики и теории вероятностей, Российский университет дружбы народов
Share

Other records

Кулябов Д.С., Королькова А.В.
Программирование. Федеральное государственное бюджетное учреждение "Российская академия наук". 2021. P. 44-50