Содержание курса
Julia как язык научных вычислений
9 уроков
1.
Проблема двух языков и место Julia
↗
2.
Установка Julia 1.12.7 и рабочее окружение
↗
3.
Расчётный стенд Poincare.jl — что мы строим
↗
4.
Pkg и окружения — воспроизводимый расчёт
↗
5.
Значения, типы и арифметика
↗
6.
Функции, методы и множественная диспетчеризация
↗
7.
Массивы — рабочая лошадь научного кода
↗
8.
Broadcasting — векторизация без потери скорости
↗
9.
Практика — каркас пакета Poincare.jl
↗
Система типов и организация научного кода
9 уроков
1.
Иерархия типов и абстракции
↗
2.
Параметрические типы и типовая стабильность
↗
3.
Структуры, конструкторы, неизменяемость
↗
4.
Множественная диспетчеризация как архитектура
↗
5.
Интерфейсы — итерация, индексация, свой AbstractArray
↗
6.
Метапрограммирование по делу
↗
7.
Модули, экспорт и структура пакета
↗
8.
Ошибки, контракты и защита расчёта
↗
9.
Практика — типы задач и решателей
↗
Численная математика — точность и устойчивость
9 уроков
1.
Арифметика IEEE 754 и её последствия
↗
2.
Обусловленность и устойчивость
↗
3.
Другие числовые типы — Rational, BigFloat, Measurements
↗
4.
Единицы измерения с Unitful.jl
↗
5.
Интерполяция и приближение функций
↗
6.
Численное дифференцирование и ForwardDiff
↗
7.
Численное интегрирование
↗
8.
Решение нелинейных уравнений
↗
9.
Практика — численное ядро Poincare.jl
↗
Линейная алгебра
9 уроков
1.
LinearAlgebra — что происходит под капотом
↗
2.
Разложения — LU, QR, Cholesky, SVD
↗
3.
Метод наименьших квадратов
↗
4.
Собственные значения и модальный анализ
↗
5.
Разреженные матрицы
↗
6.
Итерационные методы и предобуславливание
↗
7.
Структурированные матрицы и обёртки
↗
8.
Метод конечных элементов для стержня
↗
9.
Практика — модальный анализ балки
↗
Обыкновенные дифференциальные уравнения
9 уроков
1.
Задача Коши и устройство решателя
↗
2.
Методы Рунге — Кутты своими руками
↗
3.
OrdinaryDiffEq.jl — рабочий инструмент
↗
4.
Жёсткие системы
↗
5.
События, разрывы и callbacks
↗
6.
Ансамбли и параметрические прогоны
↗
7.
Сохраняющие структуру интеграторы
↗
8.
Модели биологии
↗
9.
Практика — ротор на подшипниках
↗
Уравнения в частных производных
9 уроков
1.
Метод прямых — от PDE к системе ОДУ
↗
2.
Конечные разности — одномерная теплопроводность
↗
3.
Двумерные задачи и шаблоны
↗
4.
Устойчивость схем и число Куранта
↗
5.
Краевые условия
↗
6.
Метод конечных элементов на треугольниках
↗
7.
Волновое уравнение и динамика сплошной среды
↗
8.
Проверка сходимости и метод изготовленных решений
↗
9.
Практика — охлаждение лопатки турбины
↗
Оптимизация и обратные задачи
9 уроков
1.
Оптимизация в расчётном коде
↗
2.
Optim.jl — безусловная минимизация
↗
3.
Производные для оптимизации
↗
4.
Условная оптимизация и JuMP
↗
5.
Нелинейный МНК и подгонка кривых
↗
6.
Идентификация параметров ОДУ
↗
7.
Глобальная оптимизация и мультистарт
↗
8.
Регуляризация и некорректные задачи
↗
9.
Практика — идентификация модели по данным стенда
↗
Данные, статистика и неопределённость
9 уроков
1.
Ввод-вывод научных данных
↗
2.
DataFrames.jl для экспериментальных данных
↗
3.
Распределения и случайные величины
↗
4.
Оценивание параметров
↗
5.
Проверка гипотез
↗
6.
Регрессия и планирование эксперимента
↗
7.
Монте-Карло и распространение неопределённости
↗
8.
Анализ чувствительности и байесовский вывод
↗
9.
Практика — обработка данных стенда
↗
Производительность
9 уроков
1.
Как Julia выполняет ваш код
↗
2.
Измерение вместо догадок
↗
3.
Типовая стабильность
↗
4.
Память и раскладка данных
↗
5.
Циклы, границы и SIMD
↗
6.
Многопоточность
↗
7.
Распределённые вычисления
↗
8.
Вычисления на GPU
↗
9.
Практика — ускорение решателя теплопроводности
↗
Визуализация и научная графика
9 уроков
1.
Экосистема графики Julia
↗
2.
Makie — фигура, оси, слои
↗
3.
Графики для публикации
↗
4.
Поля, контуры и тепловые карты
↗
5.
Трёхмерная графика и сетки
↗
6.
Анимация процессов
↗
7.
Интерактивные панели
↗
8.
Графика в отчётах и документации
↗
9.
Практика — визуальный отчёт стенда
↗
Инженерия научного программного обеспечения
9 уроков
1.
Пакет как единица работы
↗
2.
Тестирование численного кода
↗
3.
Свойства, инварианты и регрессии
↗
4.
Документация
↗
5.
Непрерывная интеграция
↗
6.
Воспроизводимость расчёта
↗
7.
Предкомпиляция и расширения
↗
8.
Взаимодействие с C, Fortran и Python
↗
9.
Практика — релиз Poincare.jl
↗
Сквозной проект — расчётный стенд целиком
9 уроков
1.
Архитектура Poincare.jl
↗
2.
Конфигурация расчёта и CLI
↗
3.
Пайплайн расчёта
↗
4.
Кэширование и инкрементальные расчёты
↗
5.
Логирование и наблюдаемость расчёта
↗
6.
Сборка приложения
↗
7.
Запуск на кластере
↗
8.
Тетради и интерактивные отчёты
↗
9.
Практика — полный прогон стенда
↗