Научные вычисления
Введение в научные вычисления
Март 2020. Imperial College London запускает симуляцию распространения COVID-19. Предсказание - 510 000 смертей без карантина в Великобритании. Премьер-министр меняет политику в течение 48 часов. Код умещается в несколько тысяч строк Python. Это научные вычисления: набор уравнений и алгоритмов, способный изменить решения правительств. DeepMind AlphaFold2 тем же инструментарием предсказал структуры 200 миллионов белков - задача, над которой биология работала 50 лет.
- **Прогноз погоды** - ECMWF прогоняет численную симуляцию атмосферы на 270 000 ядрах каждые 6 часов; без научных вычислений нет ни авиации, ни агрокомплекса
- **PyTorch и NumPy** - каждая нейросеть обучается через научные вычисления: тензорные операции на BLAS/LAPACK, автодифференцирование, численная оптимизация
- **CERN** - коллайдер генерирует 15 петабайт данных в год; Monte Carlo симуляции и FEM-солверы позволяют физикам отличить сигнал от шума на уровне 5 сигма
Математическое моделирование
Нужно предсказать погоду на завтра. Атмосферу не контролировать, но её поведение можно описать уравнениями - и запустить на компьютере. Это **математическое моделирование**: перевод реального явления на язык математики, который машина может решить. DeepMind AlphaFold2 использует ровно этот подход для предсказания структуры белков - градиентный спуск в химическом пространстве, описанном уравнениями физики.
Модель - это намеренное упрощение реальности. Детали, которые мало влияют на результат, отбрасываются, чтобы задача стала решаемой. NumPy, PyTorch, SciPy - все они внутри решают математические модели на BLAS/LAPACK ядрах, которые выжимают из процессора 85-95% теоретического пика. Модель падающего мяча может игнорировать сопротивление воздуха - и это не ошибка, а инженерное решение.
George Box и философия моделирования
Статистик George Box в 1976 году сформулировал знаменитую фразу: «All models are wrong, but some are useful». Эта мысль стала девизом научных вычислений - мы не стремимся к идеальной точности, а ищем модель, достаточно полезную для принятия решений.
**Три уровня моделирования:** 1. Концептуальная модель - словесное описание 2. Математическая модель - уравнения и формулы 3. Вычислительная модель - код, который решает уравнения на компьютере.
| Тип модели | Пример | Сложность | Точность |
|---|---|---|---|
| Эмпирическая | Линейная регрессия по данным | Низкая | В пределах данных |
| Механистическая | Уравнения Навье-Стокса | Высокая | Вне пределов данных |
| Стохастическая | Monte Carlo симуляция | Средняя | Вероятностная |
Главное искусство моделирования - найти баланс между простотой и точностью. CERN обрабатывает 15 петабайт данных в год с детектора LHC, но физики работают с моделями, которые умещаются в несколько уравнений. Слишком простая модель бесполезна, слишком сложная - не решается на имеющемся железе.
Почему математическая модель намеренно упрощает реальность?
Симуляция
Модель написана - теперь нужно её «запустить». **Симуляция** - это прогон математической модели на компьютере, шаг за шагом вычисляющий поведение системы во времени или пространстве.
Классический пример - прогноз погоды. Атмосфера разбивается на трёхмерную сетку ячеек, для каждой записываются уравнения движения воздуха, компьютер последовательно вычисляет состояние каждой ячейки через маленькие промежутки времени. ECMWF (European Centre for Medium-Range Weather Forecasts) прогоняет такую симуляцию на суперкомпьютере с 270 000 ядер каждые 6 часов. Тот же принцип - PyTorch CUDA kernels запускают тензорные симуляции на тысячах GPU при обучении больших моделей.
**Два больших класса симуляций:** 1. Детерминированные - один вход всегда даёт один выход (решение дифференциальных уравнений) 2. Стохастические - используют генератор случайных чисел и дают распределение результатов (Monte Carlo).
**Метод конечных элементов (FEM)** - ещё один мощный подход. Сложная область (крыло самолёта, мост, кость) разбивается на простые треугольники или тетраэдры, уравнения решаются для каждого элемента. Boeing использует FEM-симуляции для тестирования крыльев задолго до сборки физического прототипа. В ML - та же идея: дискретизация непрерывного пространства в конечные элементы для аппроксимации сложных функций.
| Метод симуляции | Где используется | Ключевая идея |
|---|---|---|
| Euler / Runge-Kutta | ODE (обыкновенные дифф. уравнения) | Шаг за шагом по времени |
| Monte Carlo | Финансы, физика частиц | Случайная выборка из пространства |
| FEM | Инженерия, медицина | Разбиение на конечные элементы |
| Molecular Dynamics | Химия, биология | Движение каждого атома |
В чём ключевое отличие Monte Carlo от метода Euler?
Точность и валидация
Симуляция выдала числа. Но можно ли им доверять? Этот вопрос разделяется на два: **верификация** (правильно ли мы решаем уравнения?) и **валидация** (правильные ли уравнения мы решаем?).
**Верификация** - проверка, что код корректно реализует математическую модель. **Валидация** - проверка, что модель адекватно описывает реальность. Код может быть безупречным, но модель - неверной.
**Сходимость** - ещё одна грань точности. Когда мы уменьшаем шаг по времени (dt) или размер ячейки сетки, результат должен приближаться к истинному решению. Если этого не происходит - ошибка в алгоритме.
| Источник ошибки | Описание | Как бороться |
|---|---|---|
| Ошибка модели | Упрощения не описывают реальность | Валидация по экспериментам |
| Ошибка дискретизации | Конечный шаг dt или dx | Уменьшение шага, методы высокого порядка |
| Ошибка округления | float64 имеет ~15 значащих цифр | Масштабирование, повышенная точность |
| Ошибка данных | Неточные входные параметры | Анализ чувствительности |
Хорошая практика - **анализ чувствительности**: как меняется результат при небольшом изменении входных параметров? Если результат скачет от малых возмущений - модель неустойчива. В ML это называется gradient clipping: нейросеть с нестабильными градиентами расходится ровно по той же причине, по которой нестабильная численная симуляция выдаёт мусор.
Код решает уравнение теплопроводности и даёт красивые графики, но результаты не совпадают с экспериментом. Какой тип проверки выявит проблему?
Computational Thinking
Научные вычисления - не только про код и формулы. Это особый способ мышления, который позволяет разбивать сложные проблемы на решаемые части. **Computational thinking** - это четыре навыка, работающих вместе.
**Четыре столпа computational thinking:** 1. **Декомпозиция** - разбиение задачи на подзадачи 2. **Распознавание паттернов** - поиск общих структур 3. **Абстракция** - выделение важного, отсечение деталей 4. **Алгоритмизация** - построение пошагового решения.
Computational thinking не привязан к одному языку или области. Тот же подход (декомпозиция → паттерны → абстракция → алгоритм) работает для моделирования климата, проектирования лекарств, оптимизации логистики. DeepMind применяет его при разработке AlphaFold: белок декомпозируется на домены, паттерны вторичной структуры обобщаются, алгоритм предсказывает 3D-координаты атомов.
Jeanette Wing и термин Computational Thinking
В 2006 году Jeanette Wing из Carnegie Mellon опубликовала статью, сделавшую термин computational thinking популярным. Она утверждала, что это фундаментальный навык для всех, как чтение и арифметика, а не только для программистов.
Научные вычисления - именно тот случай, когда все четыре столпа работают в полную силу. Модель - это абстракция. Разбиение на сетку - декомпозиция. Выбор метода - паттерн. Написание солвера - алгоритм. NumPy реализует этот цикл в 15% скорости чистого Python за счёт BLAS/LAPACK - не потому что Python медленный, а потому что абстракция выбрана правильно.
Математическая модель = точная копия реальности
Модель - это намеренное упрощение. George Box: «All models are wrong, but some are useful». Ценность модели - не в точности копирования, а в способности давать полезные предсказания
Идеальная модель потребовала бы бесконечной вычислительной мощности и полного знания всех параметров. AlphaFold2 предсказывает структуры белков с точностью до ангстрема - но внутри работает с приближёнными потенциалами, а не с квантовой механикой. Климатические модели IPCC ошибаются в деталях, но верно предсказывают тренды. Цель - минимально сложная модель, достаточная для принятия решения
К какому аспекту computational thinking относится решение использовать метод Euler вместо Runge-Kutta для простой задачи?
Ключевые идеи
- **Модель** - намеренное упрощение; George Box: «All models are wrong, but some are useful» - AlphaFold2 не квантовая механика, но предсказывает белки точнее эксперимента
- **Симуляция** - прогон модели на компьютере: детерминированная (Euler, FEM) или стохастическая (Monte Carlo); PyTorch обучает нейросети теми же алгоритмами, что NumPy решает ОДУ
- **Верификация** проверяет код, **валидация** проверяет модель - можно безупречно решить неверные уравнения; это разные виды ошибок с разными стратегиями исправления
- **NumPy = 15% скорости чистого Python** за счёт BLAS/LAPACK; выбор правильной абстракции важнее, чем оптимизация неверной модели
- **Computational thinking** (декомпозиция, паттерны, абстракция, алгоритм) - единый язык для CERN, Boeing, DeepMind и прогноза погоды
Связанные темы
Научные вычисления - мост между математикой и инженерией:
- NumPy и линейная алгебра — Основной инструмент для реализации моделей в Python
- Системы линейных уравнений — Ядро большинства численных методов (FEM, implicit solvers)
Вопросы для размышления
- George Box: «All models are wrong, but some are useful». Какую модель, которая заведомо неточна, использует любой навигатор на телефоне - и почему это не проблема?
- AlphaFold2 решил задачу фолдинга белков, используя gradient descent в химическом пространстве. Какие допущения (упрощения) пришлось сделать, чтобы эта задача стала вычислимой?
- Почему прогноз погоды на 3 дня точнее, чем на 14 дней, при использовании одной и той же модели - и как это связано с понятием сходимости из numerical methods?
Связанные уроки
- sci-02 — NumPy и линейная алгебра - практический инструмент для реализации математических моделей из этого урока.
- calc-03-limits-intro — Дифференциальные уравнения и численные методы основаны на пределах и производных - базовый матанализ.
- prob-01-intro — Monte Carlo симуляции - стохастический метод, требующий понимания вероятностного пространства и закона больших чисел.
- opt-01 — Валидация модели через minimization ошибки - прямое применение оптимизации; AlphaFold2 использует gradient descent в химическом пространстве.
- st-01-feedback-loops — SIR-модель эпидемии - пример системы с обратными связями: темп заражения зависит от доли восприимчивых, что порождает нелинейную динамику.
- nm-01