En matemáticas y programación informática , la notación de índices se utiliza para especificar los elementos de una matriz numérica. El formalismo en el uso de los índices varía según el tema. En particular, existen diferentes métodos para referirse a los elementos de una lista, un vector o una matriz , dependiendo de si se está escribiendo un artículo matemático formal para su publicación o un programa informático .
En matemáticas
En matemáticas, suele ser útil referirse a los elementos de una matriz mediante subíndices. Estos subíndices pueden ser números enteros o variables . Generalmente, la matriz adopta la forma de tensores , ya que estos pueden tratarse como matrices multidimensionales. Casos especiales (y más conocidos) son los vectores (matrices unidimensionales) y las matrices (matrices bidimensionales).
Lo que sigue es solo una introducción al concepto: la notación de índices se utiliza con mayor detalle en matemáticas (en particular en la representación y manipulación de operaciones tensoriales ). Consulte el artículo principal para obtener más información.
Matrices unidimensionales (vectores)
Un vector tratado como una matriz de números escribiéndolo como un vector fila o un vector columna (el que se utilice dependerá de la conveniencia o el contexto):
La notación de índices permite indicar los elementos de la matriz simplemente escribiendo una i , donde se sabe que el índice i va de 1 a n , debido a las n dimensiones. [ 1 ] Por ejemplo, dado el vector:
entonces algunas entradas son
- .
La notación se puede aplicar a vectores en matemáticas y física . La siguiente ecuación vectorial
También se puede escribir en términos de los elementos del vector (también llamados componentes), es decir
donde los índices toman un rango de valores determinado. Esta expresión representa un conjunto de ecuaciones, una para cada índice. Si cada vector tiene n elementos, es decir , i = 1, 2, ... , n , entonces las ecuaciones son explícitamente...
Por lo tanto, la notación de índice sirve como una forma abreviada eficiente de
- representando la estructura general de una ecuación,
- si bien es aplicable a componentes individuales.
Matrices bidimensionales

Se utiliza más de un índice para describir conjuntos de números en dos o más dimensiones, como los elementos de una matriz (véase también la imagen de la derecha);
La entrada de una matriz A se escribe usando dos índices, digamos i y j , con o sin comas para separarlos: a ij o a i,j , donde el primer subíndice es el número de fila y el segundo el número de columna. La yuxtaposición también se usa como notación para la multiplicación; esto puede ser fuente de confusión. Por ejemplo, si
entonces algunas entradas son
- .
Para índices mayores que 9, puede ser preferible la notación basada en comas (por ejemplo, un 3,12 en lugar de un 312 ).
Las ecuaciones matriciales se escriben de forma similar a las ecuaciones vectoriales, como por ejemplo:
en términos de los elementos de las matrices (también llamados componentes)
para todos los valores de i y j . Nuevamente, esta expresión representa un conjunto de ecuaciones, una para cada índice. Si cada matriz tiene m filas y n columnas, es decir , i = 1, 2, …, m y j = 1, 2, …, n , entonces hay mn ecuaciones.
Matrices multidimensionales
La notación permite una clara generalización a matrices multidimensionales de elementos: tensores. Por ejemplo,
representando un conjunto de muchas ecuaciones.
En el análisis tensorial, se utilizan superíndices en lugar de subíndices para distinguir entidades covariantes de contravariantes, véase covarianza y contravarianza de vectores e índices de elevación y descenso .
En informática
En varios lenguajes de programación, la notación de índices es una forma de acceder a los elementos de un array. Este método se utiliza porque es el más parecido a cómo se implementa en lenguaje ensamblador, donde la dirección del primer elemento se usa como base y un múltiplo (el índice) del tamaño del elemento se usa para acceder a él dentro del array.
Por ejemplo, si una matriz de enteros se almacena en una región de la memoria de la computadora que comienza en la celda de memoria con dirección 3000 (la dirección base ), y cada entero ocupa cuatro celdas (bytes), entonces los elementos de esta matriz están en las ubicaciones de memoria 0x3000, 0x3004, 0x3008, …, 0x3000 + 4( n − 1) (nótese la numeración basada en cero ). En general, la dirección del i -ésimo elemento de una matriz con dirección base b y tamaño de elemento s es b + es .
Detalles de implementación
En el lenguaje de programación C , podemos escribir lo anterior como *(base + i)(forma de puntero) o base[i](forma de indexación de matriz), lo cual es exactamente equivalente porque el estándar C define la forma de indexación de matriz como una transformación a la forma de puntero. Casualmente, dado que la suma de punteros es conmutativa, esto permite expresiones oscuras como 3[base]que es equivalente a base[3]. [ 2 ]
matrices multidimensionales
Las cosas se vuelven más interesantes cuando consideramos arreglos con más de un índice, por ejemplo, una tabla bidimensional. Tenemos tres posibilidades:
- convertir la matriz bidimensional en unidimensional calculando un único índice a partir de los dos
- Consideremos una matriz unidimensional donde cada elemento es otra matriz unidimensional, es decir, una matriz de matrices.
- Utilice almacenamiento adicional para guardar la matriz de direcciones de cada fila de la matriz original y almacene las filas de la matriz original como matrices unidimensionales separadas.
En C, se pueden usar los tres métodos. Cuando se usa el primer método, el programador decide cómo se organizan los elementos del array en la memoria de la computadora y proporciona las fórmulas para calcular la ubicación de cada elemento. El segundo método se usa cuando el número de elementos en cada fila es el mismo y se conoce al momento de escribir el programa. El programador declara que el array tiene, por ejemplo, tres columnas escribiendo elementtype tablename[][3];. Luego se hace referencia a un elemento particular del array escribiendo tablename[first index][second index]. El compilador calcula el número total de celdas de memoria ocupadas por cada fila, usa el primer índice para encontrar la dirección de la fila deseada y luego usa el segundo índice para encontrar la dirección del elemento deseado en la fila. Cuando se usa el tercer método, el programador declara la tabla como un array de punteros, como en elementtype *tablename[];. Cuando el programador especifica posteriormente un elemento particular tablename[first index][second index], el compilador genera instrucciones para buscar la dirección de la fila especificada por el primer índice y usar esta dirección como base al calcular la dirección del elemento especificado por el segundo índice.
void mult3x3f ( float result [][ 3 ], const float A [][ 3 ], const float B [][ 3 ]) { int i , j , k ; for ( i = 0 ; i < 3 ; ++ i ) { for ( j = 0 ; j < 3 ; ++ j ) { result [ i ][ j ] = 0 ; for ( k = 0 ; k < 3 ; ++ k ) result [ i ][ j ] += A [ i ][ k ] * B [ k ][ j ]; } } }En otros idiomas
En otros lenguajes de programación como Pascal, los índices pueden comenzar en 1, por lo que la indexación en un bloque de memoria se puede cambiar para ajustarse a un esquema de direccionamiento que comienza en 1 mediante una simple transformación lineal; en este esquema, la ubicación de memoria del i -ésimo elemento con dirección base b y tamaño de elemento s es b + ( i − 1) s .
Referencias
- Programación con C++ , J. Hubbard, Schaum's Outlines, McGraw Hill (EE. UU.), 1996, ISBN 0-07-114328-9
- Cálculo tensorial , DC Kay, Schaum's Outlines, McGraw Hill (EE. UU.), 1988, ISBN 0-07-033484-6
- Métodos matemáticos para la física y la ingeniería , KF Riley, MP Hobson, SJ Bence, Cambridge University Press, 2010, ISBN 978-0-521-86153-3
- Notación matemática
- Estructuras de programación