# ignorar esta funcion, solo es para separar la salida en pantalla pregunta <- function(n){ cat("\n") cat(paste(rep("*", 40), sep = "", collapse = "")) cat(paste(" Pregunta", n, "")) cat(paste(rep("*", 40), sep = "", collapse = "")) cat("\n") } #-------------------------------------------------------- # Pregunta 1 #-------------------------------------------------------- pregunta(1) { x <- seq(from = -5, to = 5, by = 0.01); y <- exp(-x^2) * cos(3 * x); plot(x, y, type = "l"); } { x <- seq(from = -10, to = 10, by = 0.05); y <- (1 - 3/5*x + 3/20*(x^2) - 1/60*(x^3)) / (1 + 2/5*x + 1/20*(x^2)) plot(x, y, type = "l"); } preg2c <- function(x){ y <- numeric(); for (i in 1:length(x)){ suma = 0; for (k in 0:20){ factor <- (-1)^k / (2^(2*k) * factorial(k)^2); suma <- suma + factor * x[i]^(2*k); } y <- c(y, suma); } y } { x <- seq(from = -5, to = 5, by = 0.01); y <- preg2c(x); plot(x, y, type = "l"); } cat("ver archivo para instrucciones para generar graficos\n"); #-------------------------------------------------------- # Pregunta 2 #-------------------------------------------------------- pregunta(2) pi_aprox <- function(n){ pi_aprox <- 0; for (i in 0:n){ pi_aprox <- pi_aprox + (-1)^i/(2*i + 1); } 4 * pi_aprox; } options(digits = 15) cat("n =", 1000, "\tpi aprox", pi_aprox(1000), "\n"); cat("n =", 10000, "\tpi aprox", pi_aprox(10000), "\n"); cat("n =", 100000, "\tpi aprox", pi_aprox(100000), "\n"); #-------------------------------------------------------- # Pregunta 3 #-------------------------------------------------------- pregunta(3) # ojo que esto es bastante ineficiente, calculamos los numeros de # Fibonacci una y otra vez ... fibonacci <- function(n){ # dos valores iniciales, para poder calcular F3, F4, etc. fib <- c(1, 1); for (i in 3:(n+1)){ fib <- c(fib, fib[i-1] + fib[i-2]); } fib[n+1]; } options(digits = 2) cat("n =", 3, "\tFib(n) =", fibonacci(3), "\n"); cat("n =", 6, "\tFib(n) =", fibonacci(6), "\n"); cat("n =", 10, "\tFib(n) =", fibonacci(10), "\n"); #-------------------------------------------------------- # Pregunta 4 #-------------------------------------------------------- pregunta(4) seleccion <- function(x, indices){ i <- 1; valores <- numeric(); while (i <= length(indices)){ valores <- c(valores, x[indices[i]]); i <- i + 1; } valores; } x <- 10:1 indices <- c(1, 3, 7); valores <- seleccion(x, indices); print(valores) #-------------------------------------------------------- # Pregunta 5 #-------------------------------------------------------- pregunta(5) coef_bin <- function(n, m){ coef <- 0; if (n >= m) coef <- factorial(n)/(factorial(m)*factorial(n-m)); coef } cat("n = 10\tm = 5\tcoef_bin(n, m) =", coef_bin(10, 5), "\n"); cat("n = 5\tm = 5\tcoef_bin(n, m) =", coef_bin(5, 5), "\n"); cat("n = 3\tm = 5\tcoef_bin(n, m) =", coef_bin(3, 5), "\n"); #-------------------------------------------------------- # Pregunta 6 #-------------------------------------------------------- pregunta(6) prod_acum <- function(x, j){ if (j < 1 || j > length(x)){ cat("ingrese una posicion valida\n"); } else { pj <- 1; for (i in 1:j){ pj <- pj * x[i] } pj; } } x <- 1:10; cat("x = 1:10\tj = 5\tprod_acum(x, j) =", prod_acum(x, 5), "\n"); cat("x = 1:10\tj = 3\tprod_acum(x, j) =", prod_acum(x, 3), "\n"); #-------------------------------------------------------- # Pregunta 7 #-------------------------------------------------------- pregunta(7) matriz <- function(n){ mat <- array(integer(n^2), dim=c(n,n)); for (i in 1:(n-1)){ j <- 1; while (j + i <= n){ mat[j, j+i] <- i; mat[j+i, j] <- i; j <- j + 1; } } mat; } print(matriz(5)) print(matriz(8))