Учебник Научный Python для начинающих
Научный Python превращает обычный язык в полноценную среду для расчётов: численные алгоритмы SciPy поверх NumPy и точную символьную математику SymPy. Курс построен на сквозной связке: сначала вы понимаете идею «руками» на чистой стандартной библиотеке Python (исполнимый код с проверенным выводом), а затем видите, как то же самое делается одной строкой в SciPy или SymPy. Внутри: линейная алгебра, интерполяция, интегрирование, оптимизация, статистика, спецфункции, разреженные и пространственные структуры; символьные вычисления — производные, интегралы, пределы, ряды, уравнения и дифуравнения; LaTeX, визуализация, воспроизводимость и производительность. Для студентов, инженеров и всех, кто считает всерьёз.
Курс «Научный Python: SciPy и SymPy» состоит из 9 разделов и 33 уроков: Научный Python и экосистема SciPy-стека, Подмодули SciPy и линейная алгебра, Интерполяция и численное интегрирование, Оптимизация и поиск корней, Статистика, спец. функции, разреженные и пространственные структуры, SymPy: символьная математика, Символьный матан: производные, интегралы, пределы, ряды, SymPy на практике: матрицы, дифуры, мост к числам и Визуализация, рабочий процесс и производительность. Уроки идут по порядку — от основ к более сложным темам, в каждом есть объяснение с примерами, а в конце — вопросы для самопроверки. К урокам привязаны задачи с автоматической проверкой: прочитали тему — сразу закрепили её кодом.
Программа курса
1 Научный Python и экосистема SciPy-стека
- Что такое научный Python и зачем он нужен
Научный Python как замена MATLAB и калькулятора: численные и символьные вычисления, моделирование, анализ данных одним инструментом.
- SciPy-стек: NumPy, SciPy, SymPy, Matplotlib, pandas
Из чего состоит SciPy-стек и кто за что отвечает: NumPy — массивы, SciPy — алгоритмы, SymPy — символика, Matplotlib — графики, pandas — таблицы.
- Зачем нужен SciPy: алгоритмы поверх NumPy
Почему поверх NumPy появился SciPy: готовые отлаженные научные алгоритмы вместо самописных циклов — интегрирование, оптимизация, статистика, линейная алгебра.
- Что такое научный Python и зачем он нужен
2 Подмодули SciPy и линейная алгебра
- Карта подмодулей SciPy: что где искать
Обзор всех ключевых подмодулей SciPy: optimize, integrate, linalg, stats, signal, interpolate, special, sparse, spatial — что каждый делает и когда нужен.
- scipy.linalg: решение СЛАУ методом Гаусса
Решение систем линейных уравнений Ax=b: идея метода Гаусса с реализацией на чистом Python и одной строкой в scipy.linalg.solve.
- Разложения матриц: LU, QR, SVD и собственные значения
Что считают разложения матриц LU, QR, SVD и собственные значения, зачем они нужны и как одной строкой получить их в scipy.linalg.
- Карта подмодулей SciPy: что где искать
3 Интерполяция и численное интегрирование
- Интерполяция: восстанавливаем значения между точками
Линейная интерполяция и идея кубических сплайнов: восстановление значений между измерениями. Реализация на stdlib и scipy.interpolate.interp1d.
- Численное интегрирование: трапеции и метод Симпсона
Численное интегрирование на чистом Python: метод трапеций и метод Симпсона с точным выводом, и одна строка scipy.integrate.quad.
- Решение ОДУ: метод Эйлера и scipy solve_ivp
Численное решение обыкновенных дифференциальных уравнений: метод Эйлера на чистом Python и solve_ivp/odeint в SciPy.
- Интерполяция: восстанавливаем значения между точками
4 Оптимизация и поиск корней
- Поиск корней: бисекция
Метод бисекции (деление пополам) для поиска корня уравнения: надёжный алгоритм на чистом Python и scipy.optimize.brentq одной строкой.
- Метод Ньютона: быстрая сходимость по касательной
Метод Ньютона для поиска корней: идея касательной, квадратичная сходимость, реализация на чистом Python и scipy.optimize.newton.
- Минимизация функций: золотое сечение и scipy.minimize
Поиск минимума функции: метод золотого сечения на чистом Python и scipy.optimize.minimize/minimize_scalar для многомерной оптимизации.
- Поиск корней: бисекция
5 Статистика, спец. функции, разреженные и пространственные структуры
- scipy.stats: распределения и описательная статистика
Подмодуль scipy.stats: непрерывные и дискретные распределения, описательная статистика. Связь с курсом статистики, реализация на stdlib.
- Статистические тесты: проверяем гипотезы
Статистические тесты в scipy.stats: t-тест, хи-квадрат, p-value. Идея проверки гипотез и связь с курсом статистики.
- Специальные функции: гамма, Бесселя, erf
Специальные функции в scipy.special: гамма-функция, функция ошибок erf, функции Бесселя — что это, зачем нужны и где встречаются.
- Разреженные матрицы: когда почти всё — нули
Разреженные матрицы в scipy.sparse: зачем нужны, форматы COO/CSR/CSC, экономия памяти. Реализация словарём на чистом Python.
- Пространственные структуры: KD-дерево и расстояния
scipy.spatial: поиск ближайшего соседа через KD-дерево, метрики расстояний (евклидово, манхэттенское). Реализация перебора и KD-идеи на stdlib.
- scipy.stats: распределения и описательная статистика
6 SymPy: символьная математика
- Что такое SymPy: точное против приближённого
SymPy — система символьной математики на Python: точные вычисления вместо приближённых. Чем отличается от SciPy, зачем нужна и как мыслит формулами.
- Символы и выражения: строим формулы
Создание символов через symbols() и построение выражений в SymPy. Подстановка значений, базовые операции и предположения о символах.
- Упрощение: simplify, expand, factor
Упрощение выражений в SymPy: simplify, expand (раскрытие скобок), factor (разложение на множители), collect, cancel. Когда какой инструмент.
- Решение уравнений: solve и системы
Символьное решение уравнений в SymPy: solve для одного уравнения и систем, Eq, точные корни (включая комплексные и параметрические).
- Что такое SymPy: точное против приближённого
7 Символьный матан: производные, интегралы, пределы, ряды
- Производные: diff делает дифференцирование за вас
Символьное дифференцирование в SymPy через diff: точные производные любых функций, частные производные, высшие порядки. Численная производная на stdlib.
- Интегралы: integrate, и почему это сложнее
Символьное интегрирование в SymPy через integrate: неопределённые и определённые интегралы. Почему интегрирование труднее дифференцирования.
- Пределы: limit вычисляет точно
Вычисление пределов в SymPy через limit: устранение неопределённостей 0/0, односторонние пределы, пределы на бесконечности. Численная проверка на stdlib.
- Ряды Тейлора: series раскладывает функции
Разложение функций в ряд Тейлора через series в SymPy: приближение функций многочленами. Реализация ряда для exp на чистом Python.
- Производные: diff делает дифференцирование за вас
8 SymPy на практике: матрицы, дифуры, мост к числам
- Матрицы в SymPy: точная линейная алгебра
Символьные матрицы в SymPy: точный определитель, обратная матрица, собственные значения в радикалах. Сравнение с численным scipy.linalg.
- Дифуравнения символьно: dsolve
Символьное решение обыкновенных дифференциальных уравнений в SymPy через dsolve: точные формулы решений вместо численных траекторий solve_ivp.
- Мост к числам: subs, evalf, lambdify
Переход от символьного к численному в SymPy: subs (подстановка), evalf (точная оценка с любым числом знаков), lambdify (превращение формулы в быструю функцию).
- Вывод формул и LaTeX; SymPy против SciPy
SymPy печатает формулы в LaTeX для статей и презентаций. Итоговое сравнение SymPy (точное) и SciPy (приближённое): когда что выбирать.
- Матрицы в SymPy: точная линейная алгебра
9 Визуализация, рабочий процесс и производительность
- Matplotlib для научной визуализации
Matplotlib как стандарт научной графики в Python: анатомия Figure/Axes, типы научных графиков, связь с курсом визуализации данных.
- Рабочий процесс учёного: Jupyter и воспроизводимость
Рабочий процесс научного Python: Jupyter-блокноты, воспроизводимость расчётов, фиксация версий, организация научного проекта.
- Производительность: векторизация, Numba, Cython
Производительность научного Python: векторизация вместо циклов, когда уходить в Numba/Cython. Замер ускорения векторизации на чистом Python.
- Сквозной кейс: символьно вывести формулу, численно посчитать
Реальный мини-кейс научного Python: символьно вывести формулу (SymPy) и численно посчитать ответ (SciPy/stdlib) — полный конвейер учёного на примере.
- Matplotlib для научной визуализации