You are on page 1of 11

Taller 1 : Preliminares

*
Daniel Fernando Dı́az Pita
May 9, 2020

Ejercicios 1.8
1. Realice a mano y verifique con R los ejercicios 1, 2, 4, 5, 6, 7, 12 y 13, del capı́tulo 2 de Morrison (1990).

1.) Sean:
     
1 2 −1 3 2 −1 2 0
A = −1 3 −1 B= 2 3 1 C = −1 1
2 2 4 −1 1 3 3 2
Realiza las operaciones matriciales que son definidas:
> A=matrix(c(1,-1,2,2,3,2,-1,-1,4),ncol=3,nrow=3)
> B=matrix(c(3,2,-1,2,3,1,-1,1,3),ncol=3,nrow=3)
> c=matrix(c(2,-1,3,0,1,2),ncol=3,nrow=2)
i. A + B
> A+B
[,1] [,2] [,3]
[1,] 4 4 -2
[2,] 1 6 0
[3,] 1 3 7
ii. A − 2B
> A-2*B
[,1] [,2] [,3]
[1,] -5 -2 1
[2,] -5 -3 -3
[3,] 4 0 -2
t
iii. A + B
> t(A)+B
[,1] [,2] [,3]
[1,] 4 1 1
[2,] 4 6 3
[3,] -2 0 7
iv. A + C Como A ∈ M3×3 y C ∈ M3×2 la suma no esta definida.
v. (A + B)t
> t(A+B)
[,1] [,2] [,3]
[1,] 4 1 1
[2,] 4 6 3
[3,] -2 0 7
* dafdiazpi@unal.edu.co

1
vi. (3B t − 2B)t
> t(3*t(A)-(2*B))
[,1] [,2] [,3]
[1,] -3 2 -1
[2,] -7 3 -5
[3,] 8 4 6
2.) Si
 
    1 2
3 2 1 1 2 12 −5 2
P = 2 5 −1 Q = 1 1 1
4 R =  
3 −1
1 −1 3 1 2 12
−2 2
 
    −1
1 2 −2
x =  0  y = 3 z =  
−3
−1 2
−4
> P=matrix(c(3,2,1,2,5,-1,1,-1,3),3,3)
> Q=matrix(c(1,1,1,2,1,2,2,1,2,1,4,1),3,4)
> R=matrix(c(1,-5,3,-2,2,2,-1,2),4,2)
> x=c(1,0,-1)
> y=c(2,3,2)
> z=c(-1,-2,-3,-4)
Compute los productos que son definidos:
i. P Q
> P%*%Q
[,1] [,2] [,3] [,4]
[1,] 6 10 10 12
[2,] 6 7 7 21
[3,] 3 7 7 0

ii. P QR
> P%*%Q%*%R
[,1] [,2]
[1,] -38 46
[2,] -50 61
[3,] -11 13

iii. QRt
Producto no definido, Q ∈ M3×4 y Rt ∈ M2×4
iv. yxt
> y%*%t(x)
[,1] [,2] [,3]
[1,] 2 0 -2
[2,] 3 0 -3
[3,] 2 0 -2

v. xt y
> t(x)%*%y
[,1]
[1,] 0

2
vi. xt P x
> t(x)%*%P%*%x
[,1]
[1,] 4

vii. xt P y
> t(x)%*%P%*%y
[,1]
[1,] 9

viii. P (x + y)
> P%*%(x+y)
[,1]
[1,] 16
[2,] 20
[3,] 3
4.) Cual de la siguientes matrices son conmutativas bajo el producto de matrices.
       
3 1 0 1 1 1 3 0 0 2 1 0
A = 1 2 1 B = 1 1 1 C = 0 3 0D = 1 2 1
0 1 2 1 1 1 0 0 3 0 1 2
> A=matrix(c(3,1,0,1,2,1,0,1,2),3,3)
> B=matrix(c(1,1,1,1,1,1,1,1,1),3,3)
> C=matrix(c(3,0,0,0,3,0,0,0,3),3,3)
> D=matrix(c(2,1,0,1,2,1,0,1,2),3,3)

i. veamos el producto AB y BA 2
> A%*%B ;
[,1] [,2] [,3]
[1,] 4 4 4
[2,] 4 4 4
[3,] 3 3 3
> B%*%A
[,1] [,2] [,3]
[1,] 4 4 3
[2,] 4 4 3
[3,] 4 4 3
A y B no son conmutativas bajo el producto.

ii. veamos el producto AC y CA


2
> A%*%C ;
[,1] [,2] [,3]
[1,] 9 3 0
[2,] 3 6 3
[3,] 0 3 6
> C%*%A
[,1] [,2] [,3]
[1,] 9 3 0
[2,] 3 6 3
[3,] 0 3 6

3
A y C son matrices conmutativas bajo el producto

iii. veamos el producto AD y DA


2
> A%*%D ;
[,1] [,2] [,3]
[1,] 7 5 1
[2,] 4 6 4
[3,] 1 4 5
> D%*%A
[,1] [,2] [,3]
[1,] 7 4 1
[2,] 5 6 4
[3,] 1 4 5
A y D no son matrices conmutativas bajo el producto

iv. veamos el producto BC y CB


2
> B%*%C ;
[,1] [,2] [,3]
[1,] 3 3 3
[2,] 3 3 3
[3,] 3 3 3
> C%*%B
[,1] [,2] [,3]
[1,] 3 3 3
[2,] 3 3 3
[3,] 3 3 3
B y C on matrices conmutativas bajo el producto.

v. veamos el producto BD y DB
2
> B%*%D ;
[,1] [,2] [,3]
[1,] 3 4 3
[2,] 3 4 3
[3,] 3 4 3
> D%*%B
[,1] [,2] [,3]
[1,] 3 3 3
[2,] 4 4 4
[3,] 3 3 3
B y D no son matrices conmutativas bajo el producto.

vi. veamos el producto CD y DC


2
> C%*%D ;
[,1] [,2] [,3]
[1,] 6 3 0
[2,] 3 6 3
[3,] 0 3 6

4
> D%*%C
[,1] [,2] [,3]
[1,] 6 3 0
[2,] 3 6 3
[3,] 0 3 6
C y D son matrices conmutativas bajo el producto.
5.) Calcule el determinante de las matrices usando el método mas conveniente.
     
4 2 0 1 0.8 0.5 5 0 0
(a)5 3 0 (b)0.8 1 0.6 (c)0 3 0
6 9 2 0.5 0.6 1 0 0 1
 
  2 0 1 1 1
  2 0 4 0
1 4 −1 0 3 0 5
0 2 3 3 3
 
(d) 3 12 −3
  (e)
 
1 3 1 0 0
(f ) 
5 0 1 0
0 35 7 1 3 0 1 0
0 4 0 1
1 3 0 0 1

> a=matrix(c(4,5,6,2,3,9,0,0,2),3,3)
> b=matrix(c(1,0.8,0.5,0.8,1,0.6,0.5,0.6,1),3,3)
> c=matrix(c(5,0,0,0,3,0,0,0,1),3,3)
> d=matrix(c(1,3,0,4,12,35,-1,-3,7),3,3)
> e=matrix(c(2,0,5,0,0,3,0,4,4,0,1,0,0,5,0,1),4,4)
> f=matrix(c(2,0,1,1,1,0,2,3,3,3,1,3,1,0,0,1,3,0,1,0,1,3,0,0,1),5,5)
Calculemos su determinante:
2
> det(a);
[1] 4
> det(b);
[1] 0.23
> det(c);
[1] 15
> det(d);
[1] 0
> det(e);
[1] 306
> det(f)
[1] -56
6.) Calcule la inversa de estas matrices:
 
      4 3 2 1
5 1 −2 a b b 5 0 0 0 3 2 1
(a) 2 6 3  (b) b a b (c)0 8 6 (f )
0

0 2 1
−1 0 3 b b a 0 6 5
0 0 0 1

> a=matrix(c(5,2,-1,1,6,0,-2,3,3),3,3)
> b1=matrix(c(a,b,b,b,a,b,b,b,a),3,3)
> c=matrix(c(5,0,0,0,8,6,0,6,5),3,3)
> d=matrix(c(4,0,0,0,3,3,0,0,2,2,2,0,1,1,1,1),4,4)

5
i. La matriz inversa de (a) es:
> round(solve(a),2)
[,1] [,2] [,3]
[1,] 0.26 -0.04 0.22
[2,] -0.13 0.19 -0.28
[3,] 0.09 -0.01 0.41

ii. La matriz inversa de (c) es:


> round(solve(c),2)
[,1] [,2] [,3]
[1,] 0.2 0.00 0.0
[2,] 0.0 1.25 -1.5
[3,] 0.0 -1.50 2.0

iii. La matriz inversa de (d) es:


> round(solve(d),2)
[,1] [,2] [,3] [,4]
[1,] 0.25 -0.25 0.00 0.0
[2,] 0.00 0.33 -0.33 0.0
[3,] 0.00 0.00 0.50 -0.5
[4,] 0.00 0.00 0.00 1.0

7.) Calcular el rango de estas matrices.


 
  1 2 3 4 5
1 0 2 1 1
 0 −1 3 1
1 1 2 0(b)(a) 2 1 1 0 1

(a) 
1 −1 2 2  0
 3 8 −5 3
1 1 2 0 −1 2 6 −2 3
1 1 2 −3 0

> a=matrix(c(1,1,1,1,0,1,-1,1,2,2,2,2,1,0,2,0),4,4)
> b=matrix(c(1,1,2,0,-1,1,2,0,1,3,2,1,3,-1,1,8,6,2,
+ 4,3,0,-5,-2,-3,5,1,1,3,3,0),5,5)
> library(fBasics) # Instalamos la libreria "fBasics" para usar la funcion rk()
El rango de las matrices es :
   
1 0 2 1 1 0 2 1
1
 1 2 0 0
→ 1 0 −1
1 −1 2 2 0 0 0 0
1 1 2 0 0 0 0 0
> rk(a)
[1] 2
Es decir que (a) es de rango 2.
   
1 2 3 4 5 2 1 1 0 1
1 0 −1 3 1 0 3 8 −5 3
−3
   13

2 1 1 0 1
 → 0 0 3

 2 2 
13 2
0
 3 8 −5 3
 0
 0 0 9 3
−1 2 6 −2 3 0 0 0 0 0
1 1 2 −3 0 0 0 0 0 0

6
> rk(b)
[1] 5
Es decir que (b) es de rango 4.
12.) Identifique cuales de estos vectores son ortogonales o ortonormales, y calcule los ángulos de cada
par de vectores.
  "√ √ #
1 1 1 1 2 2
t= , , , u = [1, 0, −1, 0] v= , 0, ,0
2 2 2 2 2 2

> t=c(1/2,1/2,1/2,1/2)
> u=c(1,0,-1,0)
> v=c(sqrt(2)/2,0,sqrt(2)/2,0)
>
>

Verifiquemos cuales son ortonomarles haciendo el producto punto con ellos mismo.
3
> t(t)%*%t;
[,1]
[1,] 1
> t(u)%*%u;
[,1]
[1,] 2
> t(v)%*%v
[,1]
[1,] 1
De lo anterior podemos decir que t, u son vectores ortonormales.
Ahora veamos si son ortogonales entre ellos.

i. Entre t y u

> t(t)%*%u
[,1]
[1,] 0
> # El angulo formado en radianes
> acos((t(t)%*%u)/(sum(t*t)^0.5)*(sum(u*u)^0.5))
[,1]
[1,] 1.570796
> # Convertimos radianes a grados.
> rad2deg(acos(((t(t)%*%u))/((sum(t*t)^0.5)*(sum(u*u)^0.5))))
[,1]
[1,] 90

vemos que el angulo formado entre los vectores t y u es de 90 grados, es decir, los vectores son
ortogonales entre ellos.

ii. Entre t y v

7
> t(t)%*%v
[,1]
[1,] 0.7071068
> cos((t(t)%*%v)/(sum(t*t)^0.5)*(sum(v*v)^0.5))
[,1]
[1,] 0.7602446
> rad2deg(acos(((t(t)%*%v))/((sum(t*t)^0.5)*(sum(v*v)^0.5))))
[,1]
[1,] 45

Es decir que el angulo que forman los vectores t y v es de 45 grados, por lo tanto no son
ortogonales entre ellos.
iii. Entre u y v

> t(u)%*%v
[,1]
[1,] 0
> cos((t(u)%*%v)/(sum(u*u)^0.5)*(sum(v*v)^0.5))
[,1]
[1,] 1
> rad2deg(acos(((t(u)%*%v))/((sum(u*u)^0.5)*(sum(v*v)^0.5))))
[,1]
[1,] 90

El angulo formado por u y v es de 90 grados, por lo tanto los vectores son ortogonales entre
ellos.
NOTA en este punto se utiliza la función rad2deg para convertir los radianes a grados, esta
se define como
> rad2deg<-function(rad) {(rad * 180) / (pi)}
13.) Verifique que la siguiente matriz es ortogonal.
 √ 
3 1
0√
 2√2 √2
6
− √4 −√ 22 

√4
− 22 4
6
2
2

Para verificarlo vamos a utilizar una propiedad de las matrices ortogonales que dice que si Q es
una matriz ortogonal entonces Qt = Q−1 y QQt = QQ−1 = I.

> Q=matrix(c(sqrt(3)/2,-sqrt(2)/4,-sqrt(2)/4,1/2,sqrt(6)/4,sqrt(6)/4,0,
+ -sqrt(2)/2,sqrt(2)/2),3,3)
Veamos si la Matriz cumple la propiedad.
> round(Q%*%t(Q))
[,1] [,2] [,3]
[1,] 1 0 0
[2,] 0 1 0
[3,] 0 0 1

Por lo tanto, la matriz es ortogonal.

8
2. Instale R y a partir del manual de introducción conteste
(a) ¿En R hay diferencia entre mayúsculas y minúsculas?
Si, R es un lenguaje de expresiones con sintaxis simple por lo cual A es diferente de a.

(b) ¿Con qué se separan las instrucciones de R?


Las ordenes son separadas por ”;” o por una nueva linea.

(c) ¿Cómo se escriben comentarios en R?


Para agregar comentarios se pone ”#”.

(d) ¿Qué significa cuando aparece + luego de teclear Enter?


Si la orden no esta completa sintacticamente, se mostrara este sı́mbolo hasta que la orden se
complete.

(e) ¿Cómo se recuerdan comandos tecleados previamente en R?


Utilizando las flechas del teclado.

(f) ¿Qué es el workspace?


La colección de objetos guardados durante la sesión

(g) ¿Qué se almacena en .RData?, ¿ Qué en .Rhistory?


.RData es un archivo en el cual guardas los objetos que se encuentren en el workspace se pueden
guardar.
.Rhistory es un archivo que guarda las lineas de comando usadas en la sesión.

(h) ¿Cómo se obtiene ayuda en R para una función especı́fica?


Para obtener ayuda con una función se puede hacer uso de:
>help(solve) o ?solve , donde ”solve” es la función sobre la que se busca información.

(i) ¿Cuáles son los sı́mbolos de comparación en R: menor que, menor o igual, mayor, mayor o igual,
igual y diferente?
< : Menor que
<= : Menor o igual
> : Mayor que
>= : Mayor o igual
== : Igual
!= : Diferente

(j) ¿Cuáles son los operadores lógicos: OR, AND y negación?


| : OR
& : AND
! : Negación

(k) ¿Qué efecto tienen \n \t \b al imprimir una cadena de caracteres?


\n : Hace un cambio de linea.
\t : Hace un espacio de un ”TAP”
\b : Quita un espacio.

9
(l) ¿Cuáles son los principales objetos de R?
Los vectores son los objetos principales.

(m) ¿Cómo se define un escalar en R?


Un número que aparece por sı́ solo en una expresión se toma como un vector de longitud uno.

(n) ¿Qué es un factor y qué atributos tiene?


Un factor es un objeto vectorial utilizado para especificar una clasificación discreta (agrupación) de
los componentes de otros vectores de la misma longitud. que pueden ser ordenados o no ordenados,
se utilizan para representar variables de naturaleza categórica.

(o) ¿Que hace la función tapply?


Aplica la función que se requiera usar para componentes de un primer argumento y los define en
las categorı́as del segundo argumento.

3. Escriba para cada instrucción un comentario resumiendo lo que hace cada función:

(a) >help.start() : Permite el acceso a paginas de ayuda en formato HTLM con hiperlinks, contiene
listas de conceptos de alto nivel.

(b) >sink(”record.lis”) : Envı́a las respuestas de la consola a un archivo externo.

(c) >misdatos <-read.table(’data.dat’) : Crea un data frame desde un archivo externo en formato de
tabla llamado ”data.dat”

(d) >L2 <- list(A=x, B=y) : Crea una lista con los dos vectores

(e) ts(1:47, frequency = 12, start = c(1959, 2)) : Crea una serie de tiempo

(f) >exp1 <-expression(x /(y + exp(z))) : Es una expresión que no se evalúa

(g) >x <- rpois(40, lambda=5) : Calcula la distribución de densidad de Poisson con el parámetro
lambda el cual es el vector de medias.

(h) >x[x%%2==0] : Sacalos elementos del vector x que cumplen la condición, ser divisible por y con
residuo 0, es decir, los pares.

(i) >x <- rnorm(50) : Genera una distribución normal con 50 cuartiles.

(j) >mean(x) : Calcula la media del vector x.

4. Suponga que usted es la consola de R. Responda al frente a cada uno de los comandos:

(a) >0/0
> 0/0
[1] NaN
Not a Number

(b) >labs <-paste(c(’X’,’Y’), 1:10, sep=”);labs:


> labs <-paste(c('X','Y'), 1:10, sep='');labs
[1] "X1" "Y2" "X3" "Y4" "X5" "Y6" "X7" "Y8" "X9" "Y10"
Concatena vectores.

10
(c) >c(”x”,”y”)[rep(c(1,2,2,1), times=4)] :
> c("x","y")[rep(c(1,2,2,1), times=4)]
[1] "x" "y" "y" "x" "x" "y" "y" "x" "x" "y" "y" "x" "x" "y" "y" "x"

(d) >ls() :
> ls()
[1] "a" "A" "b" "B" "b1" "c" "C"
[8] "d" "D" "e" "f" "labs" "P" "Q"
[15] "R" "rad2deg" "t" "u" "v" "x" "y"
[22] "z"
Da la lista de objetos en el workspace, en esta salen los objetos que se usaron en este documento.

(e) >apropos(”eigen”):
> apropos("eigen")
[1] "eigen" "print.eigen"
Da un vector de caracteres que da los posibles resultados a la búsqueda.

(f) >x <- 1; mode(x)


> x <- 1; mode(x)
[1] "numeric"
Da el modo de almacenamiento de un objeto.

(g) >seq(1, 5, 0.5):


> seq(1, 5, 0.5)
[1] 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0
Genera una secuencia de 1-5 pero con intervalos de 0.5.

(h) >gl(3, 5):


> gl(3, 5)
[1] 1 1 1 1 1 2 2 2 2 2 3 3 3 3 3
Levels: 1 2 3
Generar factores especificando el patrón de sus niveles.

(i) >expand.grid(a=c(60,80), p=c(100, 300), sexo=c(”Macho”, ”Hembra”))->trat >dim(trat);class(trat):


> expand.grid(a=c(60,80), p=c(100, 300), sexo=c("Macho", "Hembra"))->trat
> dim(trat);class(trat)
[1] 8 3
[1] "data.frame"
Cree un data frame a partir de todas las combinaciones de los vectores o factores suministrados.

(j) >v <- c(10, 20, 30);diag(v)


> v <- c(10, 20, 30);diag(v)
[,1] [,2] [,3]
[1,] 10 0 0
[2,] 0 20 0
[3,] 0 0 30
Extrae la diagonal de una matriz o construye una matriz diagonal.

11

You might also like