Multiplicación del vector de información por la matriz generadora. Multiplicación de matrices

El sistema MatLab realiza operaciones matemáticas en matrices y vectores de manera bastante simple. Consideremos primero las operaciones simples de suma y multiplicación de matrices y vectores. Que se den dos vectores

a =; % vector fila
b =; % de vector de columna

entonces la multiplicación de estos dos vectores se puede escribir como

c = a * b; % c = 1 + 2 + 3 + 4 + 5 = 16
d = b * a; % d - matriz de 5x5

De acuerdo con las operaciones sobre vectores, multiplicar un vector de fila por un vector de columna da un número, y multiplicar un vector de columna por un vector de fila da una matriz bidimensional, que es el resultado de los cálculos en el ejemplo dado, es decir

La suma y resta de dos vectores se escribe de la siguiente manera

a1 =;
a2 =;
c = a1 + a2; % c =;
c = a2-a1; % c =;

Tenga en cuenta que las operaciones de suma y resta se pueden realizar entre dos vectores de columna o dos vectores de fila. De lo contrario, MatLab mostrará un mensaje de error, porque no se pueden agregar vectores de diferentes tipos. Este es el caso de todas las operaciones aritméticas inaceptables: si es imposible calcularlas, el sistema MatLab informará un error y el programa se completará en la línea correspondiente.

Las operaciones de multiplicación y suma entre matrices se realizan de forma similar:

A =;
B = unos (3);
C = A + B; % de adición de dos matrices del mismo tamaño
D = A + 5; % de suma de una matriz y un número
E = A * B; % de multiplicación de la matriz A por B
F = B * A; % de multiplicación de la matriz B por A
G = 5 * A; % de multiplicación de matrices por número

Las operaciones de cálculo de la matriz inversa, así como la transposición de matrices y vectores, se escriben de la siguiente manera:

a =; % vector fila
b = a '; % vector de columna formado por
% transponiendo el vector fila a.
A =; % matriz 3x3 elementos
B = a * A; % B = - vector de fila
C = A * b; % C = - vector de columna
D = a * A * a '; % D = 45 - el número, la suma de los elementos de la matriz A
E = A '; % E - matriz transpuesta A
F = inv (A); % F - matriz inversa A
G = A ^ -1; % G - matriz inversa A

En el ejemplo anterior, puede ver que la operación de transposición de matrices y vectores se denota con el símbolo '(apóstrofe), que se coloca después del nombre del vector o matriz. Se puede calcular la inversa de una matriz llamando a la función inv () o elevando la matriz a la potencia -1. El resultado en ambos casos será el mismo, y los dos métodos de cálculo se realizan para facilitar su uso al implementar diferentes algoritmos.

Si en el proceso de cálculos se requiere multiplicar por elementos, dividir o elevar los elementos de un vector o matriz a una potencia, entonces los operadores se utilizan para esto:

. * - multiplicación por elementos;
./ y. \ - divisiones por elementos;
. ^ - exponenciación por elementos.

Consideremos el trabajo de estos operadores en el siguiente ejemplo.

a =; % vector fila
b =; % vector fila
c = a. * b; % c =
A = unos (3); % Matriz 3x3 formada por unos
B =; % matriz 3x3
C = A. * B; % una matriz de 3x3 que consta de
D = A./B; % una matriz de 3x3 que consta de
E = A. \ B; % una matriz de 3x3 que consta de
F = A. ^ 2; % cuadrando los elementos de la matriz A

Al final de esta sección, consideraremos varias funciones que son útiles cuando se trabaja con vectores y matrices.

Para encontrar el valor máximo de un elemento vectorial, se usa la función estándar max (), que devuelve el valor máximo encontrado de un elemento y su posición (índice):

a =;
= max (a); % v = 6, i = 2;

v = max (a); % v = 6;

El ejemplo anterior muestra dos formas diferentes de llamar a la función max (). En el primer caso, se determinan tanto el valor máximo del elemento como su índice en el vector, y en el segundo, solo el valor máximo del elemento.

En el caso de matrices, esta función define los valores máximos en las columnas, como se muestra en el siguiente ejemplo:

A =;
= max (A); % V =, I =
V = máx. (A); % V =

La sintaxis completa de la función max () se puede encontrar escribiendo el comando en la ventana de comandos de MatLab

ayuda<название функции>

La función min () funciona de manera similar, que determina el valor mínimo de un elemento de un vector o matriz y su índice.

Otra función útil para trabajar con matrices y vectores es la función sum (), que calcula la suma de los valores de los elementos de un vector o columnas de la matriz:

a =;
s = suma (a); % s = 3 + 5 + 4 + 2 + 1 = 15
A =;
S1 = suma (A); % S1 =
S2 = suma (suma (A)); % S2 = 39

Al calcular la suma S2, la suma de los valores de los elementos de la matriz A se calcula primero por columnas y luego por filas. Como resultado, la variable S2 contiene la suma de los valores de todos los elementos de la matriz A.

Para ordenar los valores de los elementos de un vector o matriz en orden ascendente o descendente, use la función sort () de la siguiente manera:

a =;

b1 = ordenar (a); % b1 =
b2 = sort (a, "descender"); % b2 =
b3 = ordenar (a, 'ascender'); % b3 =

para matrices

A =;
B1 = ordenar (A); % B1 =
B2 = ordenar (A, "descender"); % B2 =

En muchas tareas prácticas, a menudo se requiere encontrar un elemento específico en un vector o matriz. Esto se puede hacer usando la función estándar find (), que toma como argumento una condición según la cual se encuentran los elementos requeridos, por ejemplo:

a =;
b1 = buscar (a == 2); % b1 = 4 - índice del elemento 2
b2 = encontrar (a ~ = 2); % b2 = - índices sin 2
b3 = encontrar (a> 3); % b3 =

En el ejemplo anterior, el símbolo '==' significa una verificación de igualdad, y el símbolo '~ =' realiza una verificación de desigualdad de los valores de los elementos del vector a. Se describirán más detalles sobre estos operadores en la sección sobre operadores condicionales.

Otra función útil para trabajar con vectores y matrices es la función mean () para calcular la media valor aritmético que funciona así:

a =;
m = media (a); % m = 3
A =;
M1 = media (A); % M1 =
M2 = media (media (A)); % M2 = 4.333

Entonces, en la lección anterior, discutimos las reglas para sumar y restar matrices. Estas son operaciones tan simples que la mayoría de los estudiantes las entienden literalmente sobre la marcha.

Sin embargo, te regocijas temprano. El obsequio ha terminado, pasemos a la multiplicación. Te lo advierto de inmediato: multiplicar dos matrices no es en absoluto multiplicar los números en celdas con las mismas coordenadas, como podrías pensar. Aquí todo es mucho más divertido. Y tienes que empezar con definiciones preliminares.

Matrices consistentes

Una de las características más importantes de una matriz es su tamaño. Ya hemos hablado de esto cientos de veces: la notación $ A = \ left [m \ times n \ right] $ significa que la matriz contiene exactamente $ m $ filas y $ n $ columnas. Ya hemos discutido cómo no confundir filas con columnas. Ahora algo más es importante.

Definición. Matrices de la forma $ A = \ left [m \ times n \ right] $ y $ B = \ left [n \ times k \ right] $, en las que el número de columnas en la primera matriz es el mismo que el número de filas en el segundo, se llaman consistentes.

Una vez más: ¡el número de columnas en la primera matriz es igual al número de filas en la segunda! De aquí sacamos dos conclusiones a la vez:

  1. El orden de las matrices es importante para nosotros. Por ejemplo, las matrices $ A = \ left [3 \ times 2 \ right] $ y $ B = \ left [2 \ times 5 \ right] $ son consistentes (2 columnas en la primera matriz y 2 filas en la segunda), pero viceversa, las matrices $ B = \ left [2 \ times 5 \ right] $ y $ A = \ left [3 \ times 2 \ right] $ - ya no coinciden (5 columnas en la primera matriz son como 3 filas en el segundo).
  2. La consistencia es fácil de verificar si escribe todas las dimensiones una tras otra. Por ejemplo, del párrafo anterior: "3 2 2 5": en el medio están los mismos números, por lo que las matrices son consistentes. Pero "2 5 3 2" - no son consistentes, porque en el medio hay diferentes números.

Además, el capitán de la obviedad parece estar insinuando que las matrices cuadradas del mismo tamaño $ \ left [n \ times n \ right] $ son siempre consistentes.

En matemáticas, cuando el orden de enumeración de los objetos es importante (por ejemplo, en la definición anterior, el orden de las matrices es importante), a menudo se habla de pares ordenados. Nos reunimos con ellos en la escuela: creo que es obvio que las coordenadas $ \ left (1; 0 \ right) $ y $ \ left (0; 1 \ right) $ establecen diferentes puntos en el avión.

Entonces: las coordenadas también son pares ordenados que se componen de números. Pero nada impide componer tal par de matrices. Entonces podemos decir: "Un par ordenado de matrices $ \ left (A; B \ right) $ es consistente si el número de columnas en la primera matriz es el mismo que el número de filas en la segunda".

Bueno, ¿y qué?

Definición de multiplicación

Considere dos matrices emparejadas: $ A = \ left [m \ times n \ right] $ y $ B = \ left [n \ times k \ right] $. Y defina la operación de multiplicación para ellos.

Definición. El producto de dos matrices emparejadas $ A = \ left [m \ times n \ right] $ y $ B = \ left [n \ times k \ right] $ es una nueva matriz $ C = \ left [m \ times k \ right] $, cuyos elementos se calculan mediante la fórmula:

\ [\ begin (align) & ((c) _ (i; j)) = ((a) _ (i; 1)) \ cdot ((b) _ (1; j)) + ((a) _ (i; 2)) \ cdot ((b) _ (2; j)) + \ ldots + ((a) _ (i; n)) \ cdot ((b) _ (n; j)) = \\ & = \ sum \ limits_ (t = 1) ^ (n) (((a) _ (i; t)) \ cdot ((b) _ (t; j))) \ end (align) \]

Dicho producto se denota de manera estándar: $ C = A \ cdot B $.

Quienes ven esta definición por primera vez tienen dos preguntas a la vez:

  1. ¿Qué es este feroz juego?
  2. ¿Por qué es tan dificil?

Bueno, lo primero es lo primero. Comencemos con la primera pregunta. ¿Qué significan todos estos índices? ¿Y cómo no equivocarse al trabajar con matrices reales?

En primer lugar, tenga en cuenta que una línea larga para calcular $ ((c) _ (i; j)) $ (especialmente puse un punto y coma entre los índices para no confundirme, pero en general no es necesario ponerlos - Yo mismo me cansé de escribir la fórmula en la definición) en realidad se reduce a una regla simple:

  1. Tome la fila $ i $ ésima en la primera matriz;
  2. Tome la columna $ j $ ésima en la segunda matriz;
  3. Obtenemos dos secuencias de números. Multiplicamos los elementos de estas secuencias con los mismos números y luego sumamos los productos resultantes.

Este proceso es fácil de entender a partir de la imagen:


Esquema para multiplicar dos matrices

Una vez más: arreglamos la fila $ i $ en la primera matriz, la columna $ j $ en la segunda matriz, multiplicamos los elementos con los mismos números y luego sumamos los productos resultantes - obtenemos $ ((c) _ (ij PS Y así para todo $ 1 \ le i \ le m $ y $ 1 \ le j \ le k $. Aquellos. en total habrá $ m \ veces k $ tales "perversiones".

De hecho, ya nos hemos encontrado con la multiplicación de matrices en currículum escolar, solo en una forma muy truncada. Dejemos que se den los vectores:

\ [\ begin (align) & \ vec (a) = \ left (((x) _ (a)); ((y) _ (a)); ((z) _ (a)) \ right); \\ & \ overrightarrow (b) = \ left (((x) _ (b)); ((y) _ (b)); ((z) _ (b)) \ ​​right). \\ \ end (alinear) \]

Entonces su producto escalar será exactamente la suma de productos por pares:

\ [\ overrightarrow (a) \ times \ overrightarrow (b) = ((x) _ (a)) \ cdot ((x) _ (b)) + ((y) _ (a)) \ cdot ((y ) _ (b)) + ((z) _ (a)) \ cdot ((z) _ (b)) \]

Básicamente, en los años en que los árboles eran más verdes y el cielo más brillante, simplemente multiplicamos el vector de fila $ \ overrightarrow (a) $ por el vector de columna $ \ overrightarrow (b) $.

Hoy nada ha cambiado. Es solo que ahora hay más de estos vectores de fila y columnas.

¡Pero basta de teoría! Echemos un vistazo a ejemplos de la vida real. Y comencemos con el caso más simple: matrices cuadradas.

Multiplicación de matrices cuadradas

Tarea 1. Realice la multiplicación:

\ [\ left [\ begin (array) (* (35) (r)) 1 & 2 \\ -3 & 4 \\\ end (array) \ right] \ cdot \ left [\ begin (array) (* (35) (r)) -2 y 4 \\ 3 y 1 \\\ end (matriz) \ derecha] \]

Solución. Entonces, tenemos dos matrices: $ A = \ left [2 \ times 2 \ right] $ y $ B = \ left [2 \ times 2 \ right] $. Está claro que son consistentes (las matrices cuadradas del mismo tamaño son siempre consistentes). Por tanto, realizamos la multiplicación:

\ [\ begin (align) & \ left [\ begin (matriz) (* (35) (r)) 1 & 2 \\ -3 & 4 \\\ end (matriz) \ right] \ cdot \ left [\ begin (array) (* (35) (r)) -2 & 4 \\ 3 & 1 \\\ end (array) \ right] = \ left [\ begin (array) (* (35) (r)) 1 \ cdot \ left (-2 \ right) +2 \ cdot 3 & 1 \ cdot 4 + 2 \ cdot 1 \\ -3 \ cdot \ left (-2 \ right) +4 \ cdot 3 & -3 \ cdot 4 + 4 \ cdot 1 \\\ end (matriz) \ right] = \\ & = \ left [\ begin (matriz) (* (35) (r)) 4 & 6 \\ 18 & -8 \\\ end (matriz) \ right]. \ end (alinear) \]

¡Eso es todo!

Respuesta: $ \ left [\ begin (array) (* (35) (r)) 4 & 6 \\ 18 & -8 \\\ end (array) \ right] $.

Tarea 2. Realice la multiplicación:

\ [\ left [\ begin (matrix) 1 & 3 \\ 2 & 6 \\\ end (matrix) \ right] \ cdot \ left [\ begin (array) (* (35) (r)) 9 y 6 \\ -3 & -2 \\\ end (matriz) \ right] \]

Solución. Nuevamente emparejamos matrices, por lo que realizamos las siguientes acciones: \ [\]

\ [\ begin (align) & \ left [\ begin (matriz) 1 & 3 \\ 2 & 6 \\\ end (matriz) \ right] \ cdot \ left [\ begin (matriz) (* (35) ( r)) 9 & 6 \\ -3 & -2 \\\ end (arreglo) \ right] = \ left [\ begin (arreglo) (* (35) (r)) 1 \ cdot 9 + 3 \ cdot \ izquierda (-3 \ derecha) & 1 \ cdot 6 + 3 \ cdot \ izquierda (-2 \ derecha) \\ 2 \ cdot 9 + 6 \ cdot \ izquierda (-3 \ derecha) & 2 \ cdot 6 + 6 \ cdot \ left (-2 \ right) \\\ end (matriz) \ right] = \\ & = \ left [\ begin (matrix) 0 & 0 \\ 0 & 0 \\\ end (matrix) \ right] ... \ end (alinear) \]

Como puede ver, tenemos una matriz llena de ceros.

Respuesta: $ \ left [\ begin (matrix) 0 & 0 \\ 0 & 0 \\\ end (matrix) \ right] $.

De los ejemplos dados, es obvio que la multiplicación de matrices no es una operación tan difícil. Al menos para matrices cuadradas de 2 por 2.

En el curso de los cálculos, compilamos una matriz intermedia, donde escribimos directamente qué números están incluidos en esta o aquella celda. Esto es exactamente lo que debe hacer al resolver problemas reales.

Propiedades básicas del producto matricial

En una palabra. Multiplicación de matrices:

  1. No conmutativo: $ A \ cdot B \ ne B \ cdot A $ en general. Existen, por supuesto, matrices especiales para las cuales la igualdad $ A \ cdot B = B \ cdot A $ (por ejemplo, si $ B = E $ es la matriz de identidad), pero en la gran mayoría de los casos esto no funciona ;
  2. Asociativo: $ \ left (A \ cdot B \ right) \ cdot C = A \ cdot \ left (B \ cdot C \ right) $. Aquí no hay opciones: las matrices que están una al lado de la otra se pueden multiplicar sin preocuparse por lo que está a la izquierda y a la derecha de estas dos matrices.
  3. Distributivo: $ A \ cdot \ left (B + C \ right) = A \ cdot B + A \ cdot C $ y $ \ left (A + B \ right) \ cdot C = A \ cdot C + B \ cdot C $ (debido a la no conmutatividad del producto, tenemos que escribir por separado la distributividad a la derecha y a la izquierda.

Y ahora, todo es igual, pero con más detalle.

La multiplicación de matrices se parece mucho a la multiplicación de números clásica. Pero existen diferencias, la más importante de las cuales es que La multiplicación de matrices generalmente no es conmutativa..

Considere nuevamente las matrices del problema 1. Ya conocemos su producto directo:

\ [\ left [\ begin (array) (* (35) (r)) 1 & 2 \\ -3 & 4 \\\ end (array) \ right] \ cdot \ left [\ begin (array) (* (35) (r)) -2 & 4 \\ 3 & 1 \\\ end (arreglo) \ right] = \ left [\ begin (arreglo) (* (35) (r)) 4 y 6 \\ 18 & -8 \\\ end (matriz) \ derecha] \]

Pero si intercambiamos las matrices, obtenemos un resultado completamente diferente:

\ [\ left [\ begin (array) (* (35) (r)) -2 & 4 \\ 3 & 1 \\\ end (array) \ right] \ cdot \ left [\ begin (array) (* (35) (r)) 1 & 2 \\ -3 & 4 \\\ end (matriz) \ right] = \ left [\ begin (matrix) -14 & 4 \\ 0 & 10 \\\ end (matriz ) \ Derecha] \]

Resulta que $ A \ cdot B \ ne B \ cdot A $. Además, la operación de multiplicación solo está definida para matrices $ A = \ left [m \ times n \ right] $ y $ B = \ left [n \ times k \ right] $, pero nadie garantizó que permanecerían consistentes .si los cambia. Por ejemplo, las matrices $ \ left [2 \ times 3 \ right] $ y $ \ left [3 \ times 5 \ right] $ son bastante compatibles en el orden indicado, pero las mismas matrices $ \ left [3 \ times 5 \ right] Los $ y $ \ left [2 \ times 3 \ right] $, escritos en orden inverso, ya no coinciden. Tristeza. :(

Entre matrices cuadradas tamaño dado Siempre hay $ n $ que dan el mismo resultado cuando se multiplican hacia adelante o hacia atrás. Cómo describir todas estas matrices (y cuántas en general) es un tema para una lección separada. No hablaremos de eso hoy. :)

Sin embargo, la multiplicación de matrices es asociativa:

\ [\ left (A \ cdot B \ right) \ cdot C = A \ cdot \ left (B \ cdot C \ right) \]

Por lo tanto, cuando necesite multiplicar varias matrices en una fila a la vez, no es necesario hacerlo de una vez: es muy posible que algunas matrices adyacentes den un resultado interesante cuando se multiplican. Por ejemplo, una matriz nula, como en el problema 2, discutido anteriormente.

En problemas reales, la mayoría de las veces tienes que multiplicar matrices cuadradas de tamaño $ \ left [n \ times n \ right] $. El conjunto de todas estas matrices se denota por $ ((M) ^ (n)) $ (es decir, la notación $ A = \ left [n \ times n \ right] $ y \ significan lo mismo), y debe contener la matriz $ E $, que se llama matriz identidad.

Definición. Una matriz de identidad de tamaño $ n $ es una matriz $ E $ que para cualquier matriz cuadrada $ A = \ left [n \ times n \ right] $ se cumple la siguiente igualdad:

Dicha matriz siempre se ve igual: hay unos en la diagonal principal y ceros en todas las demás celdas.

\ [\ begin (align) & A \ cdot \ left (B + C \ right) = A \ cdot B + A \ cdot C; \\ & \ left (A + B \ right) \ cdot C = A \ cdot C + B \ cdot C. \\ \ end (align) \]

En otras palabras, si necesita multiplicar una matriz por la suma de otras dos, puede multiplicarla por cada uno de estos "otros dos" y luego sumar los resultados. En la práctica, normalmente tenemos que realizar la operación contraria: notamos la misma matriz, la ponemos fuera del paréntesis, realizamos la suma y así simplificamos nuestra vida. :)

Nota: para describir la distributividad, tuvimos que escribir dos fórmulas: donde la suma está en el segundo factor y donde la suma está en el primero. Esto se debe precisamente al hecho de que la multiplicación de matrices no es conmutativa (y, en general, en el álgebra no conmutativa hay muchos chistes de todo tipo que ni siquiera me vienen a la mente cuando se trabaja con números ordinarios). Y si, por ejemplo, necesita describir esta propiedad en el examen, asegúrese de escribir ambas fórmulas, de lo contrario, el profesor puede enojarse un poco.

Bien, todos estos eran cuentos de hadas de matriz cuadrada. ¿Y los rectangulares?

El caso de las matrices rectangulares

Pero nada, todo es igual que con los cuadrados.

Tarea 3. Realice la multiplicación:

\ [\ left [\ begin (matriz) \ begin (matriz) 5 \\ 2 \\ 3 \\\ end (matriz) & \ begin (matriz) 4 \\ 5 \\ 1 \\\ end (matriz) \ \\ end (matriz) \ right] \ cdot \ left [\ begin (array) (* (35) (r)) -2 & 5 \\ 3 & 4 \\\ end (array) \ right] \]

Solución. Tenemos dos matrices: $ A = \ left [3 \ times 2 \ right] $ y $ B = \ left [2 \ times 2 \ right] $. Escribamos los números que denotan los tamaños en una fila:

Como puede ver, los dos números centrales coinciden. Esto significa que las matrices son consistentes y se pueden multiplicar. Y en la salida obtenemos la matriz $ C = \ left [3 \ times 2 \ right] $:

\ [\ begin (align) & \ left [\ begin (matriz) \ begin (matriz) 5 \\ 2 \\ 3 \\\ end (matriz) & \ begin (matriz) 4 \\ 5 \\ 1 \\ \ end (matriz) \\\ end (matriz) \ right] \ cdot \ left [\ begin (matriz) (* (35) (r)) -2 & 5 \\ 3 & 4 \\\ end (matriz) \ right] = \ left [\ begin (array) (* (35) (r)) 5 \ cdot \ left (-2 \ right) +4 \ cdot 3 & 5 \ cdot 5 + 4 \ cdot 4 \\ 2 \ cdot \ left (-2 \ right) +5 \ cdot 3 & 2 \ cdot 5 + 5 \ cdot 4 \\ 3 \ cdot \ left (-2 \ right) +1 \ cdot 3 & 3 \ cdot 5 + 1 \ cdot 4 \\\ end (matriz) \ right] = \\ & = \ left [\ begin (matriz) (* (35) (r)) 2 & 41 \\ 11 & 30 \\ -3 & 19 \ \\ end (matriz) \ right]. \ end (alinear) \]

Todo está claro: la matriz final tiene 3 filas y 2 columnas. Para sí mismo $ = \ left [3 \ times 2 \ right] $.

Respuesta: $ \ left [\ begin (array) (* (35) (r)) \ begin (array) (* (35) (r)) 2 \\ 11 \\ -3 \\\ end (array) & \ begin (matriz) 41 \\ 30 \\ 19 \\\ end (matriz) \\\ end (matriz) \ right] $.

Ahora veamos uno de los mejores tareas de entrenamiento para aquellos que recién comienzan a trabajar con matrices. En él, es necesario no solo multiplicar dos tablas, sino primero determinar: ¿es permisible tal multiplicación?

Problema 4. Encuentre todos los posibles productos de matrices por pares:

\\]; $ B = \ left [\ begin (matrix) \ begin (matrix) 0 \\ 2 \\ 0 \\ 4 \\\ end (matrix) & \ begin (matrix) 1 \\ 0 \\ 3 \\ 0 \ \\ end (matriz) \\\ end (matriz) \ right] $; $ C = \ left [\ begin (matrix) 0 & 1 \\ 1 & 0 \\\ end (matrix) \ right] $.

Solución. Primero, anotemos los tamaños de las matrices:

\; \ B = \ left [4 \ times 2 \ right]; \ C = \ left [2 \ times 2 \ right] \]

Obtenemos que la matriz $ A $ solo se puede emparejar con la matriz $ B $, ya que el número de columnas en $ A $ es 4, y solo $ B $ tiene este número de filas. Por tanto, podemos encontrar el producto:

\\ cdot \ left [\ begin (array) (* (35) (r)) 0 & 1 \\ 2 & 0 \\ 0 & 3 \\ 4 & 0 \\\ end (array) \ right] = \ izquierda [\ begin (matriz) (* (35) (r)) - 10 y 7 \\ 10 y 7 \\\ end (matriz) \ derecha] \]

Sugiero al lector que realice los pasos intermedios de forma independiente. Solo señalaré que es mejor determinar el tamaño de la matriz resultante de antemano, antes de cualquier cálculo:

\\ cdot \ left [4 \ times 2 \ right] = \ left [2 \ times 2 \ right] \]

En otras palabras, simplemente eliminamos los coeficientes de "tránsito" que aseguraron la consistencia de las matrices.

¿Qué otras opciones hay? Por supuesto, puedes encontrar $ B \ cdot A $, porque $ B = \ left [4 \ times 2 \ right] $, $ A = \ left [2 \ times 4 \ right] $, por lo que el par ordenado $ \ left (B; A \ right) $ es consistente, y la dimensión del producto será:

\\ cdot \ left [2 \ times 4 \ right] = \ left [4 \ times 4 \ right] \]

En resumen, la salida será la matriz $ \ left [4 \ times 4 \ right] $, cuyos coeficientes se calculan fácilmente:

\\ cdot \ left [\ begin (array) (* (35) (r)) 1 & -1 & 2 & -2 \\ 1 & 1 & 2 & 2 \\\ end (array) \ right] = \ izquierda [\ begin (array) (* (35) (r)) 1 & 1 & 2 & 2 \\ 2 & -2 & 4 & -4 \\ 3 & 3 & 6 & 6 \\ 4 & -4 & 8 & -8 \\\ end (matriz) \ derecha] \]

Obviamente, puede conciliar otro $ C \ cdot A $ y $ B \ cdot C $, eso es todo. Por lo tanto, simplemente anotamos los trabajos resultantes:

Fue fácil.:)

Respuesta: $ AB = \ left [\ begin (array) (* (35) (r)) -10 & 7 \\ 10 & 7 \\\ end (array) \ right] $; $ BA = \ left [\ begin (array) (* (35) (r)) 1 & 1 & 2 & 2 \\ 2 & -2 & 4 & -4 \\ 3 & 3 & 6 & 6 \\ 4 & -4 & 8 & -8 \\\ end (matriz) \ right] $; $ CA = \ left [\ begin (array) (* (35) (r)) 1 & 1 & 2 & 2 \\ 1 & -1 & 2 & -2 \\\ end (array) \ right] $; $ BC = \ left [\ begin (array) (* (35) (r)) 1 & 0 \\ 0 & 2 \\ 3 & 0 \\ 0 & 4 \\\ end (array) \ right] $.

En general, recomiendo encarecidamente hacer esta tarea usted mismo. Y una tarea más similar, que está en tarea... Estos pensamientos aparentemente simples lo guiarán a través de todos los pasos clave en la multiplicación de matrices.

Pero la historia no termina ahí. Pasemos a casos especiales de multiplicación. :)

Vectores de fila y vectores de columna

Una de las operaciones matriciales más comunes es la multiplicación por una matriz con una fila o una columna.

Definición. Un vector de columna es una matriz $ \ left [m \ times 1 \ right] $, es decir que consta de varias filas y una sola columna.

Un vector de fila es una matriz $ \ left [1 \ times n \ right] $, es decir que consta de una fila y varias columnas.

De hecho, ya nos hemos encontrado con estos objetos. Por ejemplo, un vector 3D ordinario de la estereometría $ \ overrightarrow (a) = \ left (x; y; z \ right) $ no es más que un vector de fila. Desde un punto de vista teórico, casi no hay diferencia entre filas y columnas. Debe tener cuidado solo al coordinar con las matrices multiplicadoras circundantes.

Tarea 5. Realice la multiplicación:

\ [\ left [\ begin (array) (* (35) (r)) 2 & -1 & 3 \\ 4 & 2 & 0 \\ -1 & 1 & 1 \\\ end (array) \ right] \ cdot \ left [\ begin (array) (* (35) (r)) 1 \\ 2 \\ -1 \\\ end (array) \ right] \]

Solución. Ante nosotros está el producto de matrices emparejadas: $ \ left [3 \ times 3 \ right] \ cdot \ left [3 \ times 1 \ right] = \ left [3 \ times 1 \ right] $. Busquemos este trabajo:

\ [\ left [\ begin (array) (* (35) (r)) 2 & -1 & 3 \\ 4 & 2 & 0 \\ -1 & 1 & 1 \\\ end (array) \ right] \ cdot \ left [\ begin (matriz) (* (35) (r)) 1 \\ 2 \\ -1 \\\ end (matriz) \ right] = \ left [\ begin (matriz) (* (35 ) (r)) 2 \ cdot 1+ \ left (-1 \ right) \ cdot 2 + 3 \ cdot \ left (-1 \ right) \\ 4 \ cdot 1 + 2 \ cdot 2 + 0 \ cdot 2 \ \ -1 \ cdot 1 + 1 \ cdot 2 + 1 \ cdot \ left (-1 \ right) \\\ end (matriz) \ right] = \ left [\ begin (matriz) (* (35) (r) ) -3 \\ 8 \\ 0 \\\ end (matriz) \ derecha] \]

Respuesta: $ \ left [\ begin (array) (* (35) (r)) - 3 \\ 8 \\ 0 \\\ end (array) \ right] $.

Tarea 6. Realice la multiplicación:

\ [\ left [\ begin (array) (* (35) (r)) 1 & 2 & -3 \\\ end (array) \ right] \ cdot \ left [\ begin (array) (* (35) (r)) 3 & 1 & -1 \\ 4 & -1 & 3 \\ 2 & 6 & 0 \\\ end (array) \ right] \]

Solución. Nuevamente, todo está de acuerdo: $ \ left [1 \ times 3 \ right] \ cdot \ left [3 \ times 3 \ right] = \ left [1 \ times 3 \ right] $. Contamos el trabajo:

\ [\ left [\ begin (array) (* (35) (r)) 1 & 2 & -3 \\\ end (array) \ right] \ cdot \ left [\ begin (array) (* (35) (r)) 3 & 1 & -1 \\ 4 & -1 & 3 \\ 2 & 6 & 0 \\\ end (arreglo) \ right] = \ left [\ begin (arreglo) (* (35) ( r)) 5 & -19 & 5 \\\ end (matriz) \ right] \]

Respuesta: $ \ left [\ begin (matrix) 5 & -19 & 5 \\\ end (matrix) \ right] $.

Como puede ver, cuando multiplicamos el vector de fila y el vector de columna por una matriz cuadrada, siempre obtenemos una fila o columna del mismo tamaño en la salida. Este hecho tiene muchas aplicaciones, desde la solución ecuaciones lineales a todo tipo de transformaciones de coordenadas (que en última instancia también se reducen a sistemas de ecuaciones, pero no hablemos de lo triste).

Creo que todo fue obvio aquí. Pasemos a la parte final de la lección de hoy.

Exponenciación de una matriz

Entre todas las operaciones de multiplicación, la exponenciación merece especial atención; esto es cuando multiplicamos el mismo objeto por sí mismo varias veces. Las matrices no son una excepción, también pueden elevarse en varios grados.

Tales trabajos son siempre consistentes:

\\ cdot \ left [n \ times n \ right] = \ left [n \ times n \ right] \]

Y se designan de la misma forma que los grados ordinarios:

\ [\ begin (align) & A \ cdot A = ((A) ^ (2)); \\ & A \ cdot A \ cdot A = ((A) ^ (3)); \\ & \ underbrace (A \ cdot A \ cdot \ ldots \ cdot A) _ (n) = ((A) ^ (n)). \\ \ end (alinear) \]

A primera vista, todo es sencillo. Veamos cómo se ve en la práctica:

Problema 7. Eleve la matriz a la potencia indicada:

$ ((\ left [\ begin (matriz) 1 & 1 \\ 0 & 1 \\\ end (matriz) \ right]) ^ (3)) $

Solución. Bueno, está bien, construyamos. Primero, cuadremos:

\ [\ begin (align) & ((\ left [\ begin (matriz) 1 & 1 \\ 0 & 1 \\\ end (matriz) \ right]) ^ (2)) = \ left [\ begin (matriz ) 1 & 1 \\ 0 & 1 \\\ end (matriz) \ right] \ cdot \ left [\ begin (matrix) 1 & 1 \\ 0 & 1 \\\ end (matrix) \ right] = \\ & = \ left [\ begin (array) (* (35) (r)) 1 \ cdot 1 + 1 \ cdot 0 & 1 \ cdot 1 + 1 \ cdot 1 \\ 0 \ cdot 1 + 1 \ cdot 0 & 0 \ cdot 1 + 1 \ cdot 1 \\\ end (matriz) \ right] = \\ & = \ left [\ begin (array) (* (35) (r)) 1 & 2 \\ 0 & 1 \ \\ end (matriz) \ right] \ end (align) \]

\ [\ begin (align) & ((\ left [\ begin (matriz) 1 & 1 \\ 0 & 1 \\\ end (matriz) \ right]) ^ (3)) = ((\ left [\ begin (matriz) 1 & 1 \\ 0 & 1 \\\ end (matriz) \ right]) ^ (3)) \ cdot \ left [\ begin (matrix) 1 & 1 \\ 0 & 1 \\\ end ( matriz) \ right] = \\ & = \ left [\ begin (array) (* (35) (r)) 1 & 2 \\ 0 & 1 \\\ end (array) \ right] \ cdot \ left [ \ begin (matriz) 1 & 1 \\ 0 & 1 \\\ end (matriz) \ right] = \\ & = \ left [\ begin (array) (* (35) (r)) 1 & 3 \\ 0 & 1 \\\ end (matriz) \ right] \ end (align) \]

Eso es todo.:)

Respuesta: $ \ left [\ begin (matrix) 1 & 3 \\ 0 & 1 \\\ end (matrix) \ right] $.

Problema 8. Eleve la matriz a la potencia indicada:

\ [((\ left [\ begin (matriz) 1 & 1 \\ 0 & 1 \\\ end (matriz) \ right]) ^ (10)) \]

Solución. Simplemente no llores ahora por el hecho de que "el título es demasiado bueno", "el mundo no es justo" y "los profesores han perdido por completo sus orillas". De hecho, todo es fácil:

\ [\ begin (align) & ((\ left [\ begin (matriz) 1 & 1 \\ 0 & 1 \\\ end (matriz) \ right]) ^ (10)) = ((\ left [\ begin (matriz) 1 & 1 \\ 0 & 1 \\\ end (matriz) \ right]) ^ (3)) \ cdot ((\ left [\ begin (matrix) 1 & 1 \\ 0 & 1 \\\ end (matriz) \ right]) ^ (3)) \ cdot ((\ left [\ begin (matrix) 1 & 1 \\ 0 & 1 \\\ end (matrix) \ right]) ^ (3)) \ cdot \ left [\ begin (matriz) 1 & 1 \\ 0 & 1 \\\ end (matriz) \ right] = \\ & = \ left (\ left [\ begin (matriz) 1 & 3 \\ 0 & 1 \\\ end (matriz) \ right] \ cdot \ left [\ begin (matrix) 1 & 3 \\ 0 & 1 \\\ end (matrix) \ right] \ right) \ cdot \ left (\ left [ \ begin (matriz) 1 & 3 \\ 0 & 1 \\\ end (matriz) \ right] \ cdot \ left [\ begin (matrix) 1 & 1 \\ 0 & 1 \\\ end (matriz) \ right ] \ right) = \\ & = \ left [\ begin (matrix) 1 & 6 \\ 0 & 1 \\\ end (matrix) \ right] \ cdot \ left [\ begin (matrix) 1 & 4 \\ 0 & 1 \\\ end (matriz) \ right] = \\ & = \ left [\ begin (matrix) 1 & 10 \\ 0 & 1 \\\ end (matrix) \ right] \ end (align) \ ]

Tenga en cuenta que en la segunda línea usamos la multiplicación por asociatividad. En realidad, lo usamos en la tarea anterior, pero estaba implícito.

Respuesta: $ \ left [\ begin (matrix) 1 & 10 \\ 0 & 1 \\\ end (matrix) \ right] $.

Como puede ver, no hay nada difícil en elevar una matriz a una potencia. El último ejemplo se puede resumir:

\ [((\ left [\ begin (matriz) 1 & 1 \\ 0 & 1 \\\ end (matriz) \ right]) ^ (n)) = \ left [\ begin (matriz) (* (35) (r)) 1 & n \\ 0 & 1 \\\ end (matriz) \ right] \]

Este hecho es fácil de probar mediante inducción matemática o multiplicación directa. Sin embargo, está lejos de ser siempre posible captar tales patrones cuando se eleva a una potencia. Por lo tanto, tenga cuidado: a menudo es más fácil y rápido multiplicar varias matrices "directamente" que buscar algunas regularidades allí.

En general, no busque el significado más elevado donde no existe. En conclusión, considere elevar a una potencia de una matriz más grande, tanto como $ \ left [3 \ times 3 \ right] $.

Problema 9. Eleve la matriz a la potencia indicada:

\ [((\ left [\ begin (matrix) 0 & 1 & 1 \\ 1 & 0 & 1 \\ 1 & 1 & 0 \\\ end (matrix) \ right]) ^ (3)) \]

Solución. No busquemos patrones. Trabajamos duro:

\ [((\ left [\ begin (matrix) 0 & 1 & 1 \\ 1 & 0 & 1 \\ 1 & 1 & 0 \\\ end (matrix) \ right]) ^ (3)) = (( \ left [\ begin (matrix) 0 & 1 & 1 \\ 1 & 0 & 1 \\ 1 & 1 & 0 \\\ end (matrix) \ right]) ^ (2)) \ cdot \ left [\ begin (matriz) 0 & 1 & 1 \\ 1 & 0 & 1 \\ 1 & 1 & 0 \\\ end (matrix) \ right] \]

Primero, cuadremos esta matriz:

\ [\ begin (align) & ((\ left [\ begin (matriz) 0 & 1 & 1 \\ 1 & 0 & 1 \\ 1 & 1 & 0 \\\ end (matriz) \ right]) ^ ( 2)) = \ left [\ begin (matrix) 0 & 1 & 1 \\ 1 & 0 & 1 \\ 1 & 1 & 0 \\\ end (matrix) \ right] \ cdot \ left [\ begin (matrix ) 0 & 1 & 1 \\ 1 & 0 & 1 \\ 1 & 1 & 0 \\\ end (matriz) \ right] = \\ & = \ left [\ begin (array) (* (35) (r )) 2 & 1 & 1 \\ 1 & 2 & 1 \\ 1 & 1 & 2 \\\ end (array) \ right] \ end (align) \]

Ahora cubramos:

\ [\ begin (align) & ((\ left [\ begin (matriz) 0 & 1 & 1 \\ 1 & 0 & 1 \\ 1 & 1 & 0 \\\ end (matriz) \ right]) ^ ( 3)) = \ left [\ begin (array) (* (35) (r)) 2 & 1 & 1 \\ 1 & 2 & 1 \\ 1 & 1 & 2 \\\ end (array) \ right] \ cdot \ left [\ begin (matriz) 0 & 1 & 1 \\ 1 & 0 & 1 \\ 1 & 1 & 0 \\\ end (matriz) \ right] = \\ & = \ left [\ begin ( array) (* (35) (r)) 2 & 3 & 3 \\ 3 & 2 & 3 \\ 3 & 3 & 2 \\\ end (array) \ right] \ end (align) \]

Eso es todo. El problema ha sido resuelto.

Respuesta: $ \ left [\ begin (matrix) 2 & 3 & 3 \\ 3 & 2 & 3 \\ 3 & 3 & 2 \\\ end (matrix) \ right] $.

Como puede ver, la cantidad de cálculos ha aumentado, pero el significado no ha cambiado en absoluto. :)

Esta lección se puede terminar. La próxima vez consideraremos la operación inversa: buscaremos los factores originales utilizando el producto existente.

Como probablemente ya habrás adivinado, hablaremos de matriz inversa y métodos para encontrarlo.

Definición 1

El producto de matrices (C = AB) es una operación solo para matrices emparejadas A y B, en la que el número de columnas de la matriz A es igual al número de filas de la matriz B:

C ⏟ m × n = A ⏟ m × p × B ⏟ p × n

Ejemplo 1

Matrices dadas:

  • A = a (i j) tamaños m × n;
  • B = b (i j) tamaños p × n

Matriz C, cuyos elementos c i j se calculan mediante la siguiente fórmula:

c yo j = una yo 1 × segundo 1 j + una yo 2 × segundo 2 j +. ... ... + una yo p × b p j, yo = 1 ,. ... ... m, j = 1 ,. ... ... metro

Ejemplo 2

Calculamos los productos AB = BA:

A = 1 2 1 0 1 2, B = 1 0 0 1 1 1

Solución usando la regla de multiplicación de matrices:

A ⏟ 2 × 3 × B ⏟ 3 × 2 = 1 2 1 0 1 2 × 1 0 0 1 1 1 = 1 × 1 + 2 × 0 + 1 × 1 1 × 0 + 2 × 1 + 1 × 1 0 × 1 + 1 × 0 + 2 × 1 0 × 0 + 1 × 1 + 2 × 1 = = 2 3 2 3 ⏟ 2 × 2

B ⏟ 3 × 2 × A ⏟ 2 × 3 = 1 0 0 1 1 1 × 1 2 1 0 1 2 = 1 × 1 + 0 × 0 1 × 2 + 0 × 1 1 × 1 + 0 × 2 0 × 1 + 1 × 0 0 × 2 + 1 × 1 0 × 1 + 1 × 2 1 × 1 + 1 × 0 1 × 2 + 1 × 1 1 × 1 + 1 × 2 = 1 2 1 0 1 2 1 3 3 ⏟ 3 × 3

Se encuentran los productos A B y B A, pero son matrices de diferentes tamaños: A B no es igual a B A.

Propiedades de la multiplicación de matrices

Propiedades de la multiplicación de matrices:

  • (A B) C = A (B C) - asociatividad de la multiplicación de matrices;
  • А (В + С) = А В + А С - distributividad de la multiplicación;
  • (A + B) C = A C + B C - distributividad de la multiplicación;
  • λ (А В) = (λ А) В
Ejemplo 1

Comprobando la propiedad # 1: (A B) C = A (B C):

(A × B) × A = 1 2 3 4 × 5 6 7 8 × 1 0 0 2 = 19 22 43 50 × 1 0 0 2 = 19 44 43100,

A (B × C) = 1 2 3 4 × 5 6 7 8 1 0 0 2 = 1 2 3 4 × 5 12 7 16 = 19 44 43100.

Ejemplo 2

Comprobando la propiedad # 2: A (B + C) = A B + A C:

A × (B + C) = 1 2 3 4 × 5 6 7 8 + 1 0 0 2 = 1 2 3 4 × 6 6 7 10 = 20 26 46 58,

UNA B + UNA C = 1 2 3 4 × 5 6 7 8 + 1 2 3 4 × 1 0 0 2 = 19 22 43 50 + 1 4 3 8 = 20 26 46 58.

Producto de tres matrices

El producto de tres matrices A B C se calcula de 2 formas:

  • encontrar AB y multiplicar por C: (AB) C;
  • o busque primero B C y luego multiplique A (B C).
Ejemplo 3

Multiplica matrices de 2 formas:

4 3 7 5 × - 28 93 38 - 126 × 7 3 2 1

Algoritmo de acciones:

  • hallar el producto de 2 matrices;
  • luego encuentre el producto de 2 matrices nuevamente.

1). UNA B = 4 3 7 5 × - 28 93 38 - 126 = 4 (- 28) + 3 × 38 4 × 93 + 3 (- 126) 7 (- 28) + 5 × 38 7 × 93 + 5 (- 126) = 2 - 6 - 6 21

2). А В С = (А В) С = 2-6 - 6 21 7 3 2 1 = 2 × 7-6 × 2 2 × 3-6 × 1-6 × 7 + 21 × 2-6 × 3 + 21 × 1 = 2 0 0 3.

Usamos la fórmula A B C = (A B) C:

1). En С = - 28 93 38 - 126 7 3 2 1 = - 28 × 7 + 93 × 2 - 28 × 3 + 93 × 1 38 × 7 - 126 × 2 38 × 3 - 126 × 1 = - 10 9 14 - 12

2). UNA B C = (UNA B) C = 7 3 2 1 - 10 9 14 - 12 = 4 (- 10) + 3 × 14 4 × 9 + 3 (- 12) 7 (- 10) + 5 × 14 7 × 9 + 5 (- 12) = 2 0 0 3

Respuesta: 4 3 7 5 - 28 93 38 - 126 7 3 2 1 = 2 0 0 3

Multiplicar una matriz por un número

Definición 2

El producto de la matriz A por el número k es la matriz B = A k del mismo tamaño, que se obtiene a partir del original multiplicando por un número dado de todos sus elementos:

b yo, j = k × a yo, j

Propiedades de multiplicar una matriz por un número:

  • 1 × A = A
  • 0 × A = matriz nula
  • k (A + B) = k A + k B
  • (k + n) A = k A + n A
  • (k × n) × A = k (n × A)
Ejemplo 4

Encuentre el producto de la matriz A = 4 2 9 0 por 5.

5 A = 5 4 2 9 0 5 × 4 5 × 2 5 × 9 5 × 0 = 20 10 45 0

Multiplicación matriz-vector

Definición 3

Para encontrar el producto de una matriz y un vector, debes multiplicar de acuerdo con la regla "fila por columna":

  • si multiplica una matriz por un vector de columna, el número de columnas de la matriz debe coincidir con el número de filas del vector de columna;
  • el resultado de multiplicar un vector de columna es solo un vector de columna:

А В = а 11 а 12 ⋯ а 1 n а 21 а 22 ⋯ а 2 n ⋯ ⋯ ⋯ ⋯ а m 1 а m 2 ⋯ а mnb 1 b 2 ⋯ b 1 n = a 11 × b 1 + a 12 × b 2 + ⋯ + a 1 n × bna 21 × b 1 + a 22 × b 2 + ⋯ + a 2 n × bn ⋯ ⋯ ⋯ ⋯ am 1 × b 1 + am 2 × b 2 + ⋯ + amn × bn = c 1 c 2 ⋯ c 1 metro

  • si multiplica una matriz por un vector de fila, entonces la matriz que se está multiplicando debe ser exclusivamente un vector de columna, y el número de columnas debe coincidir con el número de columnas en el vector de fila:

А В = а а ⋯ а bb ⋯ b = a 1 × b 1 a 1 × b 2 ⋯ a 1 × bna 2 × b 1 a 2 × b 2 ⋯ a 2 × bn ⋯ ⋯ ⋯ ⋯ an × b 1 an × segundo 2 ⋯ an × bn = c 11 c 12 ⋯ c 1 nc 21 c 22 ⋯ c 2 norte ⋯ ⋯ ⋯ ⋯ cn 1 cn 2 ⋯ cnn

Ejemplo 5

Encuentre el producto de la matriz A y el vector columna B:

А В = 2 4 0 - 2 1 3 - 1 0 1 1 2 - 1 = 2 × 1 + 4 × 2 + 0 × (- 1) - 2 × 1 + 1 × 2 + 3 × (- 1) - 1 × 1 + 0 × 2 + 1 × (- 1) = 2 + 8 + 0 - 2 + 2 - 3 - 1 + 0 - 1 = 10 - 3 - 2

Ejemplo 6

Encuentre el producto de la matriz A y el vector fila B:

A = 3 2 0 - 1, B = - 1 1 0 2

А В = 3 2 0 1 × - 1 1 0 2 = 3 × (- 1) 3 × 1 3 × 0 3 × 2 2 × (- 1) 2 × 1 2 × 0 2 × 2 0 × (- 1) 0 × 1 0 × 0 0 × 2 1 × (- 1) 1 × 1 1 × 0 1 × 2 = - 3 3 0 6 - 2 2 0 4 0 0 0 0 - 1 1 0 2

Respuesta: A B = - 3 3 0 6 - 2 2 0 4 0 0 0 0 - 1 1 0 2

Si nota un error en el texto, selecciónelo y presione Ctrl + Enter


Cada vector se puede considerar como una sola columna o como una matriz de una sola fila. Una matriz de una columna se llamará vector de columna y una matriz de una fila se llamará vector de fila.

Si A es una matriz m * n, entonces el vector de columna b es de tamaño n, y la fila de vectores b es de tamaño m.

Por tanto, para multiplicar una matriz por un vector, el vector debe verse como un vector columna. Al multiplicar un vector por una matriz, debe tratarse como un vector de fila.

Multiplicar matriz

en un vector complejo

Obtenemos el resultado

Como puede ver, dada la dimensión constante del vector, podemos tener dos soluciones.

Me gustaría llamar su atención sobre el hecho de que la matriz en la primera y segunda versión, a pesar de los mismos valores, son completamente diferentes (tienen diferentes dimensiones)

En el primer caso, el vector se considera una columna y luego es necesario multiplicar matriz por vector, y en el segundo caso tenemos un vector fila y luego tenemos producto de un vector por una matriz.

Este bot también multiplica vectores y matrices que tienen valores complejos. Desarrollado por la calculadora más completa Multiplicación de matrices complejas en línea

Propiedades de la multiplicación matriz-vector

Matriz

Columna de vector

Vector fila

Número arbitrario

1. El producto de la matriz por la suma de los vectores columna es igual a la suma de los productos de la matriz por cada uno de los vectores.

2. El producto de la suma de los vectores de fila por la matriz es igual a la suma de los productos de los vectores por la matriz

3. El factor común del vector se puede mover fuera del producto de la matriz por el vector / vector por la matriz.

4. El producto del vector fila por el producto de la matriz y el vector columna es equivalente al producto del producto del vector fila por la matriz y el vector columna.

Tema 6. Algoritmos numéricos paralelos para la resolución de problemas típicos de la matemática computacional: multiplicación de matrices.

Multiplicación matriz-vector. Conseguir el rendimiento más rápido posible. Utilizando el paralelismo de nivel medio. Organización de cálculos paralelos para p = n. Usando un conjunto limitado de procesadores. Multiplicación de matrices. Análisis macro-operacional de algoritmos para la resolución de problemas. Organización del paralelismo basado en el intercambio de datos.

Multiplicación matriz-vector

El problema de multiplicar una matriz por un vector está determinado por las relaciones

Así, obtener el vector resultante implica repetir el mismo tipo de operaciones para multiplicar las filas de la matriz y el vector. La obtención de cada una de estas operaciones incluye la multiplicación por elementos de los elementos de la fila de la matriz y el vector y la posterior suma de los productos resultantes. El número total de operaciones escalares requeridas se estima como

Como se desprende de las acciones realizadas al multiplicar una matriz y un vector, se pueden obtener métodos paralelos para resolver el problema sobre la base de algoritmos de suma paralelos (consulte la Sección 4.1). En esta sección, el análisis de los métodos de paralelización se complementará con una consideración de la organización de los cálculos en paralelo en función del número de procesadores disponibles para su uso. Además, utilizando el ejemplo del problema de multiplicar una matriz por un vector, se llamará la atención sobre la necesidad de seleccionar la topología más adecuada de un sistema informático (canales de comunicación existentes entre procesadores) para reducir los costes de organización de la comunicación entre procesadores.

Lograr el rendimiento más rápido posible ()

Analicemos las dependencias de información en el algoritmo de multiplicación matriz-vector para elegir formas posibles paralelización. Como puede ver, las operaciones de multiplicar filas individuales de la matriz por un vector realizadas durante los cálculos son independientes y se pueden realizar en paralelo;



La multiplicación de cada fila por un vector implica una multiplicación de elementos independientes y también se puede realizar en paralelo;

La suma de los productos resultantes en cada operación de multiplicar una fila de una matriz por un vector se puede realizar de acuerdo con una de las variantes del algoritmo de suma previamente consideradas (algoritmo secuencial, circuitos en cascada convencionales y modificados).

Por lo tanto, el número máximo requerido de procesadores está determinado por el valor

El uso de tal número de procesadores se puede representar de la siguiente manera. Muchos procesadores se dividen en grupos

,

cada uno de los cuales representa un conjunto de procesadores para realizar la operación de multiplicar una fila individual de una matriz por un vector. Al comienzo de los cálculos, un elemento de la fila de la matriz y el elemento correspondiente del vector se envían a cada procesador del grupo. A continuación, cada procesador realiza una operación de multiplicación. Los cálculos posteriores se realizan de acuerdo con el esquema de suma en cascada. Para la ilustración en la fig. 6.1 muestra el esquema computacional para los procesadores del grupo con la dimensión de la matriz.

Arroz. 6.1. Esquema computacional de la operación de multiplicar una fila de una matriz por un vector.

El tiempo de ejecución de un algoritmo paralelo cuando se utilizan procesadores está determinado por el tiempo de ejecución de la operación de multiplicación en paralelo y el tiempo de ejecución del circuito concatenado.

Como resultado, los indicadores de rendimiento del algoritmo están determinados por las siguientes proporciones:

, ,

Para el problema considerado de la multiplicación matriz-vector, las topologías más adecuadas son las estructuras en las que transferencia rápida datos (caminos de longitud unitaria) en un esquema de suma en cascada (ver Fig. 4.5). Tales topologías son una estructura con un sistema completo de enlaces ( gráfico completo) y hipercubo... Otras topologías conducen a un aumento del tiempo de comunicación debido al alargamiento de las rutas de transmisión de datos. Entonces, en el ordenamiento lineal de procesadores con un sistema de conexiones solo con los vecinos más cercanos a la izquierda y a la derecha ( regla o anillo) para un esquema en cascada, la longitud de la ruta de transmisión de cada suma parcial recibida en la iteración ,, es igual. Si asumimos que la transmisión de datos a lo largo de una ruta de longitud en topologías con una estructura lineal requiere operaciones de transmisión de datos, el número total de operaciones en paralelo (longitud de ruta total) de transmisión de datos está determinado por el valor

(excluidas las transferencias de datos para procesadores de arranque).

Aplicación de un sistema informático con topología rectangular. celosía bidimensional El tamaño conduce a una interpretación simple y clara de los cálculos realizados (la estructura de la red corresponde a la estructura de los datos procesados). Para tal topología, es más conveniente colocar las filas de la matriz a lo largo de las líneas horizontales de la celosía; en este caso, los elementos del vector deben enviarse a lo largo de las verticales del sistema informático. Los cálculos con esta disposición de datos se pueden realizar en paralelo a lo largo de las líneas de la red; como resultado, el número total de transferencias de datos coincide con los resultados de la regla ().

Las acciones de comunicación que se realizan al resolver la tarea asignada consisten en transferir datos entre pares de procesadores MCS. Análisis detallado la duración de la implementación de tales operaciones se lleva a cabo en la página 3.3.

4. Recomendaciones para la implementación del algoritmo paralelo... Al implementar un algoritmo paralelo, es recomendable seleccionar la etapa inicial de carga de los procesadores utilizados con los datos iniciales. La inicialización más simple se proporciona para la topología de un sistema informático con una topología en la forma gráfico completo(la carga se proporciona mediante una operación de transferencia de datos en paralelo). Al organizar una pluralidad de procesadores en forma hipercubo Puede ser útil tener un control de dos niveles del proceso de arranque, en el que el procesador de control central envía la matriz y las filas vectoriales a los procesadores de control de los grupos de procesadores, que a su vez envían los elementos de la matriz y las filas vectoriales. a los procesadores ejecutivos. Para topologías en la forma gobernantes o anillos Se requieren operaciones de transferencia de datos secuenciales con una cantidad secuencialmente decreciente de datos transferidos de a elementos.

Usando paralelismo de nivel medio ()

1. Elección de un método de cálculo paralelo... Con una disminución en el número disponible de procesadores usados ​​(), el esquema habitual de suma en cascada cuando se realiza la multiplicación de filas de matriz por un vector se vuelve inaplicable. Para simplificar la presentación del material, colocamos y usamos un circuito en cascada modificado. En este caso, la carga inicial de cada procesador aumenta y el procesador se carga () con partes de la matriz y filas vectoriales. El tiempo de ejecución de la operación de multiplicar una matriz por un vector se puede estimar como el valor

Cuando se utiliza el número de procesadores necesarios para implementar el circuito en cascada modificado, es decir en, esta expresión da una estimación del tiempo de ejecución (a ).

Con el número de procesadores, cuando se estima el tiempo de ejecución del algoritmo como, se puede proponer un nuevo esquema de ejecución paralela de cálculos, en el cual para cada iteración de la suma en cascada conjuntos de procesadores no superpuestos... Con este enfoque, el número disponible de procesadores resulta suficiente para implementar solo una operación de multiplicar una fila de una matriz y un vector. Además, al realizar la siguiente iteración de la suma en cascada, los procesadores responsables de la ejecución de todas las iteraciones anteriores son gratuitos. Sin embargo, esta desventaja del enfoque propuesto se puede convertir en una ventaja utilizando procesadores inactivos para procesar las siguientes filas de la matriz. Como resultado, se puede formar el siguiente esquema transportador realizar la multiplicación de matrices y vectores:

El conjunto de procesadores se divide en grupos de procesadores que no se superponen

,

el grupo ,, consta de procesadores y se usa para iterar el algoritmo en cascada (el grupo se usa para implementar la multiplicación por elementos); el número total de procesadores;

La inicialización de los cálculos consiste en la carga elemento por elemento de los procesadores del grupo con los valores de 1 fila de la matriz y el vector; después de la carga inicial, se realiza una operación en paralelo de multiplicación por elementos y la implementación subsiguiente de un circuito de suma en cascada convencional;

Al realizar cálculos, cada vez que se completa la operación de multiplicación por elementos, los procesadores del grupo se cargan con los elementos de la siguiente fila de la matriz y se inicia el proceso de cálculo para los datos recién cargados.

Como resultado de la aplicación del algoritmo descrito, muchos procesadores implementan una tubería para realizar la operación de multiplicar una fila de matriz por un vector. En tal transportador, puede haber varias filas separadas de la matriz al mismo tiempo en diferentes etapas de procesamiento. Entonces, por ejemplo, después de la multiplicación por elementos de los elementos de la primera fila y el vector, los procesadores del grupo realizarán la primera iteración del algoritmo en cascada para la primera fila de la matriz, y los procesadores del grupo realizarán multiplicación por elementos de los valores de la segunda fila de la matriz, etc. Para la ilustración en la fig. 6.2 muestra la situación del proceso de cálculo después de 2 iteraciones de la tubería para.

Arroz. 6.2. El estado de la tubería para la operación de multiplicar una fila de matriz por un vector después de realizar 2 iteraciones.

2. Evaluación de indicadores de desempeño del algoritmo... La multiplicación de la primera fila por un vector de acuerdo con el esquema en cascada se completará, como es habitual, después de realizar () operaciones paralelas. Para otras líneas, de acuerdo con el esquema de la tubería para organizar los cálculos, la aparición de los resultados de la multiplicación de cada línea sucesiva ocurrirá después de la finalización de cada iteración posterior de la tubería. Como resultado, el tiempo total de ejecución de la operación de multiplicación matriz-vector se puede expresar como

Esta estimación es algo mayor que el tiempo de ejecución del algoritmo paralelo descrito en el párrafo anterior (), sin embargo, el método propuesto recientemente requiere que se transmitan menos datos (el vector se envía solo una vez). Además, el uso de un esquema de canalización conduce a una aparición más temprana de una parte de los resultados del cálculo (que puede ser útil en varias situaciones de procesamiento de datos).

Como resultado, los indicadores de rendimiento del algoritmo están determinados por las siguientes proporciones:

3. Elección de la topología del sistema informático... La topología conveniente de un sistema informático está completamente determinada por el esquema informático: esta es una completa árbol binario altura. El número de transferencias de datos en esta topología de red está determinado por el número total de iteraciones realizadas por la tubería, es decir,

.

La inicialización de los cálculos comienza con las hojas del árbol, los resultados de la suma se acumulan en el procesador de raíces.

Se supone que el análisis de la complejidad de las acciones de comunicación realizadas para sistemas informáticos con otras topologías de conexiones entre procesadores se realiza como autoasignación(ver también la sección 3.4).

Organización de la computación paralela cuando

1. Elección de un método de cálculo paralelo... Cuando se utilizan procesadores para multiplicar una matriz por un vector, se puede utilizar el algoritmo paralelo de multiplicación fila por fila, discutido anteriormente en el manual, en el que las filas de la matriz se distribuyen entre los procesadores fila por fila y cada procesador. implementa la operación de multiplicar cualquier fila de la matriz por un vector. Otra forma posible de organizar cálculos paralelos podría ser construir un circuito de tubería para la operación de multiplicar una fila de matriz por un vector(producto escalar de vectores) organizando todos los procesadores disponibles en forma de secuencia lineal ( gobernantes).

Un esquema de cálculo similar se puede definir como sigue. Representamos el conjunto de procesadores en forma de secuencia lineal (ver Fig. 4.7):

cada procesador ,,, se utiliza para multiplicar los elementos de una columna de matriz y un elemento de vector. La realización de cálculos en cada procesador, es la siguiente:

Se solicita el siguiente elemento de la columna de la matriz;

Los elementos y se multiplican;

Se solicita el resultado del cálculo del procesador anterior;

Se realiza la suma de valores;

El resultado resultante se envía al siguiente procesador.

Arroz. 6.3. El estado de la tubería lineal para la operación de multiplicar una fila de matriz por un vector después de realizar dos iteraciones.

Al inicializar el esquema descrito, es necesario realizar una serie de pasos adicionales:

Durante la primera iteración, cada procesador solicita adicionalmente un elemento de vector;

Para sincronizar los cálculos (al ejecutar la siguiente iteración del circuito, se solicita el resultado del cálculo del procesador anterior) en la etapa de inicialización, el procesador ejecuta () un ciclo de espera.

Además, para la homogeneidad del esquema descrito para el primer procesador, que no cuenta con un procesador anterior, es recomendable introducir una operación de adición vacía ( ).

Para la ilustración en la fig. 6.3 muestra el estado del proceso de cálculo después de la segunda iteración de la tubería en.

2. Evaluación de indicadores de desempeño del algoritmo... La multiplicación de la primera fila por un vector de acuerdo con el esquema de tubería descrito se completará después de realizar () operaciones en paralelo. El resultado de la multiplicación de las siguientes líneas ocurrirá después de la finalización de cada siguiente iteración del pipeline (recuerde que la iteración de cada procesador incluye la ejecución de operaciones de multiplicación y suma). Como resultado, el tiempo total de ejecución de la operación de multiplicación matriz-vector se puede expresar como:

Esta puntuación también es mayor que el mínimo tiempo posible ejecución de un algoritmo paralelo para. La utilidad de utilizar un esquema computacional canalizado es, como se señaló en el párrafo anterior, en reducir la cantidad de datos transmitidos y en la aparición más temprana de una parte de los resultados computacionales.

Los indicadores de desempeño de este esquema computacional están determinados por las razones:

, ,

3. Elección de la topología del sistema informático... La topología necesaria del sistema informático para ejecutar el algoritmo descrito está determinada de forma única por el esquema informático propuesto: este es un conjunto de procesadores ordenados linealmente ( regla).

Usando un conjunto limitado de procesadores ()

1. Elección de un método de cálculo paralelo... Cuando el número de procesadores se reduce a un valor, se puede obtener un esquema computacional paralelo para multiplicar una matriz por un vector como resultado de la adaptación del algoritmo de multiplicación fila por fila. En este caso, el circuito en cascada para sumar los resultados de la multiplicación por elementos se degenera y la operación de multiplicar una fila de matriz por un vector se realiza completamente en un solo procesador. El esquema computacional obtenido con este enfoque se puede concretar de la siguiente manera:

Un vector y filas de matriz se envían a cada uno de los procesadores disponibles;

La operación de multiplicación de filas matriz-vector se realiza utilizando el algoritmo secuencial habitual.

Cabe señalar que el tamaño de la matriz puede no ser un múltiplo del número de procesadores y, por lo tanto, las filas de la matriz no se pueden dividir por igual entre los procesadores. En estas situaciones, es posible desviarse del requisito de uniformidad de la carga del procesador y, para obtener un esquema computacional más simple, aceptar la regla de que la ubicación de los datos en los procesadores se lleva a cabo solo fila por fila (es decir, los elementos de una fila de la matriz no se puede compartir entre varios procesadores). Un número desigual de líneas conduce a una carga computacional diferente de los procesadores; por lo tanto, la finalización de los cálculos (la duración total de la resolución del problema) estará determinada por el tiempo de funcionamiento del procesador más cargado (en este caso, parte de este tiempo total, los procesadores individuales pueden estar inactivos debido al agotamiento de su parte de cálculos). La carga desigual de procesadores reduce la eficiencia del uso del MCS y, como resultado de la consideración este ejemplo podemos concluir que problema de equilibrio

3. Elección de la topología del sistema informático... De acuerdo con la naturaleza de las interacciones entre procesadores realizadas en el esquema computacional propuesto, la organización de los procesadores en la forma estrellas(ver figura 1.1). Se puede utilizar un procesador de control de una topología similar para cargar los procesadores computacionales con datos iniciales y recibir los resultados de los cálculos realizados.

Multiplicación de matrices

El problema de multiplicar una matriz por una matriz está determinado por las relaciones

.

(para simplificar la presentación, asumiremos que las matrices multiplicadas y son cuadradas y tienen orden).

El análisis de posibles formas de ejecución paralela de esta tarea se puede realizar por analogía con la consideración del problema de la multiplicación matriz-vector. Dejando un análisis similar para autoestudio, mostraremos, usando el ejemplo del problema de multiplicación de matrices, el uso de varios enfoques generales que hacen posible formar métodos paralelos para resolver problemas complejos.

Comparta con amigos o guárdelo usted mismo:

Cargando...