Sucesión de Fibonacci
De Wikipedia, la enciclopedia libre
|
En matemáticas, la secuencia de Fibonacci es una sucesión de números enteros que fue descrita por primera vez en Europa por Leonardo de Pisa, también conocido como Fibonacci.
Tabla de contenidos |
[editar] Historia
Antes de que Fibonacci escribiera su trabajo, la secuencia áurea había sido descubierta por matemáticos hindúes tales como Gopala (antes de 1135) y Hemachandra (c. 1150) quienes habían investigado los patrones rítmicos que se formaban con sílabas o notas de uno o dos pulsos. El número de tales ritmos (teniendo juntos una cantidad n de pulsos) era: F(n+1), que produce explícitamente los números 1, 2, 3, 5, 8, 13, 21, etc. (según Knuth, 1997, pág. 80).
Kepler también describió los números de Fibonacci. El matemático escocés Robert Simson descubrió en 1753 que la relación entre dos números sucesivos de Fibonacci Fn/F(n-1) se acerca de la relación áurea fi cuanto más se acerque n al infinito.
[editar] Obtención
Se obtiene mediante la siguiente función recursiva:
O sea, que se empieza con 0 y 1, y luego cada número es la suma de los dos anteriores.
[editar] Propiedades de la secuencia
Algunas de las propiedades de esta sucesión son:
- La razón o cociente entre un término y el inmediatamente anterior varía continuamente, pero se estabiliza en un número irracional conocido como razón áurea, número áureo, o número phi (pronunciado fi), que es la solución positiva de la ecuación x²-x-1=0, y se puede aproximar por 1,618033989.
- Tomando estos valores para el número áureo:
el número de Fibonacci n se puede escribir como
esta función expande la sucesión de Fibonacci a los números reales con imagen compleja, es decir que la función anterior se puede reescribir como
esta función inclusive expande la sucesión de Fibonacci a los números complejos con imagen compleja.
- Cualquier número natural se puede escribir mediante la suma de un número limitado de términos de la secuencia de Fibonacci, cada uno de ellos distinto a los demás. Por ejemplo, 17=13+3+1, 65=55+8+2.
- Tan sólo un término de cada tres es par, uno de cada cuatro es múltiplo de 3, uno de cada cinco es múltiplo de 5, etc. Esto se puede generalizar, de forma que la sucesión de Fibonacci es periódica en las congruencias módulo m, para cualquier m.
- Si F(p) = a, tal que a es un número primo, entonces p también es un número primo, con una única excepción. F(4)=3; 3 es un número primo, pero 4 no lo es.
- La suma infinita de los términos de la secuencia F(n)/10n es exactamente 10/89.
- La suma de diez números Fibonacci consecutivos es siempre 11 veces superior al séptimo número de la serie.
- El último dígito de cada número se repite periódicamente cada 60 números. Los dos últimos, cada 300; a partir de ahí, se repiten cada 1.5×10^n números.
- La suma de los n primeros números es igual al número que ocupa la posición n+2 menos uno.
[editar] La sucesión de Fibonacci en la naturaleza
En la naturaleza, hay muchos elementos relacionados con la sucesión de Fibonacci:
- Según el propio Leonardo de Pisa en su Libro de los ábacos, la secuencia puede ayudar a calcular casi perfectamente el número de pares de conejos n meses después de que una primera pareja comienza a reproducirse (suponiendo que los conejos se empiezan a reproducir cuando tienen dos meses de edad).
- La relación entre la cantidad de abejas macho y abejas hembra en un panal.
- La relación entre la distancia entre las espiras del interior espiralado de cualquier caracol (no sólo del nautilus)
- La relación entre los lados de un pentáculo.
- La disposición de los pétalos de las flores (el papel del número áureo en la botánica recibe el nombre de Ley de Ludwig).
- La distancia entre las espirales de una piña.
- Las relaciones entre muchas partes corporales de los humanos y los animales:
- La relación entre la altura de un ser humano y la altura de su ombligo.
- La relación entre la distancia del hombro a los dedos y la distancia del codo a los dedos.
- La relación entre la altura de la cadera y la altura de la rodilla.
- La relación entre las divisiones vertebrales.
- La relación entre las articulaciones de las manos y los pies.
[editar] La secuencia de Fibonacci en el arte
- Relaciones arquitectónicas en las Pirámides de Egipto.
- La relación entre las partes, el techo y las columnas del Partenón, en Atenas (s. V a. C..
- En los violines, la ubicación de las efes (los “oídos”, u orificios en la tapa) se relaciona con el número áureo.
- El número áureo aparece en las relaciones entre altura y ancho de los objetos y personas que aparecen en las obras de Miguel Ángel, Durero y Da Vinci, entre otros.
- Las relaciones entre articulaciones en el hombre de Vitruvio y en otras obras de Leonardo da Vinci.
- En las estructuras formales de las sonatas de Mozart, en la Quinta Sinfonía de Beethoven, en obras de Schubert y Debussý.
- Autores como Bártok, Messiaen, Stockhausen compusieron obras cuyas unidades formales se relacionan (a propósito) con el número áureo.
- En la pág. 61 de la novela de Dan Brown El código Da Vinci aparece una versión desordenada de los primeros ocho números de Fibonacci (13, 3, 2, 21, 1, 1, 8, 5), que funcionan como una pista dejada por el conservador del museo del Louvre, Jacques Saunière. En las pp. 121 a 123 explica algunas de las apariciones de este número fi (1,618) en la naturaleza.
- En el episodio “Sabotaje” de la serie de televisión NUMB3RS (primera temporada, 2005), el genio de la matemática Charlie Eppes menciona que el número fi se encuentra en la estructura de los cristales, en la espiral de las galaxias y en la concha del nautilus.
- En el álbum Lateralus de la banda estadounidense Tool, los patrones de la batería (Danny Carey) de la canción Lateralis siguen la Sucesión de Fibonacci del número 13 (número de pistas del disco): 1,1,2,3,5,8,13,1,1,2,3,5,8,13,1,1,...
[editar] Implementación informática
Hay distintas formas de implementar algoritmos para obtener la Sucesión de Fibonacci. Algunos ejemplos en distintos lenguajes de programación:
[editar] En QBASIC
CLS PRINT " Sucesión de Fibonacci" INPUT " Hasta que valor de n: ", nFin n = 0 a = 0: rem Fibonacci de n b = 1: rem Fibonacci de n+1 DO PRINT n, a PRINT n + 1, b n = n + 2 a = a + b b = b + a LOOP UNTIL n > nFin
[editar] En Haskell
Version Recursiva: fibonacci :: Integer -> Integer fibonacci 0 = 0 fibonacci 1 = 1 fibonacci x = fibona (x-1) + fibona (x-2) Version Optimizada: fibonacci :: Integer -> Integer fibonacci n | n == 0 = 0 fibonacci n | n == 1 = 1 fibonacci n | otherwise = auxFibonacci 1 0 n 1 auxFibonacci :: Integer -> Integer -> Integer -> Integer -> Integer auxFibonacci x y n c | c == n = x auxFibonacci x y n c | otherwise = auxFibonacci (x + y) x n (c + 1)
[editar] En Java
public class Fibonacci { public static int fibonacci(int n){ if (n < 2) return n; return fibonacci(n - 2) + fibonacci(n - 1); } public static void main(String[] args) { int x; for (int i = 0; i <= 10; ++i) { if (i != 0) System.out.print(", "); System.out.print(fibonacci(i)); } } }
[editar] En C
#include <stdio.h> #include <stdlib.h> /* Optimizado para x creciente * F.H.C.A.A. * Nota: Resultado esta limitado a 2^Y - 1 en maquinas de Y bits * mas allá es integer overflow. */ static unsigned int f_x[2]; static unsigned char i = 0; inline unsigned int f(unsigned int x) { unsigned int ret; if(x <= 1) ret = x; else ret = f_x[0] + f_x[1]; f_x[i] = ret; i= ~i & 1; return ret; } int main(int c, char **v) { unsigned int l, x; char *e; if(c < 2) { fprintf(stdout, "%s limite_inclusivo\n", v[0]); return 0; } l = strtoul(v[1], &e, 10); if(*e != 0) { fprintf(stderr, "\"%c\" no es valido\n", *e); return 1; } for(x = 0; x <= l; x++) printf("%u\n", f(x)); return 0; }
[editar] En C++
#include <iostream> using namespace std; int fibonacci(int n) { if (n < 2) return n; return fibonacci(n - 2) + fibonacci(n - 1); } int main() { int x; while (cin >> x) { for (int i = 0; i <= x; ++i) { if (i != 0) cout << ", "; cout << fibonacci(i); } cout << endl; } }
[editar] En LUA
-- Version tradicional (recursion doble) function fib (n) if n == 0 then return 0 elseif n == 1 then return 1 else return fib(n-1) + fib(n-2) end end -- Version rápida (recursion simple) function dosfib (n) if n == 1 then return 0, 1 else local nm2, nm1 = dosfib(n-1) return nm1, nm2+nm1 end end function fibRapido (n) if n == 0 then return 0 end local a, b = dosfib(n) return b end
[editar] En Visual Basic
Dim f() As Double 'sucesion Dim c As Integer Private Sub Command1_Click() c = CInt(Text1.Text) ReDim Preserve f(1 To c) f(1) = 1 f(2) = 1 n = 3 Do While n < c + 1 f(n) = f(n - 1) + f(n - 2) res = f(n) 'resultado n = n + 1 Loop Label1.Caption = res 'mostrar resultado en Label1 End Sub
[editar] En Pascal (turbo 7.1)
program fibonacci; uses crt; var c,d,e:integer; begin clrscr; write('1'); write(','); write('1'); write(','); c:=1+1; repeat; d:=e+c; write(d); write(','); e:=d+c; write(e); write(','); c:=e+c; write(c); write(','); until c>31616; repeat; until keypressed; end.
[editar] Véase también
- Sucesión matemática
- Arte Póvera, movimiento artístico italiano de los años 1960, muchas de cuyas obras se basan en esta sucesión.