Artículos

12.2: Multiplicación de matrices


La siguiente operación matricial importante que exploraremos es la multiplicación de matrices. La operación de multiplicación de matrices es una de las operaciones matriciales más importantes y útiles. A lo largo de esta sección, también demostraremos cómo se relaciona la multiplicación de matrices con los sistemas lineales de ecuaciones.

Primero, proporcionamos una definición formal de vectores de fila y columna.

Definición ( PageIndex {1} ): vectores de fila y columna

Las matrices de tamaño (n times 1 ) o (1 times n ) se llaman vectores. Si (X ) es tal matriz, entonces escribimos (x_ {i} ) para denotar la entrada de (X ) en la fila (i ^ {th} ) de una matriz de columna, o la columna (i ^ {th} ) de una matriz de filas.

La matriz (n times 1 ) [X = left [ begin {array} {c} x_ {1} vdots x_ {n} end {array} right] ] es llamado a vector de columna. La matriz (1 times n ) [X = left [ begin {array} {ccc} x_ {1} & cdots & x_ {n} end {array} right] ] se llama vector fila.

Podemos simplemente usar el término vector a lo largo de este texto para hacer referencia a un vector de columna o de fila. Si lo hacemos, el contexto dejará claro a qué nos referimos.

En este capítulo, usaremos nuevamente la noción de combinación lineal de vectores como en Definición [def: combinación lineal]. En este contexto, una combinación lineal es una suma que consta de vectores multiplicados por escalares. Por ejemplo, [ left [ begin {array} {r} 50 122 end {array} right] = 7 left [ begin {array} {r} 1 4 end {array} right] +8 left [ begin {array} {r} 2 5 end {array} right] +9 left [ begin {array} {r} 3 6 end {array} right] ] es una combinación lineal de tres vectores.

Resulta que podemos expresar cualquier sistema de ecuaciones lineales como una combinación lineal de vectores. De hecho, los vectores que usaremos son solo las columnas de la correspondiente matriz aumentada.

Definición ( PageIndex {2} ): la forma vectorial de un sistema de ecuaciones lineales

Supongamos que tenemos un sistema de ecuaciones dado por [ begin {array} {c} a_ {11} x_ {1} + cdots + a_ {1n} x_ {n} = b_ {1} vdots a_ {m1} x_ {1} + cdots + a_ {mn} x_ {n} = b_ {m} end {array} ] Podemos expresar este sistema en forma vectorial que es la siguiente: [x_1 left [ begin {array} {c} a_ {11} a_ {21} vdots a_ {m1} end {array} right] + x_2 izquierda [ begin {array} {c} a_ {12} a_ {22} vdots a_ {m2} end {array} right] + cdots + x_n left [ begin {array } {c} a_ {1n} a_ {2n} vdots a_ {mn} end {array} right] = left [ begin {array} {c} b_1 b_2 vdots b_m end {matriz} derecha] ]

Observe que cada vector que se usa aquí es una columna de la matriz aumentada correspondiente. Hay un vector para cada variable en el sistema, junto con el vector constante.

La primera forma importante de multiplicación de matrices es multiplicar una matriz por un vector. Considere el producto dado por [ left [ begin {array} {rrr} 1 & 2 & 3 4 & 5 & 6 end {array} right] left [ begin {array} {r} 7 8 9 end {array} right] ] Pronto veremos que esto es igual a [7 left [ begin {array} {c} 1 4 end {array} right] + 8 left [ begin {array} {c} 2 5 end {array} right] +9 left [ begin {array} {c} 3 6 end {array} right] = left [ begin {array} {c} 50 122 end {array} right] ]

En términos generales, [ begin {alineado} left [ begin {array} {ccc} a_ {11} & a_ {12} & a_ {13} a_ {21} & a_ {22} & a_ { 23} end {matriz} right] left [ begin {matriz} {c} x_ {1} x_ {2} x_ {3} end {matriz} right] & = & x_ {1} left [ begin {array} {c} a_ {11} a_ {21} end {array} right] + x_ {2} left [ begin {array} {c} a_ { 12} a_ {22} end {matriz} right] + x_ {3} left [ begin {array} {c} a_ {13} a_ {23} end {array} right] & = & left [ begin {array} {c} a_ {11} x_ {1} + a_ {12} x_ {2} + a_ {13} x_ {3} a_ {21} x_ { 1} + a_ {22} x_ {2} + a_ {23} x_ {3} end {array} right] end {alineado} ] Por lo tanto, toma (x_ {1} ) multiplicado por la primera columna , suma a (x_ {2} ) multiplicado por la segunda columna, y finalmente (x_ {3} ) multiplicado por la tercera columna. La suma anterior es una combinación lineal de las columnas de la matriz. Cuando multiplica una matriz a la izquierda por un vector a la derecha, los números que componen el vector son solo los escalares que se usarán en la combinación lineal de las columnas como se ilustra arriba.

Aquí está la definición formal de cómo multiplicar una matriz (m times n ) por un vector columna (n times 1 ).

Definición ( PageIndex {3} ): Multiplicación de vector por matriz

Sea (A = left [a_ {ij} right] ) una matriz (m times n ) y sea (X ) una matriz (n times 1 ) dada por [ A = left [A_ {1} cdots A_ {n} right], X = left [ begin {array} {r} x_ {1} vdots x_ {n} end {array } derecho]]

Entonces el producto (AX ) es el vector de columna (m times 1 ) que es igual a la siguiente combinación lineal de las columnas de (A ): [x_ {1} A_ {1} + x_ {2 } A_ {2} + cdots + x_ {n} A_ {n} = sum_ {j = 1} ^ {n} x_ {j} A_ {j} ]

Si escribimos las columnas de (A ) en términos de sus entradas, tienen la forma [A_ {j} = left [ begin {array} {c} a_ {1j} a_ {2j} vdots a_ {mj} end {array} right] ] Entonces, podemos escribir el producto (AX ) como [AX = x_ {1} left [ begin {array} { c} a_ {11} a_ {21} vdots a_ {m1} end {matriz} right] + x_ {2} left [ begin {array} {c} a_ {12} a_ {22} vdots a_ {m2} end {array} right] + cdots + x_ {n} left [ begin {array} {c} a_ {1n} a_ {2n} vdots a_ {mn} end {array} right] ]

Tenga en cuenta que la multiplicación de una matriz (m times n ) y un vector (n times 1 ) produce un vector (m times 1 ).

Aquí hay un ejemplo.

Ejemplo ( PageIndex {1} ): un vector multiplicado por una matriz

Calcule el producto (AX ) para [A = left [ begin {array} {rrrr} 1 & 2 & 1 & 3 0 & 2 & 1 & -2 2 & 1 & 4 & 1 end {matriz} derecha], X = left [ begin {matriz} {r} 1 2 0 1 end {matriz} derecha] ]

Solución

Usaremos Definición [def: multiplicationvectormatrix] para calcular el producto. Por lo tanto, calculamos el producto (AX ) de la siguiente manera. [ begin {alineado} & 1 left [ begin {array} {r} 1 0 2 end {array} right] + 2 left [ begin {array} {r} 2 2 1 end {matriz} right] + 0 left [ begin {matriz} {r} 1 1 4 end {matriz} right] + 1 left [ begin {matriz } {r} 3 -2 1 end {array} right] & = left [ begin {array} {r} 1 0 2 end {array} right] + left [ begin {array} {r} 4 4 2 end {array} right] + left [ begin {array} {r} 0 0 0 end {array } right] + left [ begin {array} {r} 3 -2 1 end {array} right] & = left [ begin {array} {r} 8 2 5 end {matriz} right] end {alineado} ]

Usando la operación anterior, también podemos escribir un sistema de ecuaciones lineales en forma de matriz. De esta forma, expresamos el sistema como una matriz multiplicada por un vector. Considere la siguiente definición.

Definición ( PageIndex {4} ): la forma matricial de un sistema de ecuaciones lineales

Supongamos que tenemos un sistema de ecuaciones dado por [ begin {array} {c} a_ {11} x_ {1} + cdots + a_ {1n} x_ {n} = b_ {1} a_ {21} x_ {1} + cdots + a_ {2n} x_ {n} = b_ {2} vdots a_ {m1} x_ {1} + cdots + a_ {mn} x_ {n} = b_ { m} end {array} ] Entonces podemos expresar este sistema en forma de matriz como sigue. [ left [ begin {array} {cccc} 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 {array} right] left [ begin {array} {c} x_ {1} x_ {2} vdots x_ {n} end {matriz} right] = left [ begin {array} {c} b_ {1} b_ {2} vdots b_ {m} end {array} right] ]

La expresión (AX = B ) también se conoce como Forma de matriz del correspondiente sistema de ecuaciones lineales. La matriz (A ) es simplemente la matriz de coeficientes del sistema, el vector (X ) es el vector columna construido a partir de las variables del sistema, y ​​finalmente el vector (B ) es el vector columna construido a partir de las constantes del sistema. Es importante tener en cuenta que cualquier sistema de ecuaciones lineales se puede escribir de esta forma.

Observe que si escribimos un sistema homogéneo de ecuaciones en forma de matriz, tendría la forma (AX = 0 ), para el vector cero (0 ).

Puede ver en esta definición que un vector [X = left [ begin {array} {c} x_ {1} x_ {2} vdots x_ {n} end {array} right] ] satisfará la ecuación (AX = B ) solo cuando las entradas (x_ {1}, x_ {2}, cdots, x_ {n} ) del vector (X ) sean soluciones al sistema original.

Ahora que hemos examinado cómo multiplicar una matriz por un vector, deseamos considerar el caso en el que multiplicamos dos matrices de tamaños más generales, aunque estos tamaños todavía deben ser apropiados como veremos. Por ejemplo, en el Ejemplo [exa: vectormultbymatrix], multiplicamos una matriz (3 times 4 ) por un vector (4 times 1 ). Queremos investigar cómo multiplicar otros tamaños de matrices.

¡Todavía no hemos dado ninguna condición sobre cuándo es posible la multiplicación de matrices! Para las matrices (A ) y (B ), para formar el producto (AB ), el número de columnas de (A ) debe ser igual al número de filas de (B. ) Considere un producto (AB ) donde (A ) tiene un tamaño (m veces n ) y (B ) tiene un tamaño (n veces p ). Entonces, el producto en términos de tamaño de matrices viene dado por [(m times overset { text {¡estos deben coincidir!}} { Widehat {n) ; (n} times p}) = m veces p ]

Tenga en cuenta que los dos números exteriores dan el tamaño del producto. Una de las reglas más importantes con respecto a la multiplicación de matrices es la siguiente. Si los dos números del medio no coinciden, ¡no puedes multiplicar las matrices!

Cuando el número de columnas de (A ) es igual al número de filas de (B ), se dice que las dos matrices son conforme y el producto (AB ) se obtiene como sigue.

Definición ( PageIndex {4} ): Multiplicación de dos matrices

Sea (A ) una matriz (m times n ) y sea (B ) una matriz (n times p ) de la forma [B = left [B_ {1} cdots B_ {p} right] ] donde (B_ {1}, ..., B_ {p} ) son las (n times 1 ) columnas de (B ). Entonces la matriz (m times p ) (AB ) se define de la siguiente manera: [AB = A left [B_ {1} cdots B_ {p} right] = left [(AB) _ {1} cdots (AB) _ {p} right] ] donde ((AB) _ {k} ) es una matriz (m times 1 ) o un vector de columna que da el (k ^ {th} ) columna de (AB ).

Considere el siguiente ejemplo.

Ejemplo ( PageIndex {2} ): multiplicar dos matrices

Encuentra (AB ) si es posible. [A = left [ begin {array} {rrr} 1 & 2 & 1 0 & 2 & 1 end {array} right], B = left [ begin {array} {rrr} 1 & 2 & 0 0 & 3 & 1 -2 & 1 & 1 end {array} right] ]

Solución

Lo primero que debe verificar al calcular un producto es si la multiplicación es posible. La primera matriz tiene un tamaño (2 times 3 ) y la segunda matriz tiene un tamaño (3 times 3 ). Los números internos son iguales, por lo que (A ) y (B ) son matrices conformes. De acuerdo con la discusión anterior, (AB ) será una matriz (2 times 3 ). La definición [def: multiplicación de dos matrices] nos da una forma de calcular cada columna de (AB ), como sigue.

[ left [ overset { text {Primera columna}} { overbrace { left [ begin {array} {rrr} 1 & 2 & 1 0 & 2 & 1 end {array} right] " left [ begin {array} {r} 1 0 -2 end {array} right]}}, overset { text {Segunda columna}} { overbrace { left [ begin { array} {rrr} 1 & 2 & 1 0 & 2 & 1 end {array} right] left [ begin {array} {r} 2 3 1 end {array} right ]}}, overset { text {Tercera columna}} { overbrace { left [ begin {array} {rrr} 1 & 2 & 1 0 & 2 & 1 end {array} right] left [ begin {array} {r} 0 1 1 end {array} right]}} right] ] Sabes cómo multiplicar una matriz por un vector, usando la Definición [def: multiplicationvectormatrix] para cada una de las tres columnas. Por lo tanto, [ left [ begin {array} {rrr} 1 & 2 & 1 0 & 2 & 1 end {array} right] left [ begin {array} {rrr} 1 & 2 & 0 0 & 3 & 1 -2 & 1 & 1 end {array} right] = left [ begin {array} {rrr} -1 & 9 & 3 -2 & 7 & 3 end {matriz} right] ]

Dado que los vectores son simplemente matrices (n times 1 ) o (1 times m ), también podemos multiplicar un vector por otro vector.

Ejemplo ( PageIndex {3} ): multiplicación vectorial multiplicada por vectores

Multiplica si es posible ( left [ begin {array} {r} 1 2 1 end {array} right] left [ begin {array} {rrrr} 1 & 2 & 1 & 0 fin {matriz} derecha]. )

Solución

En este caso, estamos multiplicando una matriz de tamaño (3 times 1 ) por una matriz de tamaño (1 times 4. ) Los números internos coinciden, por lo que el producto está definido. Tenga en cuenta que el producto será una matriz de tamaño (3 por 4 ). Usando la Definición [def: multiplicación de dos matrices], podemos calcular este producto de la siguiente manera (: ) [ left [ begin {array} {r} 1 2 1 end {array} right] left [ begin {array} {rrrr} 1 & 2 & 1 & 0 end {array} right] = left [ overset { text {First column}} { overbrace { left [ begin {array " } {r} 1 2 1 end {matriz} right] left [ begin {matriz} {r} 1 end {matriz} right]}}, overset { text {Segunda columna }} { overbrace { left [ begin {array} {r} 1 2 1 end {array} right] left [ begin {array} {r} 2 end {array} right]}}, overset { text {Tercera columna}} { overbrace { left [ begin {array} {r} 1 2 1 end {array} right] left [ begin {array} {r} 1 end {array} right]}}, overset { text {Cuarta columna}} { overbrace { left [ begin {array} {r} 1 2 1 end {matriz} derecha] izquierda [ begin {matriz} {r} 0 end {matriz} derecha]}} derecha] ]

Puede usar Definición [def: multiplicationvectormatrix] para verificar que este producto sea [ left [ begin {array} {cccc} 1 & 2 & 1 & 0 2 & 4 & 2 & 0 1 & 2 & 1 & 0 end {array} right] ]

Ejemplo ( PageIndex {4} ): una multiplicación que no está definida

Encuentra (BA ) si es posible. [B = left [ begin {array} {ccc} 1 & 2 & 0 0 & 3 & 1 -2 & 1 & 1 end {array} right], A = left [ begin {array} {ccc} 1 & 2 & 1 0 & 2 & 1 end {array} right] ]

Solución

Primero compruebe si es posible. Este producto tiene la forma ( left (3 times 3 right) left (2 times 3 right). ) Los números interiores no coinciden, por lo que no puedes hacer esta multiplicación.

En este caso, decimos que la multiplicación no está definida. Observe que estas son las mismas matrices que usamos en el Ejemplo [exa: multiplicación de dos matrices]. En este ejemplo, intentamos calcular (BA ) en lugar de (AB ). Esto demuestra otra propiedad de la multiplicación de matrices. Si bien el producto (AB ) puede definirse, no podemos asumir que el producto (BA ) será posible. Por tanto, es importante comprobar siempre que el producto esté definido antes de realizar cualquier cálculo.

Anteriormente, definimos la matriz cero (0 ) como la matriz (de tamaño apropiado) que contiene ceros en todas las entradas. Considere el siguiente ejemplo de multiplicación por la matriz cero.

Ejemplo ( PageIndex {5} ): multiplicación por la matriz cero

Calcule el producto (A0 ) para la matriz [A = left [ begin {array} {rr} 1 & 2 3 & 4 end {array} right] ] y el (2 multiplicado por 2 ) matriz cero dada por [0 = left [ begin {array} {rr} 0 & 0 0 & 0 end {array} right] ]

Solución

En este producto, calculamos [ left [ begin {array} {rr} 1 & 2 3 & 4 end {array} right] left [ begin {array} {rr} 0 & 0 0 & 0 end {array} right] = left [ begin {array} {rr} 0 & 0 0 & 0 end {array} right] ]

Por tanto, (A0 = 0 ).

Observe que también podríamos multiplicar (A ) por (2 times 1 ) vector cero dado por ( left [ begin {array} {r} 0 0 end {array} right] ). El resultado sería el vector (2 times 1 ) cero. Por lo tanto, siempre es el caso de que (A0 = 0 ), para una matriz cero o vector de tamaño apropiado.


12.2: Multiplicación de matrices

Dadas dos matrices dispersas (matriz dispersa y sus representaciones | Conjunto 1 (uso de matrices y listas enlazadas)), realice operaciones como sumar, multiplicar o transponer las matrices en su forma dispersa. El resultado debe constar de tres matrices dispersas, una obtenida sumando las dos matrices de entrada, una multiplicando las dos matrices y una obtenida por transposición de la primera matriz.

Ejemplo: Tenga en cuenta que otras entradas de matrices serán cero ya que las matrices son escasas.


Si tiene una lista de matrices, puede aplicar una multiplicación de puntos a todas las matrices cambiando el Head de la lista a Dot. Para ilustrar esto, primero definiré un conjunto de matrices simbólicamente:

Esto contiene solo dos matrices por razones de visualización, pero puede cambiar numberOfMatrices a lo que quiera.

Ahora la respuesta a tu pregunta es simplemente:

Noté que hay una aceleración significativa sobre el método anterior, y también sobre el enfoque equivalente usando Fold mencionado por J.M., si participo la lista de matrices de antemano y hago los productos escalares en dos pasos:

La ganancia de velocidad es más dramática para listas más grandes de matrices, y uno puede tener que jugar con el tamaño de la partición. Usé el comando UpTo en Partition para permitir que la partición restante sea de tamaño variable.

Si desea probar esto para listas más grandes, sugiero omitir la prueba en la última línea porque será muy lenta (ya intenté acelerarla usando números aleatorios en lugar de los elementos de la matriz simbólica).

La idea original era usar ParallelMap en la partición, pero la sobrecarga debida a la paralelización consume la ganancia de velocidad con el ejemplo probado.


Ejemplo: multiplica dos matrices sin usar funciones

En este programa, se le pide al usuario que ingrese el tamaño de dos matrices al principio.

La columna de la primera matriz debe ser igual a la fila de la segunda matriz para la multiplicación. Si no se cumple esta condición, se vuelve a preguntar el tamaño de la matriz utilizando el bucle while.

Luego, se le pide al usuario que ingrese dos matrices y finalmente se calcula y muestra la salida de dos matrices.

Dado que el programa es largo y difícil de depurar, es mejor resolver este programa pasándolo a una función.


Operaciones vectoriales y matriciales para análisis multivariante

2.6.2 Matrices diagonales, escalares, de signos y de identidad

Un caso especial de una matriz simétrica es una matriz diagonal. Una matriz diagonal se define como una matriz cuadrada en la que todas las entradas fuera de la diagonal son cero.. (Tenga en cuenta que una matriz diagonal es necesariamente simétrica). Las entradas en la diagonal principal pueden ser cero o no.

Ejemplos de matrices diagonales son

Si todas las entradas en la diagonal principal son escalares iguales, entonces la matriz diagonal se llama matriz escalar.

Ejemplos de matrices escalares son

Si algunas de las entradas en la diagonal principal son -1 y el resto son +1, la matriz diagonal se llama matriz de signos. Ejemplos de matrices de signos son

Si las entradas en la diagonal de una matriz escalar son iguales a la unidad, entonces este tipo de matriz escalar se llama matriz de identidad, denotado I. Ejemplos son

Varias propiedades útiles están asociadas con matrices diagonales y, por lo tanto, los casos especiales de matrices escalares, de signo e identidad.

La transposición de una matriz diagonal es igual a la matriz original.

Las sumas y diferencias de matrices diagonales también son matrices diagonales.

Premultiplicación de una matriz A por una matriz diagonal D da como resultado una matriz en la que cada entrada en una fila dada es el producto de la entrada original en A correspondiente a esa fila y el elemento diagonal en la fila correspondiente de la matriz diagonal. Para ilustrar,

Postmultiplicación de una matriz A por una matriz diagonal D da como resultado una matriz en la que cada entrada en una columna dada es el producto de la entrada original en A correspondiente a esa columna y el elemento diagonal en la columna correspondiente de la matriz diagonal. Para ilustrar,

Pre y posmultiplicación de una matriz A por matrices diagonales D1 y D2 dar como resultado una matriz cuya ijLa entrada es el producto de la Ila entrada en la diagonal del premultiplicador, el ija entrada de A, y el jla entrada del posmultiplicador. Por ejemplo,

El producto de cualquier número de matrices diagonales es una matriz diagonal, cada una de cuyas entradas es el producto de las correspondientes entradas diagonales de las matrices. Por ejemplo,

La multiplicación de matrices diagonales, asumiendo conformabilidad, es conmutativa.

Las potencias de las matrices diagonales se encuentran simplemente elevando cada entrada diagonal a la potencia en cuestión. 8 (Las raíces se encuentran de forma análoga).

La multiplicación previa o posterior de una matriz A por una matriz escalar multiplica todas las entradas de A por la entrada constante en la matriz escalar. Es equivalente a la multiplicación escalar de la matriz, por ese escalar que aparece en la diagonal.

Como caso especial, la multiplicación previa o posterior de una matriz A por I, la matriz identidad, deja la matriz original sin cambios.

Las potencias de una matriz identidad son iguales a la matriz original.

Si bien las propiedades anteriores no son de ninguna manera exhaustivas de las características de las matrices diagonales, o los casos especiales de matrices escalares, de signo e identidad, representan las principales propiedades de interés para los investigadores aplicados.


Multiplicación de matrices en Python

en este tutorial, veremos dos segmentos para resolver la matriz

Aquí está el tutorial completo de multiplicación de dos matrices usando un ciclo anidado: Multiplicando dos matrices en Python

La multiplicación de dos matrices X e Y se define solo si el número de columnas en X es igual al número de filas Y. De lo contrario, dará lugar a un error en el resultado de salida.

Si X es una matriz (n X m) e Y es una matriz (m x 1), entonces, XY está definido y tiene la dimensión (n x 1).

siga el código que se proporciona a continuación para implementar la operación de matrices entre dos matrices.

ahora nos centraremos en la segunda parte de este tutorial, que es:


12.2: Multiplicación de matrices

Las matrices y los vectores tienen algunas similitudes y algunas diferencias las operaciones sobre matrices y vectores tienen mucho en común.

Vector es un objeto matemático que tiene magnitud y dirección, a diferencia de los escalares, que solo tienen magnitud.

Todos los números reales son escalares. & # 160 Podemos representar gráficamente un vector bidimensional mediante una flecha con la cola de la flecha en el origen y la punta de la flecha en un par ordenado en el plano cartesiano.

De manera equivalente, podemos representar un vector de dos dimensiones como un par ordenado en el plano cartesiano, asumiendo que la cola está en el origen y la cabeza en el par ordenado. & # 160 Un vector n-dimensional tiene un orden n, si tiene n elementos.

Denotamos vectores con letras mayúsculas y notamos que pueden tener cualquier orden o dimensión finita, n, por ejemplo, como en:

Los vectores están ordenados, es decir: dos los vectores son iguales si y solo si tienen la misma dimensión y los mismos elementos correspondientes en el mismo orden.

Si A = (a1, a2, a3,. . ., anorte )
y B = (b1, B2, B3,. . ., Bnorte ),
luego A = B si y solo si
para cada I de 1 an, aI = bI.

Cada vector tiene un magnitud , o largo , denotado por | A | , que viene dado por:

| A | = sqrt [(a1 ) 2 + (a2 ) 2 + (a3 ) 2 +. . . + (unnorte ) 2 ]

que se deriva de sucesivas aplicaciones del Teorema de Pitágoras.

Compatible para adición Dos vectores son compatibles para sumar si tienen el mismo orden, es decir, el mismo número de elementos. Suma de vectores se lleva a cabo entre dos vectores compatibles para la suma, agregando los elementos individuales correspondientes en orden. & # 160 Si A y B son como arriba, entonces

A + B = (una1 + b1, a2 + b2, a3 + b3,. . ., anorte + bnorte )

Multiplicación vectorial un escalar k (donde es una constante, cualquier número real), se lleva a cabo multiplicando cada elemento por k Si A es como arriba, entonces

Ecuación 5: Multiplicación de vectores por un escalar

kA = (ka1, ka2, ka3,. . ., kanorte )
Resta de vectores denotado por A y # 150 B , se lleva a cabo agregando – 1 veces B a A eso es, si A y B son como arriba, entonces

A & # 150 B = A + & # 150 B
Producto escalar se lleva a cabo de la siguiente manera:

A & # 183 B = a1B1 + un2B2 + un3B3 +. . . + unnorteBnorte

Tenga en cuenta que el producto escalar es una suma de productos de los elementos correspondientes de los vectores A y B

Tenga en cuenta también que el producto escalar de dos vectores NO es un vector, sino un escalar, un número real.

Usamos una operación muy similar al producto escalar cuando pasamos a la multiplicación de dos matrices.

Inserta algunos ejercicios vectoriales

EJEMPLO 1: Dejar A = (2, y # 150 3, 0, 4) y B = (2, y # 150 1, 3, x)
A + B = (2 + 2, & # 150 3 & # 150 1, 0 + 3, 4 + x)
A + B = (4, & # 150 4, 3, 4 + x)
3A = 3 y # 183 (2, y # 150 3, 0, 4)
3A = (3 & # 183 2, 3 & # 183 & # 150 3, 3 & # 183 0, 3 & # 183 4)
3A = (6, y # 150 9, 0, 12)
2A & # 150 3B = 2 & # 183 (2, & # 150 3, 0, 4) & # 150 3 & # 183 (2, & # 150 1, 3, x)
2A & # 150 3B = (2 & # 183 2, 2 & # 183 & # 150 3, 2 & # 183 0, 2 & # 183 4) & # 150 (3 & # 183 2, 3 & # 183 & # 150 1, 3 y # 183 3, 3 y # 183 x)
2A y # 150 3B = (4, y # 150 6, 0, 8) y # 150 (6, y # 150 3, 9, 3x)
2A & # 150 3B = (4 & # 150 6, & # 150 6 & # 150 [& # 150 3], 0 & # 150 9, 8 & # 150 3x)
2A & # 150 3B = (& # 150 2, & # 150 3, & # 150 9, 8 & # 150 3x)
2A + 3B = 2 & # 183 (2, & # 150 3, 0, 4) + 3 & # 183 (2, & # 150 1, 3, x)
2A + 3B = (2 & # 183 2, 2 & # 183 & # 150 3, 2 & # 183 0, 2 & # 183 4) + (3 & # 183 2, 3 & # 183 & # 150 1, 3 & # 183 3, 3 y # 183 x)
2A + 3B = (4, y # 150 6, 0, 8) + (6, y # 150 3, 9, 3x)
2A + 3B = (4 + 6, & # 150 6 + & # 150 3, 0 + 9, 8 + 3x)
2A + 3B = (10, y # 150 9, 9, 8 + 3x)
A & # 183 A = (2, & # 150 3, 0, 4) & # 183 (2, & # 150 3, 0, 4)
A & # 183 A = 2 & # 183 2 + & # 150 3 & # 183 & # 150 3 + 0 & # 183 0 + 4 & # 183 4
A & # 183 A = 4 + 9 + 0 + 16
A & # 183 A = 29
A & # 183 B = (2, & # 150 3, 0, 4) & # 183 (2, & # 150 1, 3, x)
A & # 183 B = 2 & # 183 2 + & # 150 3 & # 183 & # 150 1 + 0 & # 183 3 + 4 & # 183 x
A & # 183 B = 4 + 3 + 0 + 4x
A & # 183 B = 7 + 4x
& # 150 A & # 183 A = & # 150 (2, & # 150 3, 0, 4) & # 183 (2, & # 150 3, 0, 4)
& # 150 A & # 183 A = (& # 150 2, 3, 0, & # 150 4) & # 183 (2, & # 150 3, 0, 4)
& # 150 A & # 183 A = & # 150 2 & # 183 2 + 3 & # 183 & # 150 3 + 0 & # 183 0 + & # 150 4 & # 183 4
& # 150 A & # 183 A = & # 150 4 + & # 150 9 + 0 + & # 150 16
& # 150 A & # 183 A = & # 150 29
2A y # 183 B = 2 (2, y # 150 3, 0, 4) y # 183 (2, y # 150 1, 3, x)
2A & # 183 B = (2 & # 183 2, 2 & # 183 & # 150 3, 2 & # 183 0, 2 & # 183 4) & # 183 (2, & # 150 1, 3, x)
2A & # 183 B = (4, & # 150 6, 0, 8) & # 183 (2, & # 150 1, 3, x)
2A & # 183 B = 4 & # 183 2 + & # 150 6 & # 183 & # 150 1 + 0 & # 183 3 + 8 & # 183 x
2A y # 183 B = 8 + 6 + 0 + 8x
2A y # 183 B = 14 + 8x

Definiciones basicas

Una matriz generalmente se designa con una letra mayúscula, por ejemplo Amxn es una matriz A con dimensión metro filas y norte columnas.

Los elementos de una matriz se designan con letra minúscula, subindicados con el número de fila a la que pertenece y el número de columna a la que pertenece, por ejemplo aij es el elemento que pertenece a la fila i y a la columna j.

Amxn & lceil
|
& lpiso
& # 160a11  & # 160a12    .   .   .   & # 160a1n  & rceil
|
& rfloor
a21 a22 .   .   . a2n
.
.
.
.
.
.
.
.
.
am1 am2 .   .   . aMinnesota
Matriz cuadrada es una matriz con el mismo número de filas y columnas, es decir Anxn , que también puede designarse como Anorte .

Anxn & lceil
|
& lpiso
& # 160a11  & # 160a12    .   .   .   & # 160a1n  & rceil
|
& rfloor
& # 160 = Anorte
a21 a22 .   .   . a2n
.
.
.
.
.
.
.
.
.
an1 an2 .   .   . ann
Matriz de filas es una matriz con una fila.

A1xn [ & # 160a11  & # 160a12    .   .   .   & # 160a1n  ]
Matriz de columnas es una matriz con una columna.

Amx1 & lceil
|
& lpiso
& # 160a11  & rceil
|
& rfloor
a21
.
.
.
am1
Matrices iguales son dos matrices con la misma dimensión y todos los elementos correspondientes son iguales.
EJEMPLO 2: A2x3 & lceil
& lpiso
㺦  و  㺜  & rceil
& rfloor
& # 160 y & # 160 B2x3 & lceil
& lpiso
㺦  و  㺜  & rceil
& rfloor
49  15  49  15 

Agregar matrices Matrices conformables para la suma son matrices con las mismas dimensiones, es decir, dos matrices Apxq y Brxs se dice que son adaptable para la adición (o simplemente conforme ) si y solo si p = r y q = s . Adición de matrices puede llevarse a cabo solo entre matrices que son adaptable para la adición , es decir, dado Amxn = (unij ) y Bmxn = (bij ) , luego Amxn + Bmxn = Cmxn , dónde Cmxn = (cij ) , es decir,

( aij + bij ) = (cij )
EJEMPLO 3: & lceil
& lpiso
㺲  ف  㺖  & rceil
& rfloor
  +   & lceil
& lpiso
 – 51  ه  ى  & rceil
& rfloor
  =   & lceil
& lpiso
  50 + ( – 51 )    1 + 7     22 + 9   & rceil
& rfloor
  =   & lceil
& lpiso
 – 1  و  㺟  & rceil
& rfloor
53  – 54  53 + ( – 54)  4 + 5   9 + 7   – 1  16 

Multiplicación escalar Escalar es un solo número real. Multiplicación de matrices escalares es el producto de un valor escalar k y una matriz A , denotado por kA , donde cada elemento de la matriz A se multiplica por el valor escalar k .

(c + d) & # 183 A = c & # 183 A + d & # 183 A
c & # 183 (A + B) = c & # 183 A + c & # 183 B
(c & # 183 A) & # 183 d = (c & # 183 d) & # 183 A
(c & # 183 d) & # 183 A = c & # 183 (d & # 183 A)

Restar matrices Resta de matrices puede llevarse a cabo solo entre matrices que son adaptable para la adición , es decir, dado Amxn = (unij ) y Bmxn = (bij ) , luego

A & # 150 B = A + (& # 150 1) & # 183 B
EJEMPLO 5: & lceil
& lpiso
  50     1     22   & rceil
& rfloor
 –  & lceil
& lpiso
  – 51     7     9   & rceil
& rfloor
 =  & lceil
& lpiso
  50 – ( – 51 )     1 – 7     22 – 9   & rceil
& rfloor
 =  & lceil
& lpiso
  101     – 6     13   & rceil
& rfloor
53   4   9   – 54   5   7   53 – ( – 54 )   4 – 5   9 – 7   109   – 1   2  

Multiplicar matrices [7:58] Matrices conformables para multiplicación son dos matrices donde el número de filas de la primera matriz es igual al número de columnas de la segunda matriz, es decir, dos matrices Apxq y Brxs se dice que son conforme a la multiplicación (o compatible ) si y solo si q = r. Multiplicación de matrices puede llevarse a cabo solo entre matrices que son conforme a la multiplicación , es decir, dado Amxp = (unij ) y Bpxn = (bij ) , luego Amxp & # 183 Bpxn = Cmxn , dónde Cmxn = (cij ) , es decir,

En inglés, deja A frijol mxp matriz y dejar B ser un pxn matriz. & # 160 El producto C = AB es un nxm matriz donde cada entrada Cij de C se obtiene multiplicando las entradas correspondientes de la i th fila de matriz A por los de la j th columna de matriz B y luego agregando los resultados.

(A & # 183 B) & # 183 C = A & # 183 (B & # 183 C)
A & # 183 (B + C) = A & # 183 B + A & # 183 C
(B + C) & # 183 A = B & # 183 A + C & # 183 A

Matrices especiales Matriz cero es una matriz que contiene solo elementos cero, generalmente denotada por O .

Por la propiedad inversa aditiva de los números reales, cada número real a tiene un aditivo inverso & # 150 a .

Del mismo modo, dada una matriz A , hay una matriz (& # 150 1) & # 183 A = & # 150 A , llamó al aditivo inverso tal que A + (& # 150 1) & # 183 A = A & # 150 A = O .

ASIGNACIÓN REQUERIDA: & # 160 Consulte el calendario en el programa de estudios para conocer la fecha límite.

Matrices iguales
Vectores iguales
Ecuación 1: Vector
Ecuación 2: Vectores iguales
Ecuación 3: Magnitud vectorial
Ecuación 4: Suma de vectores
Ecuación 5: Multiplicación de vectores por un escalar
Ecuación 6: Resta de vectores
Ecuación 7: Producto escalar
Ecuación 8: Producto escalar
Ecuación 9: Matriz
Ecuación 10: Matriz cuadrada
Ecuación 11: Matriz de filas
Ecuación 12: Matriz de columnas
Ecuación 13: Suma de matrices
Ecuación 14: Resta de matrices
Ecuación 15: Multiplicación de matrices

Figura 1: Vector 2-D
Figura 2: Vector 3D
Figura 3: Adición de vectores

Tabla 1: Propiedades de la multiplicación escalar
Tabla 2: Propiedades de la multiplicación de matrices

Fuente de problemas de ejercicio para los ejemplos: & # 160 College Algebra and Trigonometry por Lial, Hornsey, Schneider, Daniels, Quinta edición, Sección 9.7, págs. 891-904


12.2 Multiplicación de matrices

Multiplicación de matrices El producto de dos matrices, Am × pa y Bp × n, es la matriz AB con dimensiones m × n. Cualquier elemento en la i-ésima fila y la j-ésima columna de esta matriz de productos es la suma de los productos de los elementos correspondientes de la i-ésima fila de A y la j-ésima columna de B. Cuando multiplica matrices, deben ser conformes para la multiplicación. Esto significa: # de columnas en la 1ra matriz = # de filas en la 2da matriz Ej 1) Para obtener cada elemento: esta es la primera fila, la primera columna, así que tomamos la 1ra fila de A × 1ra columna de B 3 × 2 2 × 2 coincidir con las dimensiones del producto 3 × 2 (4) (2) + (5) (5) = 8 + 25 = 33 (4) (3) + (5) (6) = 12 + 30 = 42 (7) (2 ) + (2) (5) = 14 + 10 = 24 escriba usted mismo cómo obtener este elemento

Ej 2) Encuentra A2 (la misma A del Ej 1) ¡Esperar! ¡No puedes! Entonces… indefinido 3 × 2 3 × 2 Podemos resolver elementos desconocidos en una ecuación matricial. Ej 3) Resuelva para x e y. 3x - 4 = 2 3x = 6 x = 2 12 + 5y = –3 5y = –15 y = –3

La matriz de identidad La matriz identidad es el equivalente al algebraico 1. Multiplicar por ella no cambia el original. etc. Patrón: 1 a lo largo de la diagonal y 0 a todos los demás * Si el producto de dos matrices es I, entonces son inversas entre sí. También puede multiplicar por una matriz 0 para obtener una matriz O.

¿Qué propiedades no están aquí? Conmutativo! Cuando “almacenamos” información en matrices, es posible que tengamos que transponerlas (cambiar filas y columnas) para hacerlas compatibles con la multiplicación. Ej: por 3 por 4 niños niñas ¡Sigue siendo lo mismo!

Ej 4) El propietario de un puesto de frutas empaqueta la fruta en tres formas de paquetes de regalo. El paquete económico, E, tiene 6 manzanas, 3 naranjas y 3 peras. El paquete estándar, S, tiene 5 manzanas, 4 naranjas y 4 peras. El paquete de lujo, L, tiene 6 tipos de cada fruta. Los costos son .50 por una manzana, $ 1.10 por una naranja y .80 por una pera. ¿Cuál es el costo total de preparar cada paquete de fruta? Cantidad de artículos manzana naranja pera Costo manzana naranja pera Si multiplicamos en este estado ... las etiquetas no coinciden con el costo por paquete de fruta por fruta costo por fruta fruta por paquete Paquete E S L 1 × 3 3 × 3 1 × 3

Tarea # 1202 Pág. 608 # 1, 3, 5, 8, 15, 16, 18, 19, 20, 29, 31, 34, 41, 42


Contenido

se puede dividir en cuatro bloques de 2 × 2

La matriz particionada se puede escribir como

Es posible utilizar un producto de matriz dividida en bloques que involucre solo álgebra en submatrices de los factores. The partitioning of the factors is not arbitrary, however, and requires "conformable partitions" [4] between two matrices A and B such that all submatrix products that will be used are defined. [5] Given an ( m × p ) matrix A with q row partitions and s column partitions

that are compatible with the partitions of A , the matrix product

Or, using the Einstein notation that implicitly sums over repeated indices:

If a matrix is partitioned into four blocks, it can be inverted blockwise as follows:

dónde A y D are square of arbitrary size, and B y C are conformable for partitioning. Además, A and the Schur complement of A en PAG: PAG/A = DCA −1 B must be invertible. [6]

Equivalently, by permuting the blocks:

Aquí, D and the Schur complement of D en PAG: PAG/D = ABD −1 C must be invertible.

Si A y D are both invertible, then:

By the Weinstein–Aronszajn identity, one of the two matrices in the block-diagonal matrix is invertible exactly when the other is.

If the blocks are square matrices of the mismo size further formulas hold. For example, if C and D commute (i.e., C D = D C ), then there holds [8]

We can use the formulas for the determinant of block matrices to obtain the eigenvalue of the matrix using the characteristic polynomial. For instance, if A is invertible the characteristic polynomial of

A block diagonal matrix is a block matrix that is a square matrix such that the main-diagonal blocks are square matrices and all off-diagonal blocks are zero matrices. That is, a block diagonal matrix A has the form

dónde Ak is a square matrix for all k = 1, . norte. In other words, matrix A is the direct sum of A1, . Anorte. It can also be indicated as A1A2 ⊕ . ⊕ Anorte or diag(A1, A2, . Anorte) (the latter being the same formalism used for a diagonal matrix). Any square matrix can trivially be considered a block diagonal matrix with only one block.

For the determinant and trace, the following properties hold

A block diagonal matrix is invertible if and only if each of its main-diagonal blocks are invertible, and in this case its inverse is another block diagonal matrix given by

A block tridiagonal matrix is another special block matrix, which is just like the block diagonal matrix a square matrix, having square matrices (blocks) in the lower diagonal, main diagonal and upper diagonal, with all other blocks being zero matrices. It is essentially a tridiagonal matrix but has submatrices in places of scalars. A block tridiagonal matrix A has the form

dónde Ak, Bk y Ck are square sub-matrices of the lower, main and upper diagonal respectively.

Block tridiagonal matrices are often encountered in numerical solutions of engineering problems (e.g., computational fluid dynamics). Optimized numerical methods for LU factorization are available and hence efficient solution algorithms for equation systems with a block tridiagonal matrix as coefficient matrix. The Thomas algorithm, used for efficient solution of equation systems involving a tridiagonal matrix can also be applied using matrix operations to block tridiagonal matrices (see also Block LU decomposition).

A block Toeplitz matrix is another special block matrix, which contains blocks that are repeated down the diagonals of the matrix, as a Toeplitz matrix has elements repeated down the diagonal. The individual block matrix elements, Aij, must also be a Toeplitz matrix.

A block Toeplitz matrix A has the form

For any arbitrary matrices A (of size metro × norte) y B (of size pag × q), we have the direct sum de A y B, denoted by A ⊕ < Displaystyle oplus>B and defined as

This operation generalizes naturally to arbitrary dimensioned arrays (provided that A y B have the same number of dimensions).

Note that any element in the direct sum of two vector spaces of matrices could be represented as a direct sum of two matrices.

In linear algebra terms, the use of a block matrix corresponds to having a linear mapping thought of in terms of corresponding 'bunches' of basis vectors. That again matches the idea of having distinguished direct sum decompositions of the domain and range. It is always particularly significant if a block is the zero matrix that carries the information that a summand maps into a sub-sum.

Given the interpretation vía linear mappings and direct sums, there is a special type of block matrix that occurs for square matrices (the case metro = norte). For those we can assume an interpretation as an endomorphism of an norte-dimensional space V the block structure in which the bunching of rows and columns is the same is of importance because it corresponds to having a single direct sum decomposition on V (rather than two). In that case, for example, the diagonal blocks in the obvious sense are all square. This type of structure is required to describe the Jordan normal form.

This technique is used to cut down calculations of matrices, column-row expansions, and many computer science applications, including VLSI chip design. An example is the Strassen algorithm for fast matrix multiplication, as well as the Hamming(7,4) encoding for error detection and recovery in data transmissions.


Contenido

The fundamental idea behind array programming is that operations apply at once to an entire set of values. This makes it a high-level programming model as it allows the programmer to think and operate on whole aggregates of data, without having to resort to explicit loops of individual scalar operations.

Kenneth E. Iverson described the rationale behind array programming (actually referring to APL) as follows: [2]

most programming languages are decidedly inferior to mathematical notation and are little used as tools of thought in ways that would be considered significant by, say, an applied mathematician.

The thesis is that the advantages of executability and universality found in programming languages can be effectively combined, in a single coherent language, with the advantages offered by mathematical notation. it is important to distinguish the difficulty of describing and of learning a piece of notation from the difficulty of mastering its implications. For example, learning the rules for computing a matrix product is easy, but a mastery of its implications (such as its associativity, its distributivity over addition, and its ability to represent linear functions and geometric operations) is a different and much more difficult matter.

Indeed, the very suggestiveness of a notation may make it seem harder to learn because of the many properties it suggests for explorations.

[. ]

Users of computers and programming languages are often concerned primarily with the efficiency of execution of algorithms, and might, therefore, summarily dismiss many of the algorithms presented here. Such dismissal would be short-sighted since a clear statement of an algorithm can usually be used as a basis from which one may easily derive a more efficient algorithm.

The basis behind array programming and thinking is to find and exploit the properties of data where individual elements are similar or adjacent. Unlike object orientation which implicitly breaks down data to its constituent parts (or scalar quantities), array orientation looks to group data and apply a uniform handling.

Function rank is an important concept to array programming languages in general, by analogy to tensor rank in mathematics: functions that operate on data may be classified by the number of dimensions they act on. Ordinary multiplication, for example, is a scalar ranked function because it operates on zero-dimensional data (individual numbers). The cross product operation is an example of a vector rank function because it operates on vectors, not scalars. Matrix multiplication is an example of a 2-rank function, because it operates on 2-dimensional objects (matrices). Collapse operators reduce the dimensionality of an input data array by one or more dimensions. For example, summing over elements collapses the input array by 1 dimension.

Array programming is very well suited to implicit parallelization a topic of much research nowadays. Further, Intel and compatible CPUs developed and produced after 1997 contained various instruction set extensions, starting from MMX and continuing through SSSE3 and 3DNow!, which include rudimentary SIMD array capabilities. Array processing is distinct from parallel processing in that one physical processor performs operations on a group of items simultaneously while parallel processing aims to split a larger problem into smaller ones (MIMD) to be solved piecemeal by numerous processors. Processors with two or more cores are increasingly common today.

The canonical examples of array programming languages are Fortran, APL, and J. Others include: A+, Analytica, Chapel, IDL, Julia, K, Klong, Q, Mata, MATLAB, MOLSF, NumPy, GNU Octave, PDL, R, S-Lang, SAC, Nial, ZPL and TI-BASIC.

Scalar languages Edit

In scalar languages such as C and Pascal, operations apply only to single values, so a+B expresses the addition of two numbers. In such languages, adding one array to another requires indexing and looping, the coding of which is tedious.

In array-based languages, for example in Fortran, the nested for-loop above can be written in array-format in one line,

or alternatively, to emphasize the array nature of the objects,

While scalar languages like C do not have native array programming elements as part of the language proper, this does not mean programs written in these languages never take advantage of the underlying techniques of vectorization (i.e., utilizing a CPU's vector-based instructions if it has them or by using multiple CPU cores). Some C compilers like GCC at some optimization levels detect and vectorize sections of code that its heuristics determine would benefit from it. Another approach is given by the OpenMP API, which allows one to parallelize applicable sections of code by taking advantage of multiple CPU cores.

Array languages Edit

In array languages, operations are generalized to apply to both scalars and arrays. Por lo tanto, a+B expresses the sum of two scalars if a y B are scalars, or the sum of two arrays if they are arrays.

An array language simplifies programming but possibly at a cost known as the abstraction penalty. [3] [4] [5] Because the additions are performed in isolation from the rest of the coding, they may not produce the optimally most efficient code. (For example, additions of other elements of the same array may be subsequently encountered during the same execution, causing unnecessary repeated lookups.) Even the most sophisticated optimizing compiler would have an extremely hard time amalgamating two or more apparently disparate functions which might appear in different program sections or sub-routines, even though a programmer could do this easily, aggregating sums on the same pass over the array to minimize overhead).

Ada Edit

The previous C code would become the following in the Ada language, [6] which supports array-programming syntax.

APL Edit

APL uses single character Unicode symbols with no syntactic sugar.

This operation works on arrays of any rank (including rank 0), and on a scalar and an array. Dyalog APL extends the original language with augmented assignments:

Analytica Edit

Analytica provides the same economy of expression as Ada.

BASIC Edit

Dartmouth BASIC had MAT statements for matrix and array manipulation in its third edition (1966).

Mata Edit

Stata's matrix programming language Mata supports array programming. Below, we illustrate addition, multiplication, addition of a matrix and a scalar, element by element multiplication, subscripting, and one of Mata's many inverse matrix functions.

MATLAB Edit

The implementation in MATLAB allows the same economy allowed by using the Fortran language.

A variant of the MATLAB language is the GNU Octave language, which extends the original language with augmented assignments:

Both MATLAB and GNU Octave natively support linear algebra operations such as matrix multiplication, matrix inversion, and the numerical solution of system of linear equations, even using the Moore–Penrose pseudoinverse. [7] [8]

The Nial example of the inner product of two arrays can be implemented using the native matrix multiplication operator. If a is a row vector of size [1 n] and b is a corresponding column vector of size [n 1].

The inner product between two matrices having the same number of elements can be implemented with the auxiliary operator (:) , which reshapes a given matrix into a column vector, and the transpose operator ' :

Rasql Edit

The rasdaman query language is a database-oriented array-programming language. For example, two arrays could be added with the following query:

R Edit

The R language supports array paradigm by default. The following example illustrates a process of multiplication of two matrices followed by an addition of a scalar (which is, in fact, a one-element vector) and a vector:

The matrix left-division operator concisely expresses some semantic properties of matrices. As in the scalar equivalent, if the (determinant of the) coefficient (matrix) A is not null then it is possible to solve the (vectorial) equation A * x = b by left-multiplying both sides by the inverse of A : A −1 (in both MATLAB and GNU Octave languages: A^-1 ). The following mathematical statements hold when A is a full rank square matrix:

A^-1 *(A * x)==A^-1 * (b) (A^-1 * A)* x ==A^-1 * b (matrix-multiplication associativity) x = A^-1 * b

where == is the equivalence relational operator. The previous statements are also valid MATLAB expressions if the third one is executed before the others (numerical comparisons may be false because of round-off errors).

If the system is overdetermined - so that A has more rows than columns - the pseudoinverse A + (in MATLAB and GNU Octave languages: pinv(A) ) can replace the inverse A −1 , as follows:

pinv(A) *(A * x)==pinv(A) * (b) (pinv(A) * A)* x ==pinv(A) * b (matrix-multiplication associativity) x = pinv(A) * b

However, these solutions are neither the most concise ones (e.g. still remains the need to notationally differentiate overdetermined systems) nor the most computationally efficient. The latter point is easy to understand when considering again the scalar equivalent a * x = b , for which the solution x = a^-1 * b would require two operations instead of the more efficient x = b / a . The problem is that generally matrix multiplications are not commutative as the extension of the scalar solution to the matrix case would require:

(a * x)/ a ==b / a (x * a)/ a ==b / a (commutativity does not hold for matrices!) x * (a / a)==b / a (associativity also holds for matrices) x = b / a

The MATLAB language introduces the left-division operator to maintain the essential part of the analogy with the scalar case, therefore simplifying the mathematical reasoning and preserving the conciseness:

A (A * x)==A b (A A)* x ==A b (associativity also holds for matrices, commutativity is no more required) x = A b

This is not only an example of terse array programming from the coding point of view but also from the computational efficiency perspective, which in several array programming languages benefits from quite efficient linear algebra libraries such as ATLAS or LAPACK. [9]

Returning to the previous quotation of Iverson, the rationale behind it should now be evident:

it is important to distinguish the difficulty of describing and of learning a piece of notation from the difficulty of mastering its implications. For example, learning the rules for computing a matrix product is easy, but a mastery of its implications (such as its associativity, its distributivity over addition, and its ability to represent linear functions and geometric operations) is a different and much more difficult matter. Indeed, the very suggestiveness of a notation may make it seem harder to learn because of the many properties it suggests for explorations.

The use of specialized and efficient libraries to provide more terse abstractions is also common in other programming languages. In C++ several linear algebra libraries exploit the language's ability to overload operators. In some cases a very terse abstraction in those languages is explicitly influenced by the array programming paradigm, as the Armadillo and Blitz++ libraries do. [10] [11]


Ver el vídeo: Matrizen multiplizieren, Matrixmultiplikation, Beispiel. Mathe by Daniel Jung (Septiembre 2021).