Дуальная теорема Пифагора [Дополнение]

Оригинал статьи:
http://www.gregegan.net/ORTHOGONAL/01/DualPythagoreanExtra.html

Дуальные векторы

Предположим, что V – n-мерное векторное пространство, а f – линейная функция, отображающая V на множество действительных чисел R.

Ядром функции f – обозначается ker f – называется подпространство V, в котором f обращается в нуль. ker f имеет размерность не менее n – 1 (а если функция f не равна тождественно нулю, то эта размерность точно совпадает с n ­­­– 1). Например, если n = 2 и f ≠ 0, то f будет обращаться в нуль на прямой, проходящей через нулевую точку V. Если n = 3 и f ≠ 0, то f будет обращаться в нуль на плоскости, проходящей через нулевую точку и так далее. Этот результат является следствием одной из базовых теорем линейной алгебры – «теоремы о ранге и дефекте».

На рисунке показан пример с двумя измерениями; в данном случае функция f обращается в нуль на прямой, проходящей через начало координат параллельно вектору k.

007

Если мы выберем некий вектор v, для которого f(v) отлично от нуля, то в пространстве V найдется такая прямая, проходящая не через начало координат, а через конец вектора v, на которой f всюду равна f(v). Получить эту прямую можно, прибавляя к v векторы, кратные k:

f(\mathbf{v} + s \mathbf{k}) = f(\mathbf{v}) + sf(\mathbf{k}) = f(\mathbf{v}) = 1

Последнее равенство имеет место лишь в силу нашего выбора v, при котором f(v) = 1. Однако любое множество, в пределах которого f сохраняет постоянное значение, будет иметь аналогичный вид: прямая, параллельная вектору k. По аналогии с тем, как на этой диаграмме мы изобразили различные векторы в виде стрелок разной длины и направления, различные линейные функции можно изобразить в виде набора параллельных прямых, варьируя расстояние между соседними прямыми и их ориентацию.

Чем больше вектор, тем длиннее соответствующая ему стрелка; при этом увеличение функции в наших обозначениях выражается не в увеличении промежутков между прямыми, а, наоборот, в более плотном их расположении. Например, чтобы изобразить функцию g = 2f нужно вставить дополнительную прямую между каждыми двумя соседними линиями сетки f, поскольку g достигает 1, когда f равна всего лишь 1/2.

008

Значение f по сути определяет количество промежутков между параллельными прямыми, покрываемыми данным вектором. Так, стрелка, соответствующая вектору w, покрывает два целых промежутка в наборе прямых, соответствующем f, поэтому f(w) = 2. Нам потребуется также учесть стрелки, которые пересекают прямые f в обратном направлении, что дает отрицательное количество промежутков (как в случае p), а также стрелки, которые не покрывают целое число промежутков (например, q), так что в данном случае мы скорее полагаемся на геометрическую интуицию, нежели строгое математическое определение. Но вы, вероятно, уже понимаете, как эта идея соотносится с примерами, приведенными в основной статье, где обсуждалось, сколько борозд на поле или линий равной высоты на карте мы могли бы насчитать, пройдя заданное расстояние в определенном направлении.

Если V содержит более двух измерений, то вместо набора параллельных линий V мы получим набор параллельных плоскостей или гиперплоскостей размерности n–1.

Теперь рассмотрим множеств всех линейных функций из V в R. Это множество также можно представить в виде особого n-мерного векторного пространства, которое называется сопряженным по отношению к V и обозначается V*. Элементы пространства V*, такие как f, мы будем называть дуальными векторами.

Чтобы превратить множество в вещественное векторное пространство, мы должны уметь складывать его элементы друг с другом и умножать их на вещественные числа. В случае множества линейных функций, определенных на V, добиться этого можно весьма очевидным образом; если f и g – элементы V*, v – элемент V, а s – вещественное число, то сумму f + g и результат скалярного умножения s f мы определим, указав значения соответствующих им функций:

(f + g)(\mathbf{v}) = f(\mathbf{v}) + g(\mathbf{v})
(sf)(\mathbf{v}) = sf(\mathbf{v})

Как и в случае с любым другим векторным пространством мы можем выбрать в V* базис, состоящий из n линейных функций, через которые можно выразить любую функцию в V*. Обозначив элементы этого базиса {e1,e2, … en}, мы можем записать:

f = f_1\mathbf{e}^1 + f_2\mathbf{e}^2 + \dots + f_n\mathbf{e}^n,

где f1 и т. д. представляют собой компоненты f относительно выбранного базиса. Если для обозначения компонентов вектора в данных заметках мы будем пользоваться верхними индексами, то для компонентов дуального вектора – наоборот, нижними. Аналогичным образом отдельные векторы базиса будут обозначаться нижними индексами, в то время как векторы дуального базиса – верхними.

Если в пространстве V задан конкретный базис {e1, e2, … en}, то базис {e1, e2, … en} в пространстве V* мы будем называть дуальным по отношению к базису V, если выполняется следующее условие:

\mathbf{e}^i (\mathbf{e}_j) = \delta^i_j,

где δij, известный также как символ Кронекера, равен 1, когда  i=j, и 0, когда ij. С геометрической точки зрения это означает, что функцию ei при заданном i можно представить в виде такого набора параллельных линий или плоскостей в пространстве V, что вектор ei покрывает ровно один его промежуток, в то время как все остальные векторы базиса ej  находятся на прямой или плоскости, проходящей через начало координат и не пересекают его вообще. Так, на следующем чертеже вектор e2 лежит на прямой e1 = 0, а вектор e1 – на прямой e2 = 0.

ortnt_01x_03

При заданном в V базисе {e1, e2, … en} мы можем найти компоненты произвольной линейной функции f из V* относительно соответствующего дуального базиса, просто передав в функцию f каждый из векторов ei в исходном базисе. Поскольку два базиса дуальны друг другу, все базисные функции, кроме ei, обратятся в нуль на векторе ei, поэтому в итоговой сумме останется только соответствующий ей множитель fi.

f(\mathbf{e}_i) = (f_1\mathbf{e}^1 + f_2\mathbf{e}^2 + \dots + f_n\mathbf{e}^n)(\mathbf{e}_i) = f_i,

Если компоненты вектора v в пространстве V в некотором фиксированном базисе равны vi, а компоненты дуального вектора f в пространстве V* в соответствующем дуальном базисе равны fi, то:

f(\mathbf{v}) = f(v^i \mathbf{e}_i) = f_i v^i,

где для сокращенной записи суммы по повторяющимся индексам (например, v^i \mathbf{e}_i = v^1 \mathbf{e}_1 + v^2 \mathbf{e}_2 + \dots + v^n \mathbf{e}_n) мы воспользовались соглашением Эйнштейна.

Предположим, что в пространстве V определено скалярное произведение. Тогда для любого вектора w из V, мы можем определить линейную функцию fw из V*:

f_{\mathbf{w}}(\mathbf{v}) = \mathbf{v} \cdot \mathbf{w}

Аналогичным образом, если f – произвольная линейная функция в пространстве V*, то существует такой вектор wf, что f(v) = v · wf для любого v из V. Выберем для V ортонормированный базис {e1, e2, … en}, а затем, вновь воспользовавшись соглашением Эйнштейна, определим wf как

\mathbf{w}_f = f_i \mathbf{e}_i

Компоненты fi определяются по отношению к тому базису V*, который является дуальным к выбранному нами ортонормированному базису в пространстве V. Тогда:

\mathbf{v} \cdot \mathbf{w}_f = \mathbf{v} \cdot [f_i \mathbf{e}_i] = f_i [\mathbf{v} \cdot \mathbf{e}_i] = f_i v^i = f(\mathbf{v})

Таким образом, каждом элементу пространства V можно взаимно однозначно сопоставить элемент сопряженного пространства V*, и наоборот.

Вектор fi ei, который мы таким образом сопоставляем f, ортогонален любому вектору k, принадлежащему ядру f, поскольку скалярное произведение k и fi ei совпадает с f(k) = 0. Так как все прямые (или плоскости и т.д.) в наборе, который мы используем в качестве изображения  f, параллельны прямой (плоскости и т. д.), проходящей через начало координат, т.е. ядру функции f, то данный набор будет целиком ортогонален вектору fi ei.

Мы можем определить скалярное произведение в пространстве V*, если условимся, что любой базис, дуальный по отношению к некоторому ортонормированному базису в V, сам является ортонормированным. Это позволяет определить “длину” или модуль дуального вектора f посредством его квадрата:

|f|^2 = f \cdot f = (f_1 \mathbf{e}^1 + f_2 \mathbf{e}^2 + \cdots + f_n \mathbf{e}^n) = \cdots (f_1 \mathbf{e}^1 + f_2 \mathbf{e}^2 + \cdots + f_n \mathbf{e}^n) = (f_1)^2 + (f_2)^2 + \cdots + (f_n)^2

Здесь fi – компоненты f в базисе {e1, e2, … en} пространства V*, который дуален ортонормированному базису пространства V.

В соответствии с нашей геометрической интерпретацией f, каждая компонента fi = f(ei) представляет собой количество “промежутков в наборе параллельных прямых”, покрытых базисным вектором ei. Иными словами, эти компоненты являются аналогами количеств осцилляций волны, которые укладываются в одном метре вдоль осей x и y соответственно (см. рисунок).

ortnt_01_06

Предположим теперь, что мы пересекаем сетку линий по перпендикуляру – направив единичный вектор параллельно fi ei – иначе говоря, вектор fi ei / |fi ei| – который, как нам известно, ортогонален всем прямым сетки. Количество промежутков, покрытых таким ортогональным вектором, будет равно:

f\left(\cfrac{f_i \mathbf{e}_i}{|f_i \mathbf{e}_i|}\right) = \cfrac{f_i f(\mathbf{e}_i)}{|f_i \mathbf{e}_i|} = \cfrac{f_i f_i}{|f_i \mathbf{e}_i|} = \cfrac{|f|^2}{|f|} = |f|

Это альтернативная формулировка дуальной теоремы Пифагора! Измерив количество промежутков, покрываемых единичным вектором, направленным по перпендикуляру к сетке, мы получаем число |f|, квадрат которого, как мы только что убедились, равен сумме квадратов аналогичных измерений, выполненных при помощи единичных векторов, ориентированных вдоль каждого из n взаимно перпендикулярных направлений.