viernes, 16 de diciembre de 2022

Cálculo matricial con R. Un ejemplo sencillo

Un ejemplo sencillo:

Introduzcamos una matriz 3x2; por ejemplo,
> A <- matrix(c(1,2,3,4,5,6),nrow=3,ncol=2)
> A
     [,1] [,2]
[1,]    1    4
[2,]    2    5
[3,]    3    6

Sea (otra) matriz 2x3, que, por ejemplo, introducimos modificando A
sumando 1 a cada componente escalar de la matriz
> B=t(A+1)
> B
     [,1] [,2] [,3]
[1,]    2    3    4
[2,]    5    6    7

Calculamos el producto AB
> A%*%B
     [,1] [,2] [,3]
[1,]   22   27   32
[2,]   29   36   43
[3,]   36   45   54

-oOo-

Nota: No debe confundirse el producto de dos matrices $C$ por $D$, con $C$ de tamaño $m \times n$ y $D$ de tamaño $n\times p$, el cual da lugar a una matriz $CD$ de tamaño $m \times p$ —para realizar dicho producto en R se utiliza el operador C%*%D (tal como se ha hecho en el ejemplo anterior)—, con el producto componente a componente de sendas matrices (con el operador *), que da lugar a otra matriz del mismo tamaño/dimensión que éstas. Así, por ejemplo, con las siguientes matrices de la misma dimensión

> C <- matrix(c(1,2,3,4,5,6),nrow=2,ncol=3)
> D <- matrix(c(2,3,4,5,6,7),nrow=2,ncol=3)

> C
     [,1] [,2] [,3]
[1,]    1    3    5
[2,]    2    4    6

> D
     [,1] [,2] [,3]
[1,]    2    4    6
[2,]    3    5    7

el producto componente a componente da lugar a otra matriz de las mismas 
dimensiones que C y D

> C*D
     [,1] [,2] [,3]
[1,]    2   12   30
[2,]    6   20   42

Démonos cuenta de que plantear el producto de matrices 
C%*%D no tiene sentido, pues $C$ es $2 \times 3$ (esto es, $m=2$ y $n=3), 
al igual que $D$, y por tanto, al no ser igual el número de columnas 
del primer factor (la matriz C tiene $3$ columnas) al número de filas 
del segundo factor (la matriz D tiene $2$ columnas), 
no está definido dicho producto matricial, por lo que el resultado
de aplicar dicho comando daría lugar a un error del programa.

En efecto,
> C%*%D
Error in C %*% D : argumentos no compatibles

-oOo-

Referencias

[1] The UIB-AprendeR team: https://aprender-uib.github.io/AprendeR1/
[2] The UIB-AprendeR team: https://aprender-uib.github.io/AprendeR2/
[3] The R Development Core Team: https://cran.r-project.org/manuals.html

$\diamond$

No hay comentarios:

Publicar un comentario