Язык математики
Суммы, произведения и смена порядка
Σ и Π как циклы, двойные суммы и приём, без которого не читаются выводы в статьях
Σ — это цикл
Дословный перевод:
total = 0
for i in range(1, n + 1):
total += a[i]
Единственное расхождение — верхний предел включительный, в отличие от range.
Это источник постоянных ошибок на единицу при переносе формул в код.
1 * 1 1 +2 * 2 4 +3 * 3 9 +4 * 4 16 = 30
Соглашения, которые стоит знать:
- пустая сумма равна нулю: если верхний предел меньше нижнего, результат (для — единица). Это не произвол: ноль нейтрален относительно сложения, единица — относительно умножения;
- индекс — связанная переменная: и — одно и то же;
- предел часто опускают, когда он ясен из контекста: означает «по всем допустимым ».
Что можно выносить
Константу — то, что не зависит от индекса — можно вынести за знак суммы:
А вот это уже неверно и является самой частой ошибкой:
Слева произведений, справа — . Проверьте на : слева , справа .
Логарифм превращает произведение в сумму:
Это единственная причина, по которой в машинном обучении работают с log-likelihood, а не с likelihood: произведение тысячи вероятностей уходит в машинный ноль, сумма логарифмов — нет.
Двойные суммы
Вложенный цикл. Порядок сложения не влияет на результат при конечном числе слагаемых, поэтому
Смена порядка суммирования — рабочий приём, который в выводах используют постоянно. Обычно его применяют, чтобы внутренняя сумма превратилась во что-то известное.
Пример из блока 1. Скалярное произведение через матрицу:
Здесь не зависит от , поэтому его можно вынести из внутренней суммы:
Три строки, и получена ассоциативность — просто перегруппировкой.
Осторожно с бесконечными суммами. Для бесконечных рядов менять порядок можно не всегда: при условной сходимости перестановкой слагаемых можно получить любую сумму (теорема Римана). В статьях это условие обычно подразумевают выполненным и не оговаривают.
Когда пределы зависят друг от друга
Внутренний предел зависит от внешнего — суммирование идёт по верхнему треугольнику. При смене порядка пределы приходится пересчитывать:
Проверять такие переходы проще всего рисунком: нарисуйте квадрат и заштрихуйте область, по которой идёт суммирование. Оба способа обхода должны покрывать одну и ту же область.
Произведение
работает так же, с умножением вместо сложения:
1 1 ·2 2 ·3 3 ·4 4 ·5 5 = 120
Это факториал. И заодно демонстрация того, почему пустое произведение равно единице: — не исключение из правила, а прямое следствие соглашения.
Источники
- Graham, Knuth, Patashnik — Concrete Mathematics, гл. 2 — Каноническое изложение техники работы с суммами
- Deisenroth, Faisal, Ong — Mathematics for Machine Learning — Двойные суммы возникают всюду, где раскрывается произведение матриц
Проверки
0 из 2Смена порядка суммирования
Дана матрица
matrixразмера (список списков).Реализуйте
triangular_sums(matrix), которая возвращает список из трёх чисел:- — сумма всех элементов, обход по строкам;
- — то же самое, обход по столбцам;
- — сумма верхнего треугольника, включая диагональ (только для квадратных матриц; для неквадратных считайте по всем парам, где и оба индекса допустимы).
Первые два числа обязаны совпасть — это и есть проверка того, что порядок суммирования не влияет на результат.
Загрузка редактора…
Ctrl/⌘ + EnterЧто можно выносить за знак суммы
Отметьте все верные тождества. Здесь — константа, не зависящая от индекса суммирования.