Actividad 1

Escriba una funćión que permita calcular las siguientes sumatorias y productorias

1.a

\[\sum_{i=1}^{100}\frac{1}{2^i}\]

ejr_1_a <- function(n){
  sum =0
  for (i in 1:n) {
    sum = sum+(1/(2^i))
  }
  return(sum)
}
ejr_1_a(100)
## [1] 1
##  {.tabset .tabset-fade .tabset-pills}

1.b

\[\sum_{n=0}^{\infty}\frac{1}{n!}\]

ejr_1_b <- function(n){
  sum =0
  x = c(1)
  for (i in 0:n) {
    if (i > 0 ){
      x = c(x,i)
    }
    valor = 1/prod(x)
    sum = sum+valor
  }
  return(sum)
}
ejr_1_b(100)
## [1] 2.718282

1.c

\[\prod_{n=1}^{6}(1+x^{2^n})\]

ejr_1_c <- function(x,n){
  produc = 1
  for (i in 1:n) {
    produc = produc*(1+x^(2^i))
  }
  return(produc)
}
ejr_1_c(1,5)
## [1] 32

1_d

\[\prod_{k=1}^{\infty}\frac{4k^2}{4k^2-1}\]

ejr_1_d <- function(k){
  produc = 1
  for (i in 1:k) {
    valor = (4*i^2)/(4*i^2-1)
    produc = produc*valor
  }
  return(produc)
}
ejr_1_d(100)
## [1] 1.566894

1.e

\[\prod_{k=0}^{\infty}\frac{x^{2^n}}{(2n)!}\]

ejr_1_d <- function(x,n){
  prod = 1
  fac = c(1)
  for (i in 0:n) {
    if (i>0){
      fac = c(fac,2*i)
    }
    valor = (x^(2^i))/(prod(fac))
  }
  return(valor)
}
ejr_1_d(1,3)
## [1] 0.02083333

1.f

ejr_1_f <- function(x,n){
  sum = 0;
  fac = c()
  for (i in 0:n) {
    fac = c(fac,2*i+1)
    valor = ((-1)^i*(x)^(2^(n+1)))/prod(fac)
    sum = sum+valor
  }
  return(sum)
}

ejr_1_f(1,18)
## [1] 0.7247785

Actividad 2

Evalue las siguientes funciones definiendo un dominio para esto, luego grafique la función.

2.a

\[y = x^5-7x^4-162x^3+878x^2+3937x-15015\]

ejr_2_a <- function(x){
  y = x^5-8*x^4-162*x^3+878*x^2+3937*x-15015;
  return(y)
}
x = seq(-16,20,0.5)
y = ejr_2_a(x)
plot(x,y,type = 'l')

2.b

\[y = \frac{sin(x)}{x}\]

ejr_2_b <- function(x){
  y = sin(x)/x
  for (i in 1:length(y)){ 
    if (is.nan(y[i]) == 'TRUE'){
      y[i] = 1
      }
    }
  return(y)
}
x = seq(-50,50,0.5)
y = ejr_2_b(x)
plot(x,y,type = 'l')

2.c

\[y = \frac{cos(x)-1}{x}\]

ejr_2_c <- function(x){
  y = (cos(x)-1)/x
  for (i in 1:length(y)){ 
    if (is.nan(y[i]) == 'TRUE'){
      y[i] = 0
      }
    }
  return(y)
}
x = seq(-50,50,0.5)
y = ejr_2_c(x)
plot(x,y,type = 'l')

2.d

\[y = x^5 - 3x^4 + x^2 - x - 5\]

ejr_2_d <- function(x){
  y = x^5-3*x^4+x^2-x-5;
  return(y)
}
x = seq(-10,11,0.5)
y = ejr_2_d(x)
plot(x,y,type = 'l')

Actividad 3

Calcule para qué valor de n las sumatorias convergen a pi y coincide con los primeros valores (3.141593)

3.a

\[\sum_{k = 0}^\infty \frac{8}{(4k+1)(4k+3)}\]

ejr_3_a <- function(x){
  sum = 0;
  k=0
  while(sum<=x){
    valor = 8/((4*k+1)*(4*k+3))
    k=k+1
    sum = valor+sum  
  }
  return(k)
}
ejr_3_a(3.141592)
## [1] 765006

3.b

\[\sqrt{6\sum_{k=1}^\infty \frac{1}{k^2}}\]

ejr_3_b <- function(x){
  sum = 0;
  k=1
  while(sum^(1/2)<=x){
    valor = (6/k^2)
    k=k+1
    sum = valor+sum
  }
  return(k)
}
ejr_3_b(3.141592)
## [1] 1461055

Actividad 4

Escriba una funci ́on que tome dos argumentos, a saber, x y n, donde x es un número y n sea estrictamente un entero positivo. La funcíon debe retornarel valor de \[1+x+\frac{x^2}{2}+\frac{x^3}{3}+...+\frac{x^n}{n}\]

ejr_4 <- function(x,n){
  y = c(1)
  y1 = c()
  for (i in 1:length(n)) {
    y = c(y,(x^i)/i)
    y1 = c(y1,sum(y))
  }
  plot(n,y1, type = 'l')
  return(sum(y))
}
x = 1
n = seq(1,20,1)
ejr_4(x,n)

## [1] 4.59774

Actividad 5

Una estructura muy común en R son los vectores, por lo que algunos ejercicios relacionados ser ́an de mucha utilidad.

5.a

Cree un vector de valores de \(e^xcosx\) para x=3,3.1,3.2,…,6

ejr_5_a<-function(x){
  y = exp(x)*cos(x)
  return(y)
}
x = seq(3,6,0.1)
ejr_5_a(x)
##  [1] -19.884531 -22.178753 -24.490697 -26.773182 -28.969238 -31.011186
##  [7] -32.819775 -34.303360 -35.357194 -35.862834 -35.687732 -34.685042
## [13] -32.693695 -29.538816 -25.032529 -18.975233 -11.157417  -1.362099
## [19]  10.632038  25.046705  42.099201  61.996630  84.929067 111.061586
## [25] 140.525075 173.405776 209.733494 249.468441 292.486707 338.564378
## [31] 387.360340

5.b

cree el vector \(2,\frac{2^2}{3},\frac{2^3}{3},...,\frac{2^25}{25}\)

vec = c()
for (i in 1:25) vec = c(vec,(2^i)/i)
vec
##  [1] 2.000000e+00 2.000000e+00 2.666667e+00 4.000000e+00 6.400000e+00
##  [6] 1.066667e+01 1.828571e+01 3.200000e+01 5.688889e+01 1.024000e+02
## [11] 1.861818e+02 3.413333e+02 6.301538e+02 1.170286e+03 2.184533e+03
## [16] 4.096000e+03 7.710118e+03 1.456356e+04 2.759411e+04 5.242880e+04
## [21] 9.986438e+04 1.906502e+05 3.647221e+05 6.990507e+05 1.342177e+06

5.c

con paste cree un vector de largo 30: trat 1, trat 2,…,trat 30

paste(c('trat'),1:30,sep=' ')
##  [1] "trat 1"  "trat 2"  "trat 3"  "trat 4"  "trat 5"  "trat 6"  "trat 7" 
##  [8] "trat 8"  "trat 9"  "trat 10" "trat 11" "trat 12" "trat 13" "trat 14"
## [15] "trat 15" "trat 16" "trat 17" "trat 18" "trat 19" "trat 20" "trat 21"
## [22] "trat 22" "trat 23" "trat 24" "trat 25" "trat 26" "trat 27" "trat 28"
## [29] "trat 29" "trat 30"

5.d

con paste cree un vector de largo 10: gen1,gen2,…,gen10

paste(c('gen'),1:10,sep = '')
##  [1] "gen1"  "gen2"  "gen3"  "gen4"  "gen5"  "gen6"  "gen7"  "gen8"  "gen9" 
## [10] "gen10"

5.e

Use replicate para generar 20 vectores columna con datos generados de rnorm(40,3,0.3) y cree un vector con las medias de cada columna con colMeans

dat = replicate(20, rnorm(40, 3, 0.3))
medias = colMeans(dat)
medias
##  [1] 2.973544 3.029161 2.897547 2.986115 2.954902 2.915827 2.930206 2.987106
##  [9] 2.981535 3.033915 2.987457 3.044930 3.021548 2.899464 3.033256 3.003538
## [17] 2.995001 2.960633 3.060810 2.993119

5.f

cree un vector con las desviaciones estandar de cada columna generadas en el punto anterior

# MARGIN = 1 -> Operar sobre filas
# MARGIN = 2 -> Operar sobre columnas
vec_sd = apply(X = dat,MARGIN = 2,FUN = sd)
vec_sd
##  [1] 0.2999667 0.2291796 0.2777426 0.2969658 0.3103478 0.2843837 0.2835968
##  [8] 0.2841357 0.3524299 0.2823330 0.3020928 0.3255939 0.2362396 0.3481836
## [15] 0.2535258 0.3408219 0.2864766 0.3046484 0.2256345 0.2450608

5.g

cree un vector con todos los coeficientes de variacion

coef_var = vec_sd/medias
coef_var
##  [1] 0.10087851 0.07565777 0.09585439 0.09944890 0.10502811 0.09753107
##  [7] 0.09678391 0.09512071 0.11820419 0.09305894 0.10112041 0.10692984
## [13] 0.07818494 0.12008550 0.08358208 0.11347347 0.09565156 0.10289976
## [19] 0.07371726 0.08187470

Actividad 6

6.a

Cree la siguiente matriz \[\begin{bmatrix} 1& 1 &3 \\ 2& 9 &3 \\ -4& 5&1 \end{bmatrix}\]

mat = matrix(c(1,2,-4,1,9,5,3,3,1),3,3)
mat
##      [,1] [,2] [,3]
## [1,]    1    1    3
## [2,]    2    9    3
## [3,]   -4    5    1

6.b

Transponga la matriz

mat_trans = t(mat)
mat_trans
##      [,1] [,2] [,3]
## [1,]    1    2   -4
## [2,]    1    9    5
## [3,]    3    3    1

6.c

Invierta la matriz

mat_inv = solve(mat)
mat_inv
##             [,1]        [,2]        [,3]
## [1,] -0.05084746  0.11864407 -0.20338983
## [2,] -0.11864407  0.11016949  0.02542373
## [3,]  0.38983051 -0.07627119  0.05932203

6.d

Halle el determinante

mat_det = det(mat)
mat_det
## [1] 118

6.e

Calcule la traza

mat_traza = sum(diag(mat))
mat_traza
## [1] 11

6.f

Determine el rango de la matriz

mat_ran = qr(mat)$rank
mat_ran
## [1] 3

6.g

halle la dimension con dim

mat_dim = dim(mat)
mat_dim
## [1] 3 3

6.h

multiplique la matriz por ella misma con solo *

mult1 = mat*mat
mult1
##      [,1] [,2] [,3]
## [1,]    1    1    9
## [2,]    4   81    9
## [3,]   16   25    1

6.i

Multiplique la matriz de forma usual con %*%

mult2 = mat%*%mat
mult2
##      [,1] [,2] [,3]
## [1,]   -9   25    9
## [2,]    8   98   36
## [3,]    2   46    4

6.j

si llamamos a la matriz A, calcule \(A^3\) de ambas formas descritas anteriormente. ¿Observa algun resultado curioso?

mat_pot3_1= mat*mat*mat
mat_pot3_1
##      [,1] [,2] [,3]
## [1,]    1    1   27
## [2,]    8  729   27
## [3,]  -64  125    1
mat_pot3_2 = mat%*%mat%*%mat
mat_pot3_2
##      [,1] [,2] [,3]
## [1,]    5  261   57
## [2,]   60 1070  354
## [3,]   78  436  148

6.k

cree la matriz B en r y use las funciones row(B),col(B),nrow(B),NROW(B),NCOL(B),ncol(B),anyNA(B), as.matrix(B),as.raw(B),colnames(B),colSums(B),cummax(B) ,cummin(B),cumprod(B),cumsum(B),det(B),diag(B),diff(B) ,dimnames(B),exp(B),is.matrix(B),is.unsorted(B),is.vector(B) ,isSymmetric(B),length(B),lengths(B),log10(B),lower.tri(B) ,margin.table(B),marginSums(B),max(B),max.col(B),mean(B) ,min(B),nchar(B),norm(B),order(B),plot(B),pmax(B),pmin(B) ,range(B),rank(B),raw(B),solve(B),sort(B),sum(B),t(B),upper.tri(B) ,which.max(B), para que pueda interpretar el resultado generador \[ \begin{bmatrix} 0 & 1 & 0 & 0 & 0 & 0 \\ 1 & 0 & 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 1 & 0 & 0 \\ 0 & 0 & 1 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 & 0 & 1 \\ 0 & 0 & 0 & 0 & 1 & 0 \end{bmatrix} \]

v1 = c(0,1,0,0,0,0)
v2 = c(1,0,1,0,0,0)
v3 = c(0,1,0,1,0,0)
v4 = c(0,0,1,0,1,0)
v5 = c(0,0,0,1,0,1)
v6 = c(0,0,0,0,1,0)
B = rbind(v1,v2,v3,v4,v5,v6)
B
##    [,1] [,2] [,3] [,4] [,5] [,6]
## v1    0    1    0    0    0    0
## v2    1    0    1    0    0    0
## v3    0    1    0    1    0    0
## v4    0    0    1    0    1    0
## v5    0    0    0    1    0    1
## v6    0    0    0    0    1    0
row(B) #Numero de fila para cada elemento
##      [,1] [,2] [,3] [,4] [,5] [,6]
## [1,]    1    1    1    1    1    1
## [2,]    2    2    2    2    2    2
## [3,]    3    3    3    3    3    3
## [4,]    4    4    4    4    4    4
## [5,]    5    5    5    5    5    5
## [6,]    6    6    6    6    6    6
col(B) #Numero de columna para cada elemento
##      [,1] [,2] [,3] [,4] [,5] [,6]
## [1,]    1    2    3    4    5    6
## [2,]    1    2    3    4    5    6
## [3,]    1    2    3    4    5    6
## [4,]    1    2    3    4    5    6
## [5,]    1    2    3    4    5    6
## [6,]    1    2    3    4    5    6
nrow(B) #Numero de filas de la matriz
## [1] 6
NROW(B) #Numero de filas de la matriz tratando un vector como una matriz de una sola columna 
## [1] 6
NCOL(B) #Numero de columnas de la matriz tratando un vector como una matriz de una sola columna 
## [1] 6
ncol(B) #Numero de columnas de la matriz
## [1] 6
anyNA(B) #Prueba si faltan valores
## [1] FALSE
as.matrix(B)
##    [,1] [,2] [,3] [,4] [,5] [,6]
## v1    0    1    0    0    0    0
## v2    1    0    1    0    0    0
## v3    0    1    0    1    0    0
## v4    0    0    1    0    1    0
## v5    0    0    0    1    0    1
## v6    0    0    0    0    1    0
as.raw(B)
##  [1] 00 01 00 00 00 00 01 00 01 00 00 00 00 01 00 01 00 00 00 00 01 00 01 00 00
## [26] 00 00 01 00 01 00 00 00 00 01 00
colnames(B)
## NULL
colSums(B)
## [1] 1 2 2 2 2 1
cummax(B)
##  [1] 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
cummin(B)
##  [1] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
cumprod(B)
##  [1] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
cumsum(B)
##  [1]  0  1  1  1  1  1  2  2  3  3  3  3  3  4  4  5  5  5  5  5  6  6  7  7  7
## [26]  7  7  8  8  9  9  9  9  9 10 10
det(B)
## [1] -1
diag(B)
## [1] 0 0 0 0 0 0
diff(B)
##    [,1] [,2] [,3] [,4] [,5] [,6]
## v2    1   -1    1    0    0    0
## v3   -1    1   -1    1    0    0
## v4    0   -1    1   -1    1    0
## v5    0    0   -1    1   -1    1
## v6    0    0    0   -1    1   -1
dimnames(B)
## [[1]]
## [1] "v1" "v2" "v3" "v4" "v5" "v6"
## 
## [[2]]
## NULL
exp(B)
##        [,1]     [,2]     [,3]     [,4]     [,5]     [,6]
## v1 1.000000 2.718282 1.000000 1.000000 1.000000 1.000000
## v2 2.718282 1.000000 2.718282 1.000000 1.000000 1.000000
## v3 1.000000 2.718282 1.000000 2.718282 1.000000 1.000000
## v4 1.000000 1.000000 2.718282 1.000000 2.718282 1.000000
## v5 1.000000 1.000000 1.000000 2.718282 1.000000 2.718282
## v6 1.000000 1.000000 1.000000 1.000000 2.718282 1.000000
is.matrix(B)
## [1] TRUE
is.unsorted(B)
## [1] TRUE
is.vector(B)
## [1] FALSE
isSymmetric(B)
## [1] FALSE
length(B)
## [1] 36
lengths(B)
##    [,1] [,2] [,3] [,4] [,5] [,6]
## v1    1    1    1    1    1    1
## v2    1    1    1    1    1    1
## v3    1    1    1    1    1    1
## v4    1    1    1    1    1    1
## v5    1    1    1    1    1    1
## v6    1    1    1    1    1    1
log10(B)
##    [,1] [,2] [,3] [,4] [,5] [,6]
## v1 -Inf    0 -Inf -Inf -Inf -Inf
## v2    0 -Inf    0 -Inf -Inf -Inf
## v3 -Inf    0 -Inf    0 -Inf -Inf
## v4 -Inf -Inf    0 -Inf    0 -Inf
## v5 -Inf -Inf -Inf    0 -Inf    0
## v6 -Inf -Inf -Inf -Inf    0 -Inf
lower.tri(B)
##       [,1]  [,2]  [,3]  [,4]  [,5]  [,6]
## [1,] FALSE FALSE FALSE FALSE FALSE FALSE
## [2,]  TRUE FALSE FALSE FALSE FALSE FALSE
## [3,]  TRUE  TRUE FALSE FALSE FALSE FALSE
## [4,]  TRUE  TRUE  TRUE FALSE FALSE FALSE
## [5,]  TRUE  TRUE  TRUE  TRUE FALSE FALSE
## [6,]  TRUE  TRUE  TRUE  TRUE  TRUE FALSE
margin.table(B)
## [1] 10
marginSums(B)
## [1] 10
max(B)
## [1] 1
max.col(B)
## [1] 2 3 4 3 4 5
mean(B)
## [1] 0.2777778
min(B)
## [1] 0
nchar(B)
##    [,1] [,2] [,3] [,4] [,5] [,6]
## v1    1    1    1    1    1    1
## v2    1    1    1    1    1    1
## v3    1    1    1    1    1    1
## v4    1    1    1    1    1    1
## v5    1    1    1    1    1    1
## v6    1    1    1    1    1    1
norm(B)
## [1] 2
order(B)
##  [1]  1  3  4  5  6  8 10 11 12 13 15 17 18 19 20 22 24 25 26 27 29 31 32 33 34
## [26] 36  2  7  9 14 16 21 23 28 30 35
plot(B)

pmax(B)
##    [,1] [,2] [,3] [,4] [,5] [,6]
## v1    0    1    0    0    0    0
## v2    1    0    1    0    0    0
## v3    0    1    0    1    0    0
## v4    0    0    1    0    1    0
## v5    0    0    0    1    0    1
## v6    0    0    0    0    1    0
pmin(B)
##    [,1] [,2] [,3] [,4] [,5] [,6]
## v1    0    1    0    0    0    0
## v2    1    0    1    0    0    0
## v3    0    1    0    1    0    0
## v4    0    0    1    0    1    0
## v5    0    0    0    1    0    1
## v6    0    0    0    0    1    0
range(B)
## [1] 0 1
rank(B)
##  [1] 13.5 31.5 13.5 13.5 13.5 13.5 31.5 13.5 31.5 13.5 13.5 13.5 13.5 31.5 13.5
## [16] 31.5 13.5 13.5 13.5 13.5 31.5 13.5 31.5 13.5 13.5 13.5 13.5 31.5 13.5 31.5
## [31] 13.5 13.5 13.5 13.5 31.5 13.5
solve(B)
##      v1 v2 v3 v4 v5 v6
## [1,]  0  1  0 -1  0  1
## [2,]  1  0  0  0  0  0
## [3,]  0  0  0  1  0 -1
## [4,] -1  0  1  0  0  0
## [5,]  0  0  0  0  0  1
## [6,]  1  0 -1  0  1  0
sort(B)
##  [1] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1
sum(B)
## [1] 10
t(B)
##      v1 v2 v3 v4 v5 v6
## [1,]  0  1  0  0  0  0
## [2,]  1  0  1  0  0  0
## [3,]  0  1  0  1  0  0
## [4,]  0  0  1  0  1  0
## [5,]  0  0  0  1  0  1
## [6,]  0  0  0  0  1  0
upper.tri(B)
##       [,1]  [,2]  [,3]  [,4]  [,5]  [,6]
## [1,] FALSE  TRUE  TRUE  TRUE  TRUE  TRUE
## [2,] FALSE FALSE  TRUE  TRUE  TRUE  TRUE
## [3,] FALSE FALSE FALSE  TRUE  TRUE  TRUE
## [4,] FALSE FALSE FALSE FALSE  TRUE  TRUE
## [5,] FALSE FALSE FALSE FALSE FALSE  TRUE
## [6,] FALSE FALSE FALSE FALSE FALSE FALSE
which.max(B)
## [1] 2

Actividad 7

En el an ́alisis de genes encontramos problemas que involucran la b ́usqueda de ciertas combinaciones de letras a lo largo de una cadena. Para un cierto gen (”AGT CACAAT GGAAT AGGCCAAGCGAT T GCAGGGT AGCCAGCCA”), escriba una funcion que permita:

  1. Total de base
  2. Cuente el total de base por tipo
  3. Que imprima la posicion donde se encunetre la base G
  4. Que cuente cuantas veces aparece el par GA
  5. Que imprima el tamaño de la cadena mas larga por base
library(stringr)
## Warning: package 'stringr' was built under R version 4.0.5
analisis_genes <- function(cadena){
  espacio = str_count(string = cadena,pattern = ' ')
  total = nchar(cadena)
  total_base = total-espacio 
  Ab = str_count(string = cadena,pattern = 'A')
  Gb = str_count(string = cadena,pattern = 'G')
  Tb = str_count(string = cadena,pattern = 'T')
  Cb = str_count(string = cadena,pattern = 'C')
  Gp = str_locate_all(string = cadena,pattern = 'G')
  Gp = table(Gp)
  GA = str_count(string = cadena,pattern = 'GA')
  cat("Total de base: ",total_base,
      "\nTotal de base A: ", Ab,
      "\nTotal de base G: ",Gb,
      "\nTotal de base T: ",Tb,
      "\nTotal de base C: ",Cb,
      "\nPosicion de la base G: ",Gp,
      "\nTotal de base par GA: ",GA)
}

cadena = c("AGT CACAAT GGAAT AGGCCAAGCGAT T GCAGGGT AGCCAGCCA")
analisis_genes(cadena)
## Total de base:  43 
## Total de base A:  14 
## Total de base G:  13 
## Total de base T:  6 
## Total de base C:  10 
## Posicion de la base G:  2 2 2 2 2 2 2 2 2 2 2 2 2 
## Total de base par GA:  2

Actividad 8

Actividad 9

(tab content)

Actividad 10

(tab content)

Actividad 11

(tab content)

Actividad 12

(tab content)

Actividad 13

(tab content)

Actividad 14

(tab content)

Actividad 15

(tab content)

Actividad 16

(tab content)