Введение
Способ обращения к элементам массивов или тензоров – индексная нотация, или индексиальная нотация в теории относительности и абстрактной алгебре. В математике и программировании индексная нотация используется для обозначения элементов массива чисел. Формализм использования индексов различается в зависимости от области применения. В частности, существуют разные способы обращения к элементам списка, вектора или матрицы, в зависимости от того, составляется ли формальная математическая публикация или пишется компьютерная программа.
index notation, or indicial notation in relativity theory and abstract algebra
In mathematics and computer programming, index notation is used to specify the elements of an array of numbers. The formalism of how indices are used varies according to the subject. In particular, there are different methods for referring to the elements of a list, a vector, or a matrix, depending on whether one is writing a formal mathematical paper for publication, or when one is writing a computer program.
В математике
Часто в математике бывает полезно обращаться к элементам массива, используя индексы. Индексы могут быть целыми числами или переменными. Массив в общем случае принимает форму тензора, поскольку тензоры можно рассматривать как многомерные массивы. Частными (и более привычными) случаями являются векторы (одномерные массивы) и матрицы (двумерные массивы). Приведенное ниже – лишь введение в данную концепцию: индексная запись используется более детально в математике (особенно при представлении и выполнении операций с тензорами). Более подробную информацию можно найти в основной статье.
Многомерные массивы
Обозначение позволяет четко обобщить на многомерные массивы элементов: тензоры. Например, это может представлять собой набор множества уравнений. В тензорном анализе для различения ковариантных и контравариантных величин вместо индексов, записанных снизу, используются надстрочные индексы, см. ковариантность и контравариантность векторов, а также изменение индекса (повышение и понижение индексов).
representing a set of many equations. In tensor analysis, superscripts are used instead of subscripts to distinguish covariant from contravariant entities, see covariance and contravariance of vectors and raising and lowering indices.
В вычислительной технике
В нескольких языках программирования индексная нотация — это способ обращения к элементам массива. Этот метод используется, поскольку он наиболее близок к реализации на языке ассемблера, где адрес первого элемента используется как база, а кратное (индекс) размера элемента — для адресации внутри массива. Например, если массив целых чисел хранится в области памяти компьютера, начиная с ячейки памяти с адресом 3000 (базовый адрес), и каждое целое число занимает четыре ячейки (байта), то элементы этого массива расположены по адресам памяти 0x3000, 0x3004, 0x3008, …, 0x3000 + 4(n − 1) (обратите внимание на нулевую индексацию). В общем случае, адрес i-го элемента массива с базовым адресом b и размером элемента s равен b + i * s.
Подробности реализации
В языке программирования C мы можем записать вышеуказанное как (форма указателя) или (форма индексации массива), что абсолютно эквивалентно, поскольку стандарт C определяет форму индексации массива как преобразование в форму указателя. В силу коммутативности сложения указателей, это позволяет использовать такие неочевидные выражения, как , которые эквивалентны .
На других языках
В других языках программирования, таких как Паскаль, индексы могут начинаться с 1, поэтому индексацию в блоке памяти можно изменить, чтобы она соответствовала схеме нумерации с 1, применив простое линейное преобразование. В этой схеме, адрес в памяти i-го элемента с базовым адресом b и размером элемента s будет равен b + (i − 1)s.