>>4806784Окей. Пост 1, первая часть введение в тензоря как их понимают физики. Если вы уже это знаете, можете не читать.
В программировании есть структура данных под названием "массив". Обобщим эту структуру.
Определение 1. Многомерной таблицей T называется следующий набор данных.
1. Константа D, называемая "размерность пространства". Положительное целое число.
2. Конечное множество букв латинского алфавита, называемое нижними индексными буквами.
3. Ещё одно конечное множество букв латинского алфавита, называемое верхними индексными буквами.
4. Операция "обращение по индексу": если каждой индексной букве присвоено одно конкретное значение из множества {1, 2, ... , D} (говорят, что указан многомерный индекс), то однозначно определен объект, называемый той
компонентой T, что соответствует указанному многомерному индексу.
Замечание 1. Одно или оба множества индексных букв могут быть пустыми. Кроме того, эти множества не обязательно являются непересекающимися. Под буквой латинского алфавита понимаются в том числе буквы, снабженные штрихами и/или номерами, т.е. i', j'', k9 считаются буквами. Под просто множеством индексных букв мы будем понимать объединения множеств верхних и нижних.
Определение 2. Пусть T - многомерная таблица, пусть p - количество элементов в её множестве нижних индексных букв, q - количество элементов в её множестве верхних индексных букв. Тогда будем говорить, что таблица p раз ковариантна, q раз контравариантна и имеет ранг (p;q).
Пример 1. Частные случаи многомерной таблицы.
а) Пусть множество нижних индексных букв пусто, множество верхних индексных букв непусто и содержит лишь одну букву i, размерность пространства равна N. Такая многомерная таблица есть просто массив из N элементов, индексированный числами от 1 до N.
б) Пусть множество нижних индексных букв есть {j}, множество верхних букв есть {i}, размерность пространства равна N. Такая многомерная таблица есть квадратная матрица из N строк и N столбцов.
в) Пусть оба множества индексных букв пусты. Тогда многомерная таблица есть просто один-единственный объект - например, просто число.
Соглашение 1. В дальнейшем мы часто будем пользоваться нотацией T[i], где T - многомерная таблица, i - некоторый согласованный с этой таблицей многомерный индекс, т.е. некоторый конкретный набор чисел, сопоставленных каждой индексной букве T. То есть многомерный индекс - это буквально текст вида "букву a будем считать равной числу 2, букву b будем считать равной числу 1, бла-бла-бла", где a и b входят во множество индексных букв. Многомерный индекс в явном виде упоминает индексные буквы, поэтому индекс, пригодный для одной таблицы, может быть непригоден для другой таблицы - пускай даже того самого ранга, но имеющий отличное множество индексных букв. Если i и j - два многомерных индекса, то их объединение обозначается как i::j. Например, пусть i = (a↦1, b↦3, c↦2), j = (p↦3, q↦2), тогда i::j = (a↦1, b↦3, c↦2, p↦3, q↦2). Из каждого многомерного индекса можно исключить одну или несколько букв, исключение буквы a из i обозначается как i^a. Например, пусть i = (a↦1, b↦3, c↦2, d↦2, e↦1), тогда i^be = (a↦1, c↦2, d↦2). В каждом многомерном индексе i можно одну или несколько букв приравнять к другим числам, это обозначается как i|a=x,b=y. Например, пусть i = (a↦1, b↦3, c↦2, d↦2, e↦1), тогда i|a=3,b=2 есть (a↦3, b↦2, c↦2, d↦2, e↦1). Этот синтаксис нестандартен, но удобен для записи операций с многомерными таблицами в строчку.
Соглашение 2. В принципе, объекты, являющиеся компонентами таблиц, могут быть любыми. Но ниже предполагается, что компоненты таблиц - числа.
Соглашение 3. Если не оговорено противное, то все многомерные таблицы имеют одну и ту же размерность пространства. И она равна трём.
Определение 3. Результатом умножения многомерной таблицы T на число a называется многомерная таблица B такая, что для каждого многомерного индекса i верно, что B[i] = aT[i]. Суммой двух многомерных таблиц A, B одинакового ранга (p;q) называется многомерная таблица C ранга (p;q), такая, что для каждого многомерного индекса i верно C[i] = A[i]+B[i].
То есть умножение на число и сумма производятся покомпонентно. Суммироваться могут только таблицы одинаковых рангов.
Определение 4. Пусть A многомерная таблица ранга (p;q), B - многомерная таблица ранга (r;s). Произведением Кронекера таблиц A и B называется многомерная таблица C ранга (p+r; q+s) со следующими свойствами.
1. Её множество верхних индексных букв есть
дизъюнктное объединение множеств верхних букв A и B.
2. Множество нижних букв есть
дизъюнктное объединение множеств нижних букв A и B.
3. Для каждой пары i,j, где i - индекс, согласованный с A, j - индекс, согласованный с B, верно равенство C[i::j] = A[i] × B[j].
Дизъюнктное объединение - это когда каждый элемент в объединении хранит информацию о том, из какого множества он был взят. Это значит, что дубликаты из множеств не удаляются. Если обычное объединение множеств {a,b,c,d} и {b,c,p} есть множество {a,b,c,d,p}, то дизъюнктное объединение есть множество {a,b,c,d, b,c,p}, причем где-то записано, из какого множества взята каждая буква объединения. Чтобы не вдаваться в излишний формализм, я буду просто навешивать на буквы второго множества столько штрихов, сколько нужно для достаточной ясности. Т.е. считать например для случая выше дизъюнктным объединением множество {a,b,c,d, b',c',p'}
Пример 2. Пусть A[p;q] - многомерная таблица с индексными буквами p и q - для определенности верхними. И пусть её размерность равна 2.
Определим её так.
A[1,1] = 1, A[1,2] = 2,
A[2,1] = 0, A[2,2] = 10
Пусть B[r] - многомерная таблица с индексной буквой r, нижней. И пусть её размерность равна тоже 2.
Определим её так.
B[1] = 6, B[2] = 7.
Тогда кронекерово произведение AB есть таблица C[p,q,r], определенная так.
C[1,1::1] = 6, C[1,1::2] = 7, C[1,2::1] = 12, C[1,2::2] = 14
C[2,1::1] = 0, C[2,1::2] = 0, C[2,2::1] = 60, C[2,2::2] = 70
Для наглядности я поставил ::. В дальнейшем я буду просто ставить запятую.
Визуально можно считать, что мы взяли матрицу A, каждый её элемент умножили на матрицу B и рассмотрели получившуюся
блочную матрицу. Блочной матрицей называется матрица, элементы которой тоже матрицы.
Пусть T - многомерная таблица, x и y - две её различные индексные буквы, причем x - верхняя, y - нижняя.
Определение 5. Сверткой таблицы T по x и y называется многомерная таблица S такая, что:
- множества индексных букв то же, что и у таблицы T, но только из верхнего выброшена x, из нижнего y
- для любого многомерного индекса i верно, что S[i^xy] = T[i|x=1,y=1] + T[i|x=2,y=2] + T[i|x=3,y=3].
Замечание. В общем случае суммирование ведется не до 3, а до размерности пространства. Но у нас размерность почти всегда равна 3.
Ясно, что свертка переводит таблицу ранга (p;q) в таблицу ранга (p-1; q-1).
Пример 3. Свертка написанного в примере 2 кронекерова произведения по буквам p и r есть таблица S[q] такая, что
S[1] = C[:1:, 1, :1:] + C[:2:, 1, :2:] = 6+0 = 6
S[2] = C[:1:, 2, :1:] + C[:2:, 2, :2:] = 12+70 = 86
Двоеточием обозначены индексы, по которым производится свертка.
Определение 6. Дельтой Кронекера называется таблица δ с индексными буквами i,j такая, что δ[x,y] = 1 если x=y и δ[x,y] = 0 в противном случае. Обычно размерность пространства дельты Кронекера равна трем.
Определение 7. Эпсилоном Леви-Чивиты называется таблица ε размерности 3 с индексными буквами i,j,k такая, что
ε[1,2,3] = ε[2,3,1] = ε[3,1,2] = 1
ε[1,3,2] = ε[2,1,3] = ε[3,2,1] = -1
и нулю для всех остальных значений многомерного индекса (их осталась 21 штука - каждая буква независимо пробегает от 1 до 3, итого будет 3^3 = 27 упорядоченных троек, для шести из них я указал значения явно).
Упражнение 1.
Пусть A - многомерная таблица с тремя индексными буквами, одной верхней i и двумя нижними j и k. Размерность пространства этой таблицы 3. В ней 3 на 3 на 3 = 27 компонент. Они указаны на пикрелейтед. Найти свертку этой таблицы по буквам i и j.
Указание 1. Сначала указать ранг многомерной таблицы, которая будет сверткой. Затем сказать, сколько компонент будет в этой таблице, какие индексные буквы будут её определять. Затем указать компоненты.
Указание 2. От примера 3 это отличается только размерностью пространства, по сути.
Запишите таблицу в виде A[i,j,k]. Например, запись A[3,3,2] означает "третья матрица, третья строка, второй столбик". Затем выделите двоеточиями индексы, по которым производится свертка, затем сравните с примером 3.
Решение будет завтра. На опечатки (в том числе шизо-опечатки) ничего не проверялось.