Articulo de referencia

Notación de índice

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...

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):

a=(a1a2anorte),a=(a1a2anorte){\displaystyle \mathbf {a} ={\begin{pmatrix}a_{1}\\a_{2}\\\vdots \\a_{n}\end{pmatrix}},\quad \mathbf {a} ={\begin{pmatrix}a_{1}&a_{2}&\cdots &a_{n}\end{pmatrix}}}

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:

a=(1089635){\displaystyle \mathbf {a} ={\begin{pmatrix}10&8&9&6&3&5\\\end{pmatrix}}}

entonces algunas entradas son

a1=10,a2=8,,a6=5{\displaystyle a_{1}=10,\,a_{2}=8,\,\cdots ,\,a_{6}=5}.

La notación se puede aplicar a vectores en matemáticas y física . La siguiente ecuación vectorial

a+b=do{\displaystyle \mathbf {a} +\mathbf {b} =\mathbf {c} }

También se puede escribir en términos de los elementos del vector (también llamados componentes), es decir

ai+bi=doi{\displaystyle a_{i}+b_{i}=c_{i}}

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...

a1+b1=do1a2+b2=do2  anorte+bnorte=donorte{\displaystyle {\begin{aligned}a_{1}+b_{1}&=c_{1}\\a_{2}+b_{2}&=c_{2}\\&\ \ \vdots \\a_{n}+b_{n}&=c_{n}\end{aligned}}}

Por lo tanto, la notación de índice sirve como una forma abreviada eficiente de

  1. representando la estructura general de una ecuación,
  2. si bien es aplicable a componentes individuales.

Matrices bidimensionales

Los elementos de la matriz A se describen mediante dos subíndices o índices.

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);

A=(a11a12a1nortea21a22a2norteametro1ametro2ametronorte){\displaystyle \mathbf {A} ={\begin{pmatrix}a_{11}&a_{12}&\cdots &a_{1n}\\a_{21}&a_{22}&\cdots &a_{2n}\\\vdots &\vdots &\ddots &\vdots \\a_{m1}&a_{m2}&\cdots &a_{mn}\\\end{pmatrix}}}

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

A=(986127492605){\displaystyle \mathbf {A} ={\begin{pmatrix}9&8&6\\1&2&7\\4&9&2\\6&0&5\end{pmatrix}}}

entonces algunas entradas son

a11=9,a12=8,a21=1,,a23=7,{\displaystyle a_{11}=9,\,a_{12}=8,\,a_{21}=1,\,\cdots ,\,a_{23}=7,\,\cdots }.

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:

A+B=do{\displaystyle \mathbf {A} +\mathbf {B} =\mathbf {C} }

en términos de los elementos de las matrices (también llamados componentes)

Aij+Bij=doij{\displaystyle A_{ij}+B_{ij}=C_{ij}}

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,

Ai1i2+Bi1i2=doi1i2{\displaystyle A_{i_{1}i_{2}\cdots }+B_{i_{1}i_{2}\cdots }=C_{i_{1}i_{2}\cdots }}

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

  1. Introducción al análisis tensorial: para ingenieros y científicos aplicados, JR Tyldesley, Longman, 1975, ISBN 0-582-44355-5
  2. Programación con C++, J. Hubbard, Schaum's Outlines, McGraw Hill (EE. UU.), 1996, ISBN 0-07-114328-9
  • 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