hllinas2023

1 Paquetes

library(matlib) # Dibujar un vector en 2D
library(rgl)    # Dibujar un vector en 3D

2 Vectores y Matrices

2.0.1 Definición de vector

Un vector es un conjunto ordenado de números. Ejemplos:

\[\mathbf{u} \; = \; \begin{bmatrix} 4 \\ 2 \end{bmatrix}, \qquad\mathbf{v} \; = \; \begin{bmatrix} 1 \\ 3 \end{bmatrix}, \qquad \mathbf{v}_1 \; = \; \begin{bmatrix} 1 \\ 2 \\ 3 \end{bmatrix}\]

Ejemplo para generar un vector en R.

Primera forma: con la función c de concatenación.

# Vector en R
u <- c(4, 2)
v <- c(1, 3)

Segunda forma: con la función matrix.

v1 <- matrix(c(1, 2, 3), nrow = 3); v1
##      [,1]
## [1,]    1
## [2,]    2
## [3,]    3

2.0.2 Definición de matriz

Una matriz es una tabla de números organizados en filas y columnas. Ejemplos:

\[M_1 \; = \; \begin{bmatrix} 1 & 3 &5\\ 2 & 4 & 6\end{bmatrix}, \qquad M_2 \; = \; \begin{bmatrix} 1 & 4 \\ 2 & 5\\ 3& 6 \end{bmatrix}, \qquad A \; = \; \begin{bmatrix} 1 & 3 \\ 2 & 4 \end{bmatrix}, \qquad B \; = \; \begin{bmatrix} 5 & 7 \\-6 & 1 \end{bmatrix}, \qquad C \; = \; \begin{bmatrix} -1 & 3 \\2 & 4 \end{bmatrix}\]

Ejemplo para generar las matrices anteriores en R:

M1 <- matrix(c(1, 2, 3, 4, 5, 6), nrow = 2); M1
##      [,1] [,2] [,3]
## [1,]    1    3    5
## [2,]    2    4    6
M2 <- matrix(c(1, 2, 3, 4, 5, 6), ncol = 2); M2
##      [,1] [,2]
## [1,]    1    4
## [2,]    2    5
## [3,]    3    6
A <- matrix(c(1, 2, 3, 4), ncol = 2); A
##      [,1] [,2]
## [1,]    1    3
## [2,]    2    4
B <- matrix(c(5, -6, 7, 1), ncol = 2); B
##      [,1] [,2]
## [1,]    5    7
## [2,]   -6    1
C <- matrix(c(-1, 2, 3, 4), ncol = 2); C
##      [,1] [,2]
## [1,]   -1    3
## [2,]    2    4

2.0.3 Transpuesta

De una matriz.

La transpuesta de una matriz es una operación que involucra cambiar las filas por columnas y las columnas por filas. La matriz transpuesta \(A^T\) de \(A\) es: \[A^T \; = \; \begin{bmatrix} 1 & 3 \\ 2 & 4 \end{bmatrix}^T \; = \; \begin{bmatrix} 1 & 2 \\ 3 & 4 \end{bmatrix}\]

En R, la transpuesta de \(A\) se genera así:

##      [,1] [,2]
## [1,]    1    2
## [2,]    3    4

De un vector.

Se define de manera análoga.

\[u^T \; = \; \begin{bmatrix} 4 \\ 2 \end{bmatrix}^T \; = \; \begin{bmatrix} 4 & 2 \end{bmatrix}, \qquad v_1^T \; = \; \begin{bmatrix} 1 \\ 2 \\ 3 \end{bmatrix}^T \; = \; \begin{bmatrix} 1 & 2 &3\end{bmatrix}\]

En R, por ejemplo, la transpuesta de \(v\) se genera así:

##      [,1] [,2] [,3]
## [1,]    1    2    3

2.0.4 Vectores con R (general)

Gráficamente, dos vectores \(u\) y \(v\) (y su suma) se pueden visualizar en el plano como se muestra en la figura de abajo.

library(matlib)
# Configurando el gráfico
 
xlim <- c(0,6)
ylim <- c(0,6)
par(mar=c(3,3,1,1)+.1)
plot(xlim, ylim, type="n", xlab="X", ylab="Y", asp=1)
grid()

# Definiendo algunos vectores
 
u=c(4,2)
v=c(1,3)

# Graficando los vectores

vectors(v, labels="v", pos.lab=4, frac.lab=.5, col="darkgreen")
vectors(u, labels="u", pos.lab=4, frac.lab=.5, col="darkblue")

# vector u+v se obtiene comenzando desde u hasta v

vectors(u+v, labels="u+v", pos.lab=4, frac.lab=.5, col="red")

# vector v comenzando desde u hasta u+v

vectors(u+v, labels="v", pos.lab=4, frac.lab=.5, origin=u, col="lightgreen")

# vector u comenzando desde v hasta u+v

vectors(u+v, labels="u", pos.lab=4, frac.lab=.5, origin=v, col="lightblue")

2.0.5 Vectores con R (en el plano)

Consideremos los vectores vector \(u\) y \(v\), definidos anteriormente. A continuación, se graficarán en el plano.

Sus gráficas: primera forma

plot(c(0,4),c(0,2), xlim = c(0,5), ylim = c(0,4), type="n", xlab="X", ylab="Y", asp=1)

arrows(0,0,4,2)
arrows(0,0,1,3)

Sus gráficas: segunda forma

library(matlib)

# Configurando el gráfico
 
xlim <- c(0,5)
ylim <- c(0,4)

par(mar=c(3,3,1,1)+.1)

plot(xlim, ylim, type="n", xlab="X", ylab="Y", asp=1)
grid()

# Definiendo algunos vectores
 
u=c(4,2)
v=c(1,3)

# Graficando los vectores

vectors(v, labels="v", pos.lab=4, frac.lab=.5, col="darkgreen")
vectors(u, labels="u", pos.lab=4, frac.lab=.5, col="darkblue")

2.0.6 Vectores con R (en el espacio)

Consideremos los siguientes vectores y la matriz formada por ellos:

\[ \mathbf{{\color{Pink}X}} \; = \; \begin{bmatrix} 1 \\ 0 \\0\end{bmatrix}, \qquad\mathbf{{\color{Green}Y}} \; = \; \begin{bmatrix} 0 \\ 1 \\ 0\end{bmatrix}, \qquad \mathbf{{\color{Blue}Z}} \; = \; \begin{bmatrix} 0 \\ 0 \\ 1 \end{bmatrix}, \qquad\mathbf{{\color{Orange}W}} \; = \; \begin{bmatrix} 1 \\ 1 \\ 1\end{bmatrix}, \]

\[M \; = \; \begin{bmatrix} \mathbf{{\color{Pink}X}} & \mathbf{{\color{Green}Y}} & \mathbf{{\color{Blue}Z}} & \mathbf{{\color{Orange}W}} \end{bmatrix} \; = \;\begin{bmatrix} {\color{Pink}1} & {\color{Green}0} &{\color{Blue}0} & {\color{Orange}1}\\ {\color{Pink}0} & {\color{Green}1} & {\color{Blue}0} & {\color{Orange}1}\\ {\color{Pink}0} & {\color{Green}0} &{\color{Blue}1} & {\color{Orange}1}\end{bmatrix}\]

En el código de abajo, el objeto veces la matriz \(M^T\), donde cada fila representa un vector en 3D.

vec <- rbind(diag(3), c(1,1,1))
rownames(vec) <- c("X", "Y", "Z", "W")
vec
##   [,1] [,2] [,3]
## X    1    0    0
## Y    0    1    0
## Z    0    0    1
## W    1    1    1

Se utilizará la librería rgl para generar vectores 3D en R. En la función vectors3d que se muestra en el código de abajo, los primeros tres vectores son de color negro y el último vector es de color rojo. El parámetro lwd establece el grosor de la línea para todos los vectores.

Para abrir un gráfico 3D.

#library(rgl)

open3d()
## wgl 
##   1

Para trazar vectores tridimensionales en un espacio 3D.

rgl::plot3d(vec, type = "s", col=c(rep("black",3), "red"), lwd=2)

Para Dibujar el plano XZ (cuya ecuacion es Y=0).

planes3d(0, 0, 1, 0, col="gray", alpha=0.2)
plot3d(c(1,1,0), col="green", lwd=2)

Para mostrar proyecciones del vector unitario W.

segments3d(rbind(c(1,1,1), c(1, 1, 0)))
segments3d(rbind(c(0,0,0), c(1, 1, 0)))
segments3d(rbind(c(1,0,0), c(1, 1, 0)))
segments3d(rbind(c(0,1,0), c(1, 1, 0)))

Para dibujar el paralepípedo.

p1 <- c(0,0,0)
p2 <- c(1,1,0)
p3 <- c(1,1,1)
p4 <- c(1,0,0)

Se definen colores de las líneas que formarán la esquina y se dibujan éstas.

# Definir los colores 

color1 <- "red"
color <- "darkgreen"

# Dibujar las líneas que forman la esquina

lines3d(rbind(p1, p2), col = color)
lines3d(rbind(p1, p4), col = color)
lines3d(rbind(p1, p3), col = color1)
lines3d(rbind(p2, p3), col = color)
lines3d(rbind(p2, p4), col = color)
lines3d(rbind(p3, p4), col = color)

Si se tiene múltiples gráficos abiertos y se quiere asegurar de que el gráfico actual esté en la parte superior y sea visible, llamar a esta función

rgl.bringtotop()

Para salvar la gráfica como un archivo html.

htmlwidgets::saveWidget(rglwidget(), file = "3d_vector.html")

El gráfico se visualiza en el archivo html al escribir el siguiente código (fuera del chunk):

<iframe src="3d_vector.html" width="400" height="400"></iframe>

2.0.7 Matrices como regiones vectoriales

Consideremos la matriz: \[M \; = \; \begin{bmatrix} \mathbf{{\color{Blue}u}} & \mathbf{{\color{Green}v}} \end{bmatrix} \; = \;\begin{bmatrix} {\color{Blue}4} & {\color{Green}1} \\ {\color{Blue}2} & {\color{Green}3}\end{bmatrix}\]

Geométricamente, la matriz \(M\) se puede representar como una región comprendidad entre los vectores \(u\) y \(V\) (como se muetra en la figura de abajo).

library(matlib)

# Configurando el gráfico
xlim <- c(0,5)
ylim <- c(0,4)

par(mar=c(3,3,1,1)+.1)
plot(xlim, ylim, type="n", xlab="X", ylab="Y", asp=1)
grid()

# Definiendo algunos vectores
u <- c(4,2)
v <- c(1,3)

# Graficando los vectores
#vectors(v, labels="v", pos.lab=4, frac.lab=.5, col="darkgreen")
#vectors(u, labels="u", pos.lab=4, frac.lab=.5, col="darkblue")

vectors(v, labels = "", pos.lab = 4, frac.lab = 0.5, col = "darkgreen")
vectors(u, labels = "", pos.lab = 4, frac.lab = 0.5, col = "darkblue")

# Coordenadas de los vértices del triángulo
triangle_vertices <- rbind(c(0.02, 0.01), v+c(0.06,0.05), u+c(0.04,0.06), c(0, 0.02))

# Dibujar el triángulo
polygon(triangle_vertices, col = "pink", border = NA)

# Agregar etiqueta a los vectores
text(v[1] - 0.6, v[2] -1.2, "v", col = "darkgreen", cex = 1.8) # v
text(u[1] - 1.7, u[2] -1, "u", col = "darkblue", cex = 1.8)   # u


# Agregar etiqueta a la matriz M
text(1.5, 1.5, "M", col = "red", cex = 1.5)   # u

# Posición de la imagen fuera del área
#image_x <- mean(triangle_vertices[, 1]) + 0.5
#image_y <- mean(triangle_vertices[, 2]) + 0.5
image_x <- 2
image_y <- 3

# Cargar la imagen
img <- png::readPNG("MatrizM.png")

# Dibujar la imagen
rasterImage(img, image_x, image_y-0.2, image_x + 3.5, image_y + 0.7, interpolate = FALSE)

2.0.8 Suma

\[ D \; = \;C + B \; = \; \begin{bmatrix} -1 & 3 \\2 & 4 \end{bmatrix} \;+\; \begin{bmatrix} 5 & 7 \\-6 & 1 \end{bmatrix} \; = \; \begin{bmatrix} 4 & 10 \\ -4 & 5 \end{bmatrix}\]

# Suma de matrices en R
C + B
##      [,1] [,2]
## [1,]    4   10
## [2,]   -4    5

Graficamente:

library(matlib)

# Configurando el gráfico
 
xlim <- c(-1,12)
ylim <- c(-8,7)

par(mar=c(3,3,1,1)+.1)

plot(xlim, ylim, type="n", xlab="X", ylab="Y", asp=1)
grid()

# Definiendo algunos vectores
 
c1=c(-1,2)
c2=c(3,4)
b1=c(5,-6)
b2=c(7,1)
d1=c1+b1
d2=c2+b2

# Graficando los vectores

vectors(c1, labels="c1", pos.lab=4, frac.lab=.5, col="darkgreen")
vectors(c2, labels="c2", pos.lab=4, frac.lab=.5, col="darkblue")
vectors(b1, labels="b1", pos.lab=4, frac.lab=.5, col="darkgreen")
vectors(b2, labels="b2", pos.lab=4, frac.lab=.5, col="darkblue")
vectors(d1, labels="d1", pos.lab=4, frac.lab=.5, col="lightgreen")
vectors(d2, labels="d2", pos.lab=4, frac.lab=.5, col="lightblue")

Compare el resultado obtenido en el código de abajo con el de \(C+B\).

cbind(d1,d2)
##      d1 d2
## [1,]  4 10
## [2,] -4  5

2.0.9 Resta

\[ D \; = \;C - B \; = \; \begin{bmatrix} -1 & 3 \\2 & 4 \end{bmatrix} \;-\; \begin{bmatrix} 5 & 7 \\-6 & 1 \end{bmatrix} \; = \; \begin{bmatrix} -6 & -4 \\ 8 & 3 \end{bmatrix}\]

# Diferencia de matrices en R
C - B
##      [,1] [,2]
## [1,]   -6   -4
## [2,]    8    3

2.0.10 Multiplicación por Escalar

Con un vector.

\[ w \; = \; -2u \; = \; -2 \begin{bmatrix} 4 \\ 2 \end{bmatrix} \; = \; \begin{bmatrix} -8 \\ -4 \end{bmatrix}\] En R:

# Multiplicación por escalar en R
w = -2 * u; w
## [1] -8 -4

Graficamente:

library(matlib)

# Configurando el gráfico
 
xlim <- c(-9,5)
ylim <- c(-5,3)

par(mar=c(3,3,1,1)+.1)

plot(xlim, ylim, type="n", xlab="X", ylab="Y", asp=1)
grid()

# Definiendo algunos vectores
 
u=c(4,2)
w = -2*u
# Graficando los vectores

vectors(u, labels="u", pos.lab=4, frac.lab=.5, col="darkgreen")
vectors(w, labels="w", pos.lab=4, frac.lab=.5, col="darkblue")

Con una matriz.

\[2 A \; = \; 2 \begin{bmatrix} 1 & 3 \\ 2 & 4 \end{bmatrix} \; = \; \begin{bmatrix} 2 & 6 \\ 4 & 8 \end{bmatrix}\]

# Multiplicación por escalar en R
2 * A
##      [,1] [,2]
## [1,]    2    6
## [2,]    4    8

2.0.11 Producto de Matrices

Para que el producto \(AB\) esté definido, el número de columnas de \(A\) debe ser igual al número de filas de \(B\).

\[AB \; = \; \begin{bmatrix} 1 & 3 \\ 2 & 4 \end{bmatrix} \begin{bmatrix} 5 & 7 \\-6 & 1 \end{bmatrix} \; = \; \begin{bmatrix} -13 & 10 \\-14 & 18 \end{bmatrix}\]

# Producto de matrices en R
prod <- A %*% B

# Imprimir el producto
cat("Producto de A y B:\n")
print(prod)
## Producto de A y B:
##      [,1] [,2]
## [1,]  -13   10
## [2,]  -14   18

2.0.12 Determinante

El determinante de una matriz cuadrada \(A\) se denota como |\(A\)| o det(\(A\)). \[|A| \; = \; \begin{vmatrix} 1 & 3 \\ 2 & 4 \end{vmatrix} \; = \; -2\]

# Calcular el determinante
det_A <- det(A)

# Imprimir el resultado
cat("Determinante de A:", det_A, "\n")
## Determinante de A: -2

2.0.13 Inversa de una Matriz

Una matriz cuadrada \(A\) tiene inversa si \[A A^{-1} \; = \; A^{-1} A \; = \; I\] donde \(I\) es la matriz identidad.

\[A^{-1} \; = \; \begin{bmatrix} 1 & 2 \\ 3 & 4 \end{bmatrix}^{-1} \; = \; \begin{bmatrix} -2 & 1.5 \\ 1 & -0.5 \end{bmatrix}\]

# Calcular la inversa
A_inv <- solve(A)

# Imprimir la matriz inversa
cat("Inversa de A:\n")
print(A_inv)
## Inversa de A:
##      [,1] [,2]
## [1,]   -2  1.5
## [2,]    1 -0.5

Hay que tener cuenta que la inversa de una matriz no siempre existe. Esto sucede cuando el determinante de la matriz es cero. Por esta razón, en algunos casos, puede haber problemas numéricos al intentar calcularla.

# Calcular el determinante
H <- matrix(c(5, 6, 10, 12), nrow = 2)
det(H)
## [1] 0
# Calcular la matriz inversa
H_inv <- solve(H)
cat("Inversa de H:\n")
print(H_inv)

Sale el error que se muestra en la Figura 2.1.

**Error al invertir una matriz con determinante cero.**

Figure 2.1: Error al invertir una matriz con determinante cero.

2.0.14 Traza de una matriz

La traza de una matriz es la suma de los elementos en su diagonal principal. Para una matriz cuadrada \(A\) de orden \(n\), la traza se denota como \(tr(A)\). Por ejemplo, sea

\[A = \begin{bmatrix} {\color{red}4} & -2 \\ 1 & {\color{red}1} \end{bmatrix}\]

Su traza es 5: \[\text{tr}(A) \;= \; {\color{red}4} + \color{red}1 \; = \; 5\]

# Matriz A
A <- matrix(c(4, -2, 1, 1), nrow = 2, byrow = TRUE)

# Calcular la traza
trace_A <- sum(diag(A))
print(trace_A)
## [1] 5

2.0.15 Norma de un vector

Para cualquier vector \(u\), su norma es la longitud que tiene y se define como

\[\parallel u \parallel \; = \; \sqrt{u^T \cdot u}\]

Gráficamente (véase la Figura 2.2):

**Representación de un vector propio.**

Figure 2.2: Representación de un vector propio.

2.0.16 Norma: Ejemplo 1

Si

\[\mathbf{u} \; = \; \begin{bmatrix} 4 \\ 2 \end{bmatrix}, \] entonces

\[\parallel u \parallel \; = \;\sqrt{u^T \cdot u} \; = \; \sqrt{\begin{bmatrix} 4 & 2 \end{bmatrix} \begin{bmatrix} 4 \\ 2 \end{bmatrix}} \; = \; \sqrt{(16 +4)} \;=\; \sqrt{20}\;\approx 4.47\;\]

2.0.17 Norma: Ejemplo 2 (en R)

# Norma de un vector
u <- matrix(c(4, 2), nrow = 2)

as.numeric(sqrt(t(u)%*% u))
## [1] 4.472136
library(matlib)

# Configurando el gráfico
xlim <- c(0,4.4)
ylim <- c(0,2.2)

par(mar=c(3,3,1,1)+.1)
plot(xlim, ylim, type="n", xlab="X", ylab="Y", asp=1)
grid()

# Definiendo algunos vectores (los de la matriz A)
u <- c(4,2)

vectors(u, labels = "", pos.lab = 4, frac.lab = 0.5, col = "red") #A

# Agregar etiqueta a los vectores
text(4.1,2.1, "u", col = "darkblue", cex = 1.5) # a

# Agregar etiqueta a la matriz A
text(2.7, 1, "||u||= 4.47", col = "darkblue", cex = 1.5)   # u

2.0.18 Vector unitario o normalizado

Un vector \(\tilde{u}\) está normalizado si su norma es 1. En general, se obtiene de un vector \(u\) así: \[\tilde{u} \;=\; \frac{u}{\parallel u \parallel}\]

2.0.19 Vector unitario: Ejemplo 1

Sea \(u\) como en el ejemplo anterior. Entonces

\[\tilde{u} \;=\; \frac{u}{\parallel u \parallel} \; =\; \begin{bmatrix} 4/\sqrt{20} \\ 2/\sqrt{20} \end{bmatrix}\; =\; \begin{bmatrix} 0.8944272 \\ 0.4472136 \end{bmatrix}, \qquad \parallel \tilde{u} \parallel \; =\; 1\]

2.0.20 Vector unitario: En R

# vector normalizado y su norma
u <- matrix(c(4, 2), nrow = 2)
n <- as.numeric(sqrt(t(u)%*% u))
# vector normalizado
u_tilde <- (1/n)*u
u_tilde
##           [,1]
## [1,] 0.8944272
## [2,] 0.4472136
# Su norma
sqrt(t(u_tilde)%*% u_tilde)
##      [,1]
## [1,]    1

Gráficamente:

library(matlib)

# Configurando el gráfico
xlim <- c(0,1.4)
ylim <- c(0,0.5)

par(mar=c(3,3,1,1)+.1)
plot(xlim, ylim, type="n", xlab="X", ylab="Y", asp=1)
grid()

# Definiendo  vector normalizado w
w <- c(u_tilde[1], u_tilde[2])

vectors(w, labels = "", pos.lab = 4, frac.lab = 0.5, col = "red") 

# Agregar etiqueta a vector normalizado
text(0.9,0.5, "w= vector normalizado", col = "darkblue", cex = 1.2) 

# Agregar etiqueta a w
text(0.6, 0.2, "||w||= 1", col = "darkblue", cex = 1.2)   

3 Valores y vectores propios

3.0.1 Definición

Los valores propios (también llamados autovalores o eigenvalores) y los vectores propios (también conocidos como autovectores o eigenvectores) son conceptos fundamentales en álgebra lineal. Sea \(A\) una matriz cuadrada de tamaño \(n\). Un escalar \(\lambda\) es llamado un valor propio (autovalor o eigenvalor) de \(A\) si existe un vector \(v\) distinto de cero tal que \[A v\;=\; \lambda v\] Un vector \(v\) de esta naturaleza se conoce como vector propio de \(A\) correspondiente al valor propio \(\lambda\). A la matriz \(A\) se le llama una matriz de transformación (o una transformación lineal).

En otras palabras, existen ciertos vectores \(v\) para los cuales \(Av\) sólo modifica su norma, como se muestra en la Figura 3.1.

**Representación de un vector propio.**

Figure 3.1: Representación de un vector propio.

3.0.2 Cómo se calculan

Para encontrarlos, consideramos una matriz cuadrada \(A\) y resolvemos la ecuación característica: \[\text{det}\left(A - \lambda I\right) \; = \; 0\] donde \(\lambda\) es el valor propio e \(I\) es la matriz identidad. Después, los vectores propios se encuentran resolviendo el sistema de ecuaciones homogéneas asociado:

\[(A−\lambda I)v \; = \; 0\]

donde \(v\) es el vector propio correspondiente.

3.0.3 Ejemplo 1 (pan)

Considere el problema de esparcir queso en crema sobre una tajada de pan. La pregunta es cómo sería la forma más eficiente de hacerlo teniendo en cuenta la matriz \(A\) mostrada en la Figura 3.2.

**Problema del pan y la mantequilla.**

Figure 3.2: Problema del pan y la mantequilla.

Sea dada la matriz \(A\): \[A \; = \; \begin{bmatrix} 3 & 0 \\ 0 & 1 \end{bmatrix}\]

Encontrar Valores Propios: \[\text{det}\left(A - \lambda I\right) \; = \; \begin{vmatrix} 3 - \lambda& 0 \\ 0 & 1 -\lambda \end{vmatrix} \; = \; (3-\lambda)(1-\lambda) \; = \; 0\] Esto nos dará los valores propios \(\lambda =(1,3)^T\).

Encontrar Vectores Propios:

Sea \(\mathbf{v} = (v_1, v_2)^T\) un vector diferente de cero. Entonces, al resolver el sistema siguiente, encontramos a \(\mathbf{v}\).

\[(A - \lambda I) \mathbf{v}\; = \;\begin{bmatrix} 3 - \lambda& 0 \\ 0 & 1 -\lambda \end{bmatrix} \begin{bmatrix} v_1 \\ v_2 \end{bmatrix} \; = \; \mathbf{0}\]

Si \(\lambda=3\), entonces,

\[\mathbf{v} \; = \; \begin{bmatrix} 1 \\ 0 \end{bmatrix}v_1 \qquad (\mbox{vector a lo largo del eje X})\] Si \(\lambda=1\), entonces,

\[\mathbf{v} \; = \; \begin{bmatrix} 0 \\ 1 \end{bmatrix}v_2 \qquad (\mbox{vector a lo largo del eje Y})\]

En este ejemplo, ¿qué indican los valores y los vectores propios?

  1. Que la transformación lineal produce un escalado de \(\lambda\) a lo largo del vector propio correspondiente a \(\lambda\):
  • \(\lambda=3\) a lo largo del eje \(X\) y \(\lambda=1\) a lo largo del eje \(Y\) (¡intuitivo!).
  1. Dicho de otro modo, el valor propio indica el porcentaje de transformación en una dirección determinada 75% a lo largo del eje \(X\) y 25% en el eje \(Y\).

  2. La situación se puede visualizar gráficamente en la Figura 3.3.

**Solución del problema del pan y la mantequilla.**

Figure 3.3: Solución del problema del pan y la mantequilla.

3.0.4 Ejemplo 2 (pan y R)

En R, se puede usar librerías como eigen para encontrar los valores y vectores propios. Aquí hay un ejemplo en donde encontraremos los valores y vectores propios de la matriz \(A\).

# Matriz A
A <- matrix(c(3, 0, 0, 1), nrow = 2, byrow = TRUE)
A
##      [,1] [,2]
## [1,]    3    0
## [2,]    0    1
# Aplicamos la función eigen() para hallar los valores y vectores propios
eig <- eigen(A)
eig
## eigen() decomposition
## $values
## [1] 3 1
## 
## $vectors
##      [,1] [,2]
## [1,]   -1    0
## [2,]    0   -1

Ahora calculamos los valores y vectores propios:

# Valores propios
lambda <- eig$values; lambda
## [1] 3 1
# Vectores propios
v <- eig$vectors; v
##      [,1] [,2]
## [1,]   -1    0
## [2,]    0   -1

Autovectores individuales:

v[,1] # Primer autovector
## [1] -1  0
v[,2] # Segundo autovector
## [1]  0 -1

Podemos mostrar que estos son los eigenvectores asociados:

round(A %*% v[,1], 5) == round(lambda[1] * v[,1], 5)
##      [,1]
## [1,] TRUE
## [2,] TRUE
round(A %*% v[,2], 5) == round(lambda[2] * v[,2], 5)
##      [,1]
## [1,] TRUE
## [2,] TRUE

3.0.5 Ejemplo 3

Sea dada la matriz \(A\): \[A \; = \; \begin{bmatrix} 4 & -2 \\ 1 & 1 \end{bmatrix}\]

Encontrar Valores Propios: \[\text{det}\left(A - \lambda I\right) \; = \; \begin{vmatrix} 4 - \lambda& -2 \\ 1 & 1 -\lambda \end{vmatrix} \; = \; (3-\lambda)(2-\lambda) \; = \; 0\] Esto nos dará los valores propios \(\lambda =(3,2)^T\).

Encontrar Vectores Propios:

Sea \(\mathbf{v} = (v_1, v_2)^T\) un vector diferente de cero. Entonces, al resolver el sistema siguiente, encontramos a \(\mathbf{v}\).

\[(A - \lambda I) \mathbf{v}\; = \;\begin{bmatrix} 4 - \lambda& -2 \\ 1 & 1 -\lambda \end{bmatrix} \begin{bmatrix} v_1 \\ v_2 \end{bmatrix} \; = \; \mathbf{0}\] Si \(\lambda=3\), entonces,

\[\mathbf{v} \; = \; \begin{bmatrix} 2 \\ 1 \end{bmatrix}v_2\]

Si \(\lambda=2\), entonces,

\[\mathbf{v} \; = \; \begin{bmatrix} 1 \\ 1 \end{bmatrix}v_2\]

3.0.6 Ejemplo 4 (ejemplo 3 con R)

En R, se puede usar librerías como eigen para encontrar los valores y vectores propios. Aquí hay un ejemplo en donde encontraremos los valores y vectores propios de la matriz \(A\).

# Matriz A
A <- matrix(c(4, -2, 1, 1), nrow = 2, byrow = TRUE)
A
##      [,1] [,2]
## [1,]    4   -2
## [2,]    1    1

Gráficamente:

library(matlib)

# Configurando el gráfico
xlim <- c(-2.5,4.4)
ylim <- c(0,1)

par(mar=c(3,3,1,1)+.1)
plot(xlim, ylim, type="n", xlab="X", ylab="Y", asp=1)
grid()

# Definiendo algunos vectores (los de la matriz A)
a <- c(4,1)
b <- c(-2,1)

# Coordenadas de los vértices del triángulo
triangle_vertices <- rbind(c(0.02, 0.01), b, a, c(0, 0.02))

# Dibujar el triángulo
polygon(triangle_vertices, col = "pink", border = NA)

# Graficando los vectores
#vectors(v, labels="v", pos.lab=4, frac.lab=.5, col="darkgreen")
#vectors(u, labels="u", pos.lab=4, frac.lab=.5, col="darkblue")

vectors(b, labels = "", pos.lab = 4, frac.lab = 0.5, col = "black")  #A
vectors(a, labels = "", pos.lab = 4, frac.lab = 0.5, col = "black")  #A

# Agregar etiqueta a los vectores
text(2.6,0.4, "a", col = "black", cex = 1.8)     # a
text(-1.4, 0.4, "b", col = "black", cex = 1.8)   # b

# Agregar etiqueta a la matriz A
text(0.3, 0.7, "A", col = "red", cex = 1.8)     # A

Aplicamos la función eigen para hallar los valores y vectores propios:

# Valores y vectores propios
eig <- eigen(A)
eig
## eigen() decomposition
## $values
## [1] 3 2
## 
## $vectors
##           [,1]      [,2]
## [1,] 0.8944272 0.7071068
## [2,] 0.4472136 0.7071068

Ahora calculamos los valores y vectores propios por separado:

# Valores propios
lambda <- eig$values; lambda
## [1] 3 2
# Vectores propios
v <- eig$vectors; v
##           [,1]      [,2]
## [1,] 0.8944272 0.7071068
## [2,] 0.4472136 0.7071068

Autovectores individuales:

v[,1] # Primer autovector
## [1] 0.8944272 0.4472136
v[,2] # Segundo autovector
## [1] 0.7071068 0.7071068

Podemos mostrar que estos son los eigenvectores asociados:

round(A %*% v[,1], 5) == round(lambda[1] * v[,1], 5)
##      [,1]
## [1,] TRUE
## [2,] TRUE
round(A %*% v[,2], 5) == round(lambda[2] * v[,2], 5)
##      [,1]
## [1,] TRUE
## [2,] TRUE

Los resultados encontrados se pueden visualizar en la figura de abajo:

library(matlib)

# Configurando el gráfico
xlim <- c(-3,6.5)
ylim <- c(0,3)

par(mar=c(3,3,1,1)+.1)
plot(xlim, ylim, type="n", xlab="X", ylab="Y", asp=1)
grid()

# Definiendo algunos vectores (los de la matriz A)
a <- c(4,1)
b <- c(-2,1)

# Vectores propios
v2 <- c(1,1)
v3 <- c(2,1)

# Vectores propios transformados por A
Av2 <- c(2,2)
Av3 <- c(6,3)

# Coordenadas de los vértices del triángulo
triangle_vertices <- rbind(c(0.02, 0.01), b, a, c(0, 0.02))

# Dibujar el triángulo
polygon(triangle_vertices, col = "pink", border = NA)

# Graficando los vectores
#vectors(v, labels="v", pos.lab=4, frac.lab=.5, col="darkgreen")
#vectors(u, labels="u", pos.lab=4, frac.lab=.5, col="darkblue")

vectors(b, labels = "", pos.lab = 4, frac.lab = 0.5, col = "black")   #A
vectors(a, labels = "", pos.lab = 4, frac.lab = 0.5, col = "black")   #A

vectors(Av2, labels = "", pos.lab = 4, frac.lab = 0.5, col = "lightgreen") #Av2
vectors(Av3, labels = "", pos.lab = 4, frac.lab = 0.5, col = "lightblue")  #Av3

vectors(v2, labels = "", pos.lab = 4, frac.lab = 0.5, col = "darkgreen") #V2
vectors(v3, labels = "", pos.lab = 4, frac.lab = 0.5, col = "darkblue")  #v3

# Agregar etiqueta a los vectores
text(2.6,0.4, "a", col = "black", cex = 1.2)        # a
text(-1.4, 0.4, "b", col = "black", cex = 1.2)      # b
text(2.1,2.3, "Av2", col = "lightgreen", cex = 1.8) # Av2
text(6, 3.3, "Av3", col = "lightblue", cex = 1.8)   # Av1
text(0.5,0.9, "v2", col = "darkgreen", cex = 1.2)   # v2
text(1.8, 0.7, "v3", col = "darkblue", cex = 1.2)   # v3

# Agregar etiqueta a la matriz A
text(-1, 1.3, "A", col = "pink", cex = 1.5)   # u

4 Proyecciones

4.0.1 Proyección: definición

Dados dos vectores \(\mathbf{u}\) y \(\mathbf{v}\), la proyección de \(\mathbf{u}\) sobre \(\mathbf{v}\) se denota como \(\text{proj}_{\mathbf{v}}(\mathbf{u})\) y se calcula mediante la fórmula:

\[\text{proj}_{\mathbf{v}}(\mathbf{u}) \; = \; \frac{\mathbf{u} \cdot \mathbf{v}}{\|\mathbf{v}\|^2} \cdot \mathbf{v}\]

donde representa el producto punto entre estos dos vectores y \(\|\mathbf{v}\|\) es la norma (longitud) de \(\mathbf{v}\).

4.0.2 Proyección: gráfica

Gráficamente, la proyección se puede visualizar como se muestra en la Figura 4.1.

**Proyección de $u$ sobre $v$.**

Figure 4.1: Proyección de \(u\) sobre \(v\).

4.0.3 Proyección: ejemplo

Dado los vectores: \[ \mathbf{u} \; = \; \begin{bmatrix} 1 \\ 2 \end{bmatrix}, \qquad \mathbf{v} \; = \; \begin{bmatrix} 3 \\ 1 \end{bmatrix}\]

Proyección de \(\mathbf{u}\) sobre \(\mathbf{v}\): \[\text{proj}_{\mathbf{v}}(\mathbf{u}) \; = \; \frac{\mathbf{u} \cdot \mathbf{v}}{\|\mathbf{v}\|^2} \cdot \mathbf{v} \; = \; \frac{5}{10} \cdot \begin{bmatrix} 3 \\ 1 \end{bmatrix} \; = \; \begin{bmatrix} 1.5 \\ 0.5 \end{bmatrix}\]

u <- c(1,2)
v <- c(3,1)

# Proyección de u sobre v
projection <- as.vector((u %*% v) / v %*% v) *  v

print(projection)
## [1] 1.5 0.5

4.0.4 Proyección: ejemplo gráfico

Gráficamente, estos resultados se pueden visualizar como se muestra en la Figura 4.2.

**Proyección de $u$ sobre $v$.**

Figure 4.2: Proyección de \(u\) sobre \(v\).

5 Rango de una matriz

5.0.1 Rango: definición

El rango de una matriz es el máximo número de columnas linealmente independientes en la matriz. Puedes encontrar el rango de una matriz utilizando operaciones de eliminación gaussiana para llevar la matriz a su forma escalonada reducida.

5.0.2 Rango: ejemplo 1 (sin R)

Hallar el rango de \(B\):

\[B = \begin{bmatrix} 1 & 2 & 3 \\ 4 & 5 & 6 \\ 7 & 8 & 9 \end{bmatrix}\]

# Matriz B
B <- matrix(c(1, 2, 3, 4, 5, 6, 7, 8, 9), nrow = 3, byrow = TRUE)
B
##      [,1] [,2] [,3]
## [1,]    1    2    3
## [2,]    4    5    6
## [3,]    7    8    9

Operaciones de Eliminación Gaussiana:

Encontramos la matriz inversa usando las operaciones elementales. Para ello se aumenta la matriz dada con una matriz identidad (véase la Figura 5.1):

**Método de eliminación de Gauss-Jordan**

Figure 5.1: Método de eliminación de Gauss-Jordan

Un poco más resumido, el proceso fue:

\[ \begin{bmatrix} 1 & 2 & 3 \\ 4 & 5 & 6 \\ 7 & 8 & 9 \end{bmatrix} \qquad \Rightarrow\qquad \begin{bmatrix} 1 & 2 & 3 \\ 0 & -3 & -6 \\ 0 & -6 & -12 \end{bmatrix} \qquad \Rightarrow\qquad \begin{bmatrix} 1 & 2 & 3 \\ 0 & -3 & -6 \\ {\color{Green}0} & {\color{Green}0} & {\color{Green}0} \end{bmatrix} \]

Contar filas (o columnas) no nulas:

Como las dos primeras filas de \(A\) son no nulas, entonces, el rango es 2.

5.0.3 Rango: ejemplo 2 (en R)

En R, una forma de obtener el rango es por medio de la función qr que hace una descomposición QR de la matriz. Otra forma para obtener el rango de la matriz es por medio de la función rankMatrix del paquete Matrix.

# Calcular el rango
qr(B)$rank
## [1] 2
library(Matrix)
rankMatrix(B)[1]
## [1] 2

6 Ortogonalidad y ortonormalidad

6.0.1 Matrices ortogonales

Las matrices ortogonales son matrices cuadradas \(Q\) cuya transpuesta es igual a su inversa. Es decir,

\[Q^T \cdot Q = I\]

Esto implica que los vectores columna (y, por lo tanto, también los vectores fila) forman un conjunto ortonormal, es decir, son ortogonales entre sí y tienen una longitud unitaria.

6.0.2 Ejemplo 1

\[Q = \begin{bmatrix} \frac{1}{\sqrt{2}} & -\frac{1}{\sqrt{2}} \\ \frac{1}{\sqrt{2}} & \frac{1}{\sqrt{2}} \end{bmatrix}\]

Se cumple que \[Q^T \cdot Q = I\] Por lo tanto, \(Q\) es ortogonal.

# Matriz Q
Q <- matrix(c(1/sqrt(2), -1/sqrt(2), 1/sqrt(2), 1/sqrt(2)), nrow = 2, byrow = TRUE)

# Verificar ortogonalidad
is.orthogonal <- all(round(t(Q) %*% Q) == diag(2))

print(is.orthogonal)
## [1] TRUE

6.0.3 Vectores ortogonales

Dos vectores ortogonales en el plano son dos vectores que forman un ángulo de 90 grados y su producto escalar es cero. En otras palabras, dos vectores son ortogonales si forman un ángulo recto y, por tanto, su producto escalar es cero.

Justificación

Supongamos que tenemos dos vectores \(u\) y \(v\). Si ambos están separados por un ángulo \(\theta\), podemos determinar el valor de éste último mediante la fórmula:

\[\cos(\theta) \; = \; \frac{u\cdot v}{\parallel u\parallel \; \parallel v\parallel}\]

Si los vectores son perpendiculares entre sí, es decir,\(\theta=90\) grados, entonces, \(\cos(90) =0\). Por lo tanto, \[u\cdot v \; =\; 0\] En consecuencia dos vectores son perpendiculares u ortogonales si forman un ángulo recto y por ende, su producto escalar es cero.

6.0.4 Vectores ortonormales

Los vectores ortonormales son casos especiales de vectores ortogonales. Además de ser perpendiculares, cada uno de ellos debe tener magnitud 1.

6.0.5 Representación gráfica

Gráficamente, los vectores ortogonales y ortonormales se pueden visualizar como se muestra en la Figura 6.1:

**Método de eliminación de Gauss-Jordan**

Figure 6.1: Método de eliminación de Gauss-Jordan

7 Espacios vectoriales

Conjunto de puntos que pueden ser obtenidos por combinaciones lineales de algún conjunto de vectores “bases” (véase la Figura 7.1.

**Espacios vectoriales**

Figure 7.1: Espacios vectoriales

8 Bases de un vector

Es un conjunto de vectores que pueden “generar” (mediante una combinación lineal) todos los puntos en un espacio vectorial (véase la Figura 8.1:

**Bases vectoriales**

Figure 8.1: Bases vectoriales

9 Ejercicios

Resuelva los siguientes ejercicios a mano y con el software R (cuando sea posible). Haga dibujos en los ejercicios donde sea posible.

  1. Dados dos vectores \(\vec{v} = \begin{bmatrix} 2 \\ -3 \\ 1 \end{bmatrix}\) y \(\vec{w} = \begin{bmatrix} 4 \\ 1 \\ -2 \end{bmatrix}\), encuentra: (a) \(\vec{v} + \vec{w}\); (b) \(3\vec{v}\); (c) Las proyecciones correspondientes de \(u\) sobre \(v\) y de \(v\) sobre \(u\).

  2. Encuentra la norma del vector \(\vec{v} = \begin{bmatrix} 3 \\ -4 \\ 5 \end{bmatrix}\) y su transpuesta.

  1. Dadas las matrices \(A = \begin{bmatrix} 1 & 2 \\ 3 & 4 \end{bmatrix}\) y \(B = \begin{bmatrix} -1 & 0 \\ 2 & -3 \end{bmatrix}\), calcula \(A + B\), \(AB\) y \(3B\).

  2. Calcula el determinante de la matriz \(C = \begin{bmatrix} 2 & 1 \\ -3 & 4 \end{bmatrix}\) y su inversa (si exsite).

  1. Encuentra los valores propios y vectores propios de las matrices: \(D = \begin{bmatrix} 3 & 0 \\ 0 & 2 \end{bmatrix}\), \(E = \begin{bmatrix} 3 & 1 \\ 1 & 2 \end{bmatrix}\) y \(F = \begin{bmatrix} 3 & 1 \\ -1 & 2 \end{bmatrix}\).

  2. Encuentra los valores propios y vectores propios de la matriz \(E = \begin{bmatrix} 3 & 0 & 0\\ 0 & 2 &0 \\ 0 & 0& 5 \end{bmatrix}\) y su inversa.

  1. Calcula el rango de la matriz \(F = \begin{bmatrix} 1 & 0 & 2 \\ 0 & 1 & -3 \\ 2 & -3 & 5 \end{bmatrix}\).

  2. Encuentra una base para el espacio nulo de la matriz \(G = \begin{bmatrix} 1 & 2 & 3 \\ 4 & 5 & 6 \end{bmatrix}\).

  1. Verifica si los vectores \(\vec{v} = \begin{bmatrix} 1 \\ 0 \\ -1 \end{bmatrix}\) y \(\vec{w} = \begin{bmatrix} 2 \\ 1 \\ 2 \end{bmatrix}\) son: (a) Ortogonales; (b) Ortonormales.

  2. Encuentra una base ortonormal para el subespacio generado por los vectores \(\vec{v} = \begin{bmatrix} 1 \\ -1 \\ 0 \end{bmatrix}\) y \(\vec{w} = \begin{bmatrix} 1 \\ 1 \\ 2 \end{bmatrix}\).

  1. Verifica si el conjunto de vectores \({ \begin{bmatrix} 1 \\ 0 \\ 0 \end{bmatrix}, \begin{bmatrix} 0 \\ 1 \\ 0 \end{bmatrix}, \begin{bmatrix} 0 \\ 0 \\ 1 \end{bmatrix} }\) forma una base para \(\mathbb{R}^3\).

  2. Encuentra una base para el espacio generado por las columnas de la matriz \(H = \begin{bmatrix} 1 & 2 & 1 \\ 0 & 1 & 1 \\ 2 & 3 & 2 \end{bmatrix}\).

Bibliografía

Consultar el documento RPubs :: Análisis multivariado (bibliografía).

 

 
If you found any ERRORS or have SUGGESTIONS, please report them to my email. Thanks.