Бакалавриат
2024/2025
Компьютерный практикум 3
Статус:
Курс обязательный (Прикладная математика)
Направление:
01.03.04. Прикладная математика
Кто читает:
Департамент прикладной математики
Когда читается:
3-й курс, 1-4 модуль
Формат изучения:
без онлайн-курса
Охват аудитории:
для своего кампуса
Язык:
русский
Кредиты:
3
Программа дисциплины
Аннотация
Язык Python стал стандартным языком для изучения в технических ВУЗах. На 3 курсе студенты ПМ уже знакомы с базовым уровнем языка Python, а также владеют средствами разработки языков Си/Си++. Умеют использовать различные структуры данных и реализовывать базовые и ряд продвинутых алгоритмов. В рамках данного курса предлагается рассмотреть походы к решениям сложных задач средствами языка Python, который позволяет реализовать эффективные вычисления за счет использования различных технологий: jit-компиляция, распараллеливание и др. Также в данной дисциплине рассматриваются темы, направленные на изучение искусственного интеллекта: нейронные сети, стохастический градиентный спуск, диффузионные модели, детекция объектов, рекурентные нейронные сети.
Цель освоения дисциплины
- Общие принципы построения эффективного вычислительного кода на Python
- Освоение технологии JIT-компиляции и распараллеливания вычислений в рамках одной машины
- Создание алгоритмов быстрых вычислений для решения физических задач
- Освоение технологий программирования двумерной и трехмерной процедурной графики
Планируемые результаты обучения
- Уметь работать в среде разработки PyCharm
- - создает многомерные массивы Numpy - изменяет и обращается к содержащимся в них данных и их структуру - осуществляет их агрегацию и объединение - производит матричные операции и использовать принцип бродкастинга - применяет встроенные в библиотеку математические и статистические функции
- Уметь писать функции на языке Python, подходящие для последующей компиляции. Использовать модуль Numba для компиляции таких функций в режиме nopython.
- умеет реализовывать конечно-разностный алгоритм на Python для численного решения задачи о переносе тепла; умеет применять модули Numpy и/или Numba для ускорения вычислений
- умеет строить алгоритм на языке Python для решения задач Прокрустового анализа; умеет применять Numpy и/или Numba для ускорения вычислений
- умеет реализовывать алгоритм для моделирования многоагентной системы (Boids); умеет визуализировать систему в динамике при помощи модуля VisPy; умеет применять Numpy и/или Numba для ускорения вычислений; умеет создавать видеоролики, демонстрирующие поведение многоагентной системы при помощи ffmpeg
- умеет создавать на Python алгоритмы процедурной графики с использованием Signed Distance Field при помощи модуля Taichi
- умеет создавать на Python алгоритмы трехмерной процедурной графики на основе Ray Marching и модуля Taichi
- умеет реализовывать алгоритм вычисления наименьшего общего предка (LCA) на основе минимума в диапазоне (RMQ) и разреженной таблицы (Sparse Table); умеет применять Numpy и/или Numba для ускорения вычислений
- умеет реализовывать алгоритмы численного интегрирования систем обыкновенных дифференциальных уравнений по явной схеме Рунге-Кутты; умеет применять Numpy и/или Numba для ускорения вычислений;
- умеет создавать алгоритмы расчета интервалов видимости космического аппарата с наземного пункта с учетом дополнительных условий используя модуль spiceypy; умеет визуализировать рассчитанные интервалы в виде карты
Содержание учебной дисциплины
- Общий подход к созданию быстрого кода на Python для решения задач
- JIT-компиляция и модуль Numba
- Модуль Numpy для быстрых вычислений
- Решение физических задач на основе метода конечных разностей
- Пространственные и другие преобразования
- Динамические многоагентные системы
- Освоение среды разработки PyCharm
- Процедурная графика
- Трехмерная процедурная графика
- Алгоритмы на структурах данных
- Численное интегрирование динамических систем
- Численный поиск корней сложной функции
Элементы контроля
- Домашнее задание 1
- Домашнее задание 2
- Домашнее задание 3
- Домашнее задание 4
- Дополнительные задания сверх объема курсаПозволяет студенту продемонстрировать знания и умения, достойные оценки 9 или 10
Промежуточная аттестация
- 2024/2025 2nd module0.424 * Домашнее задание 1 + 0.152 * Домашнее задание 2 + 0.424 * Дополнительные задания сверх объема курса
- 2024/2025 4th module0.11 * Домашнее задание 1 + 0.246 * Домашнее задание 2 + 0.246 * Домашнее задание 3 + 0.246 * Домашнее задание 4 + 0.152 * Дополнительные задания сверх объема курса
Список литературы
Рекомендуемая основная литература
- David F. Griffiths, & Desmond J. Higham. (2010). Numerical Methods for Ordinary Differential Equations : Initial Value Problems (Vol. 2010). Springer.
- David Wolff. (2018). OpenGL 4 Shading Language Cookbook : Build High-quality, Real-time 3D Graphics with OpenGL 4.6, GLSL 4.6 and C++17, 3rd Edition. Birmingham: Packt Publishing. Retrieved from http://search.ebscohost.com/login.aspx?direct=true&site=eds-live&db=edsebk&AN=1905991
- Idris, I. (2015). NumPy Cookbook - Second Edition (Vol. Second edition). Birmingham, UK: Packt Publishing. Retrieved from http://search.ebscohost.com/login.aspx?direct=true&site=eds-live&db=edsebk&AN=986717
- Idris, I. (2015). NumPy: Beginner’s Guide - Third Edition (Vol. 3rd edition). Birmingham, UK: Packt Publishing. Retrieved from http://search.ebscohost.com/login.aspx?direct=true&site=eds-live&db=edsebk&AN=1018109
- Rocha, M., & Ferreira, P. G. (2018). Bioinformatics Algorithms : Design and Implementation in Python (Vol. First edition). London: Academic Press. Retrieved from http://search.ebscohost.com/login.aspx?direct=true&site=eds-live&db=edsebk&AN=1572286
- Уравнения в частных производных для инженеров, Шарма, Дж. Н., 2002
Рекомендуемая дополнительная литература
- Python для сложных задач : наука о данных и машинное обучение, Плас, Дж. В., 2018