Nombre: Mauricio Sánchez Fuentes
Grupo: 9004
Fecha: Martes, 04 de diciembre de 2019
Materia: Métodos Cuantitativos Aplicados a la Administración

La secuencia de Fibonacci es una sucesión definida por recurrencia. Esto significa que para calcular un término de la sucesión se necesitan los términos que le preceden.

0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, ….

Esta secuencia fue descrita por el matemático italiano Leonardo de Pisa (Fibonacci) quien nació en 1170 y murió en 1240, mucho antes de ser conocida en occidente, la sucesión de Fibonacci ya estaba descrita en la matemática india, en conexión con la prosodia sánscrita.

La sucesión tiene múltiples aplicaciones en informática y buena parte de la fascinación que suscita se debe a que su proporción se manifiesta también en la naturaleza, como en la disposición de las ramas en los árboles, en la de las hojas en los tallos y en el crecimiento en espiral de las conchas de los caracoles, entre otros. Se relaciona también con la proporción áurea o número phi, por lo que también es utilizada en círculos esotéricos.

Representación gráfica de la sucesión de Fibonacci

Representación gráfica de la sucesión de Fibonacci

Secuencia de Fibonacci en R

Para realizar la sucesión en R se necesitará los siguientes comandos:

# Se cargan las librerías que se usarán en script #
# Con este comando desactivamos la impresión de warnings (versiones de CRAN y ggplot2) #

options(warn=-1)
library(ggplot2)

# Para crear la función de fibonacci que genera el n-ésimo número de la serie #

fib <- function(n) {
  
  if (n == 1) {
    
    return(0)
  }
  else if(n == 2) {
    
    return(1)
  }
  else if(n > 2) {
    
    return(fib(n - 1) + fib(n - 2))
  }
  
}

# Se aplica la función para generar el noveno número de la serie #

fib(9)
## [1] 21
# Función para generar la serie con m elementos #

s_fib <- function(m) {
    
    serie <- vector("numeric", length = m)
    
    for (i in 1:m) {
        
        serie[i] <- fib(i)
    }

    return(serie)
}

# Se aplica la función s_fib para generar 30 elementos de la serie #

s_fib(30)
##  [1]      0      1      1      2      3      5      8     13     21     34
## [11]     55     89    144    233    377    610    987   1597   2584   4181
## [21]   6765  10946  17711  28657  46368  75025 121393 196418 317811 514229
# Función para Obtener la rzón aurea #

r_oro <- function(n) {

  if (n <= 4) {
    
      return('Utiliza un número mayor a 4')
  }
  
    else (return(fib(n)/fib(n-1)))
     
}

# Dataframe para obtener la sucesión de Fibonacci #

# Utilizando el ángulo de Fibonacci crearemos un dataframe con tres coordenas correspondientes al factor alpha (ángulo), la órdenada y la abcisa las cuales graficaremos en dos dimensiones y haremos algunas variaciones para simular la filotaxia en la naturaleza #

# Girasol #

# Ajustamos el tamaño de las gráficas #

options(repr.plot.width=5, repr.plot.height=5)

# Número de puntos en la visualización #

n <- 2000

# Ángulo de Fibonacci #

alpha <- 360*((2 / (sqrt(5) + 1))**2)

# Elementos que formarán las espirales #

s <- -(1:n)*alpha
x <- sin(s)
y <- cos(s)

# Creamos un dataframe con los valores #

df <- data.frame(s, x, y)

# Creamos la gráfica #

p <- ggplot(df, aes(x*s, y*s))

# Estéticos #
p + geom_point(aes(size = s), 
               alpha = 0.8,
               color = "black",
               fill = 'white',
               shape = 21,
               stroke = 1) +

theme(panel.background = element_rect(fill = "black"),
      panel.grid = element_blank(),
      axis.text = element_blank(),
      axis.title = element_blank(),
      axis.line = element_blank(),
      axis.ticks = element_blank(),
      legend.position = "none")