Número de Fibonacci – Wikipédia, a enciclopédia livre

27
Yupana (em quíchua, "instrumento de contagem"): calculadora usada pelos incas, possivelmente baseada nos números de Fibonacci. Número de Fibonacci Origem: Wikipédia, a enciclopédia livre. Na matemática, os números de Fibonacci são uma sequência ou sucessão definida como recursiva pela fórmula abaixo: O algoritmo recursivo que define a série aplica-se, na prática, conforme a regra sugere: começa-se a série com 0 e 1; a seguir, obtém-se o próximo número de Fibonacci somando-se os dois anteriores e, assim, sucessiva e infinitamente. Os primeiros números de Fibonacci (sequência A000045 na OEIS) para n = 0, 1,… são 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946… Esta sequência foi descrita primeiramente por Leonardo de Pisa, também conhecido como Fibonacci, para descrever o crescimento de uma população de coelhos. Os números descrevem o número de casais em uma população de coelhos depois de n meses se for suposto que: no primeiro mês nasce apenas um casal, casais amadurecem sexualmente (e reproduzem-se) apenas após o segundo mês de vida, não há problemas genéticos no cruzamento consanguíneo, todos os meses, cada casal fértil dá a luz a um novo casal, e os coelhos nunca morrem. Em seu livro Liber Abaci (1202), Fibonacci introduziu a sequência na matemática ocidental, embora ela já tivesse sido descrita por matemáticos indianos. A sequência de Fibonacci tem inúmeras aplicações. É usada na análise de mercados financeiros, na ciência da computação e na teoria dos jogos. Também aparece em configurações biológicas, como, por exemplo, na disposição dos galhos das árvores ou das folhas em uma haste, no arranjo do cone da alcachofra, do abacaxi, ou no desenrolar da samambaia. . [1] [2] [3] [4] 19/04/2011 Número de Fibonacci – Wikipédia, a enc… pt.wikipedia.org/…/Número_de_Fibonacci 1/27 Generated by Foxit PDF Creator © Foxit Software http://www.foxitsoftware.com For evaluation only.

Transcript of Número de Fibonacci – Wikipédia, a enciclopédia livre

Page 1: Número de Fibonacci – Wikipédia, a enciclopédia livre

Yupana (em quíchua, "instrumento de contagem"):

calculadora usada pelos incas, possivelmente

baseada nos números de Fibonacci.

Número de Fibonacci

Origem: Wikipédia, a enciclopédia livre.

Na matemática, os números de Fibonacci são umasequência ou sucessão definida como recursiva pela fórmulaabaixo:

O algoritmo recursivo que define a série aplica-se, na prática, conforme a regra sugere: começa-se a série com 0 e1; a seguir, obtém-se o próximo número de Fibonacci somando-se os dois anteriores e, assim, sucessiva einfinitamente. Os primeiros números de Fibonacci (sequência A000045 na OEIS) para n = 0, 1,… são

0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946…

Esta sequência foi descrita primeiramente por Leonardo de Pisa, também conhecido como Fibonacci, paradescrever o crescimento de uma população de coelhos. Os números descrevem o número de casais em umapopulação de coelhos depois de n meses se for suposto que:

no primeiro mês nasce apenas um casal,casais amadurecem sexualmente (e reproduzem-se) apenas após o segundo mês de vida,

não há problemas genéticos no cruzamento consanguíneo,todos os meses, cada casal fértil dá a luz a um novo casal, e

os coelhos nunca morrem.

Em seu livro Liber Abaci (1202), Fibonacci introduziu a sequência na matemática ocidental, embora ela já tivessesido descrita por matemáticos indianos.

A sequência de Fibonacci tem inúmeras aplicações. É usada na análise de mercados financeiros, na ciência dacomputação e na teoria dos jogos. Também aparece em configurações biológicas, como, por exemplo, nadisposição dos galhos das árvores ou das folhas em uma haste, no arranjo do cone da alcachofra, do abacaxi,ou no desenrolar da samambaia. .

[1]

[2] [3]

[4]

19/04/2011 Número de Fibonacci – Wikipédia, a enc…

pt.wikipedia.org/…/Número_de_Fibonacci 1/27

Generated by Foxit PDF Creator © Foxit Softwarehttp://www.foxitsoftware.com For evaluation only.

Page 2: Número de Fibonacci – Wikipédia, a enciclopédia livre

Mais genericamente, chama-se sequência de Fibonacci qualquer função g onde g(n + 2) = g(n) + g(n + 1). Essasfunções são precisamente as de formato g(n) = aF(n) + bF(n + 1) para alguns números a e b, então as sequênciasde Fibonacci formam um espaço vetorial com as funções F(n) e F(n + 1) como base.

Em particular, a sequência de Fibonacci com F(1) = 1 e Ver artigo principal: Sequência de Fibonacci F(2) = 3é conhecida como os números de Lucas. A importância dos números de Lucas L(n) reside no fato delesgerarem a Proporção áurea para as enésimas potências:

Os números de Lucas se relacionam com os de Fibonacci pela fórmula:

L(n) = F(n - 1) + F(n + 1)

Com esta fórmula podemos montar a Sequência de Fibonacci e descobrir, por exemplo, quantos coelhos foramgerados no sexto mês, basta aplicar a fórmula descrita acima até chegar ao ponto inicial de 1 e 1.

Como mostra a figura abaixo;

Ou seja, no sexto mês foram gerados 8 coelhos

F(6) = (F(6) - 1) + (F(6) - 2) = 5 e 4 → 8 ( Soma do Resultado de F(5) e F(4) )F(5) = (F(5) - 1) + (F(5) - 2) = 4 e 3 → 5 ( Soma do Resultado de F(4) e F(3) )F(4) = (F(4) - 1) + (F(4) - 2) = 3 e 2 → 3 ( Soma do Resultado de F(3) e F(2) )F(3) = (F(3) - 1) + (F(3) - 2) = 2 e 1 → 2F(2) = (F(2) - 1) + (F(2) - 2) = 1 e 0 → 1

e a primeira posição 1.

Note que a Sequência de Fibonacci esta no resultado de cada posição; 1,1,2,3,5,8 …

Índice

1 Fórmula explícita2 Calculando números de Fibonacci

2.1 Algoritmo em Java

19/04/2011 Número de Fibonacci – Wikipédia, a enc…

pt.wikipedia.org/…/Número_de_Fibonacci 2/27

Generated by Foxit PDF Creator © Foxit Softwarehttp://www.foxitsoftware.com For evaluation only.

Page 3: Número de Fibonacci – Wikipédia, a enciclopédia livre

2.2 Algoritmo Recursivo em Java

2.3 Algoritmo recursivo eficiente em Java2.4 Algoritmo Recursivo em Scheme

2.5 Algoritmo Iterativo em Scheme

2.6 Algoritmo em ECMAScript / JavaScript2.7 Algoritmo recursivo em Python

2.8 Algoritmo eficiente em Python

2.9 Algoritmo em PHP2.10 Algoritmo em Perl

2.11 Algoritmo em C2.12 Algoritmo em Ruby

2.13 Algoritmo em Ruby sem Recursividade

2.14 Algoritmo em Erlang2.15 Algoritmo em Shell Script (Zsh)

2.16 Algoritmo em bc (comando Unix)

2.17 Algoritmo em Pascal2.18 Algoritmo em MATLAB

2.19 Algoritmo em Prompt Script (BAT)

2.20 Algoritmo em PROLOG2.21 Algoritmo em Tcl

2.22 Portugues estruturado

2.23 Algoritmo em COBOL2.24 Algoritmo em Visual Fox Pro

2.25 Algoritmo em C#2.26 Algoritmo em C# (modo com caixa de texto)

2.27 Algoritmo em C++

2.28 Algoritmo em Fortran 20032.29 Algoritmo em Haskell

2.30 Algoritmo em Visualg 2.0

2.31 Algoritmo em ASP2.32 Fórmula Excel

3 Aplicações

4 Generalizações5 Identidades

5.1 Prova da primeira identidade

5.2 Prova da segunda identidade5.3 Prova da terceira identidade

6 Número Tribonacci7 A Espiral

8 Repfigits

9 Referências10 Ligações externas

Fórmula explícita

19/04/2011 Número de Fibonacci – Wikipédia, a enc…

pt.wikipedia.org/…/Número_de_Fibonacci 3/27

Generated by Foxit PDF Creator © Foxit Softwarehttp://www.foxitsoftware.com For evaluation only.

Page 4: Número de Fibonacci – Wikipédia, a enciclopédia livre

Conforme mencionado por Johannes Kepler, a taxa de crescimento dos números de Fibonacci, que éF(n + 1) /F(n), tende à Proporção áurea, denominada φ. Esta é a raiz positiva da equação de segundo graux² − x − 1 = 0, então φ² = φ + 1. Se multiplicarmos ambos os lados por φ , teremos φ = φ + φ , então afunção φ é uma sequência de Fibonacci. É possível demonstrar que a raiz negativa da mesma equação, 1 − φ, temas mesmas propriedades, então as duas funções φ e (1 − φ) formam outra base para o espaço.

Ajustando os coeficientes para obter os valores iniciais adequados F(0) = 0 e F(1) = 1, temos a fórmula de Binet

Este resultado também pode ser derivado utilizando-se a técnica de gerar funções, ou a técnica de resolverrelações de multiplicação

Quando n tende a infinito, o segundo termo tende a zero, e os números de Fibonacci tendem à exponencial φ /√5.O segundo termo já começa pequeno o suficiente para que os números de Fibonacci possam ser obtidos usandosomente o primeiro termo arredondado para o inteiro mais próximo.

Calculando números de Fibonacci

Na prática não é conveniente calcular os números de Fibonacci usando potências da proporção áurea, a não serpara valores pequenos de n, já que os erros de arredondamento se acumulam e a precisão dos números de pontoflutuante normalmente não será suficiente.

A implementação direta da definição recursiva da sequência de Fibonacci também não é recomendável porque osmesmos valores são calculados muitas vezes (a não ser que a linguagem de programação guarde automaticamenteos valores calculados nas chamadas anteriores da mesma função com o mesmo argumento). Por esse motivo,normalmente calcula-se os números de Fibonacci "de baixo para cima", começando com os dois valores 0 e 1, edepois repetidamente substituindo-se o primeiro número pelo segundo, e o segundo número pela soma dos doisanteriores.

Para argumentos muito grandes, quando utiliza-se um computador bignum, é mais fácil calcular os números deFibonacci usando a seguinte equação matricial:

onde a potência de n é calculada elevando-se a matriz ao quadrado repetidas vezes.

Um exemplo de aplicação desta expressão matricial é na demonstração do teorema de Lamé sobre o algoritmo deEuclides para o cálculo do MDC. Veja por exemplo o capítulo Máximo divisor comum do Wikilivro de Teoria denúmeros.

A seguir, um algoritmo desenvolvido em Java, o qual imprime o número de termos da sequência, determinado pelavariável "x".

Algoritmo em Java

n n+2 n+1 n

n

n n

n

19/04/2011 Número de Fibonacci – Wikipédia, a enc…

pt.wikipedia.org/…/Número_de_Fibonacci 4/27

Generated by Foxit PDF Creator © Foxit Softwarehttp://www.foxitsoftware.com For evaluation only.

Page 5: Número de Fibonacci – Wikipédia, a enciclopédia livre

Representação da Série de Fibonacci

na Molle Antonelliana em Turim,

Itália.

Algoritmo Recursivo em Java

19/04/2011 Número de Fibonacci – Wikipédia, a enc…

pt.wikipedia.org/…/Número_de_Fibonacci 5/27

Generated by Foxit PDF Creator © Foxit Softwarehttp://www.foxitsoftware.com For evaluation only.

Page 6: Número de Fibonacci – Wikipédia, a enciclopédia livre

3 4

//Classe javapublic class Fibonacci {

public static int calcular(int n) { if (n == 0 || n == 1)

return n;

else return calcular(n - 1) + calcular(n - 2);

}} // Impressãopublic class Main {

public static void main(String[] args) { Fibonacci f = new Fibonacci();

for (int x = 1; x < 10; x++) {

int y = f.calcular(x); System.out.println("o Fibonacci de "+x+" é " } }}

Algoritmo recursivo eficiente em Java

Função que exibe recursivamente a sequência f(n).

{ fibCalc(20, 0, 1);} int fibCalc(int n, int a, int b) {

System.out.println(a); return (n == 0) ? a : fibCalc(--n, a + b, a);

}

Algoritmo Recursivo em Scheme

(define (fib n) (cond ((= n 0) 0) ((= n 1) 1) (else (+ (fib (- n 1)) (fib (- n 2))))))

19/04/2011 Número de Fibonacci – Wikipédia, a enc…

pt.wikipedia.org/…/Número_de_Fibonacci 6/27

Generated by Foxit PDF Creator © Foxit Softwarehttp://www.foxitsoftware.com For evaluation only.

Page 7: Número de Fibonacci – Wikipédia, a enciclopédia livre

Algoritmo Iterativo em Scheme

(define (fib n) (define (iter i p r) (if (= i n) r (iter (+ i 1) r (+ p r)))) (cond ((= n 0) 0) ((= n 1) 1) (else (iter 2 1 1))))

Algoritmo em ECMAScript / JavaScript

/* Algoritmo Recursivo da Sequência Fibonacci */function fibonacci(i) {

return i < 2 ? i : fibonacci(i - 1) + fibonacci(i - 2);}/* Chamando … */for(i = 1; i < 10; i++) {

alert(fibonacci(i));}

Algoritmo recursivo em Python

Solução clássica usando recursividade.

# Função recursivadef fibo(n):

if n < 2: return n

else:

return fibo(n-1) + fibo(n-2)

for i in range(10):

print fibo(i)

Algoritmo eficiente em Python

Solução em tempo linear com o uso de generators.

19/04/2011 Número de Fibonacci – Wikipédia, a enc…

pt.wikipedia.org/…/Número_de_Fibonacci 7/27

Generated by Foxit PDF Creator © Foxit Softwarehttp://www.foxitsoftware.com For evaluation only.

Page 8: Número de Fibonacci – Wikipédia, a enciclopédia livre

# Generatordef fib(n):

c, n1, n2 = 0, 0, 1 while c < n:

yield n1 n1, n2 = n2, n1 + n2 c += 1 # Calcular os 10 primeiros termosfor x in fib(10):

print x

Algoritmo em PHP

<?php/* Algoritmo Recursivo da Sequência Fibonacci */function fibonacci($i) { return $i < 2 ? $i : fibonacci($i-1) + fibonacci($i-2);}/* Chamando … */for($i=1;$i<10;$i++) { echo fibonacci($i)."\r\n";

}

?>

Uma forma extremamente mais rápida

19/04/2011 Número de Fibonacci – Wikipédia, a enc…

pt.wikipedia.org/…/Número_de_Fibonacci 8/27

Generated by Foxit PDF Creator © Foxit Softwarehttp://www.foxitsoftware.com For evaluation only.

Page 9: Número de Fibonacci – Wikipédia, a enciclopédia livre

<?php

function fibonacci ($number=10, $returnLast = false)

{ $start = array(); $start[1] = 1; $start[2] = 1; if ( $number == 1 ) { unset($start[2]); } for ( $i = 3; $i <= $number; $i ++ ) { array_push($start, $start[$i - 2] + $start[$i - 1]); } return $returnLast === true ? end($start) : $start;}/* Para utilizar … */echo "<pre>";print_r(fibonacci(10));//echo "<pre>";print_r(fibonacci(10,true));

?>

Algoritmo em Perl

# !/usr/bin/perluse strict;

sub fibo {

return $_[0] < 2 ? $_[0] : fibo($_[0]-1) + fibo($_[0]-2);}for (1..10){ print fibo($_)."\n";

}

Modo mais eficiente :

19/04/2011 Número de Fibonacci – Wikipédia, a enc…

pt.wikipedia.org/…/Número_de_Fibonacci 9/27

Generated by Foxit PDF Creator © Foxit Softwarehttp://www.foxitsoftware.com For evaluation only.

Page 10: Número de Fibonacci – Wikipédia, a enciclopédia livre

3 4

# !/usr/bin/perluse strict;

my ($a,$b)=(1,2);print "$a\n$b\n";

for(1..100) { ($a,$b) = ($b,$a+$b); print "$b\n"

}

Algoritmo em C

#include <stdio.h>#include <stdlib.h>// protótipo da funçãoint fibonacci(int x);int main(int argc, char *argv[]){ int a, i; printf("Informe a Sequencia de Fibonacci Desejada: "); scanf("%d", &a); for(i=0; i<=a-1; i++){ printf("O Fibonacci do Numero: %d e: %d\n", i+1, fibonacci

} system("PAUSE"); return 0;} // função com retorno e entrada de parametro por valores : o,1,4,9,6 int fibonacci(int x){ if ((x==1)||(x==2)){ return 1; }else{ return fibonacci(x-1)+fibonacci(x-2); } }

Método Alternativo.

19/04/2011 Número de Fibonacci – Wikipédia, a enc…

pt.wikipedia.org/…/Número_de_Fibonacci 10/27

Generated by Foxit PDF Creator © Foxit Softwarehttp://www.foxitsoftware.com For evaluation only.

Page 11: Número de Fibonacci – Wikipédia, a enciclopédia livre

3 4

#include <stdio.h>#include <stdlib.h> int main() { int n_anterior1=0,n_anterior2=1,n=0; for(int i = 0;i<15;i++){ printf("%d ",n); n = n_anterior1 + n_anterior2; n_anterior2=n_anterior1; n_anterior1=n; } printf("\n");

system("PAUSE"); return 0;}

Algoritmo em Ruby

# Algoritmo Recursivo da Sequência Fibonaccidef fib(n) return n if n<2 fib(n-1)+fib(n-2)end # Chamando…for i in (1..10) puts fib(i)

end # Ou com memorizaçãofib = Hash.new{|hash, n| hash[n] = (n < 2) ? n : hash[n - 1] + hash

(1..100).each do |i| puts fib[i]

end

Algoritmo em Ruby sem Recursividade

19/04/2011 Número de Fibonacci – Wikipédia, a enc…

pt.wikipedia.org/…/Número_de_Fibonacci 11/27

Generated by Foxit PDF Creator © Foxit Softwarehttp://www.foxitsoftware.com For evaluation only.

Page 12: Número de Fibonacci – Wikipédia, a enciclopédia livre

3 4

#utiliza duas variáveis para compor a sequênciaa,b = 0,1

for i in (0..10) puts a

a,b = b,a+b

end

Algoritmo em Erlang

fib(0) -> 0 ;fib(1) -> 1 ;fib(N) when N > 0 -> fib(N-1) + fib(N-2). %% Tail recursive fibo3(N) -> {Fib, _} = fibo3(N, {1, 1}, {0, 1}), Fib. fibo3(0, _, Pair) -> Pair;fibo3(N, {Fib1, Fib2}, Pair) when N rem 2 == 0 -> SquareFib1 = Fib1*Fib1, fibo3(N div 2, {2*Fib1*Fib2 - SquareFib1, SquareFib1 + Fib2*Fib2fibo3(N, {FibA1, FibA2}=Pair, {FibB1, FibB2}) -> fibo3(N-1, Pair, {FibA1*FibB2 + FibB1*(FibA2 - FibA1), FibA1*FibB1

Algoritmo em Shell Script (Zsh)

19/04/2011 Número de Fibonacci – Wikipédia, a enc…

pt.wikipedia.org/…/Número_de_Fibonacci 12/27

Generated by Foxit PDF Creator © Foxit Softwarehttp://www.foxitsoftware.com For evaluation only.

Page 13: Número de Fibonacci – Wikipédia, a enciclopédia livre

fibonacci() { local a c

local -F1 b

a=0 ; b=1 print $a repeat $1 do print "${b%.*}" c=$a a=$b ((b = c + b)) done

} # Chamando…fibonacci 10

Algoritmo em bc (comando Unix)

define void fibonacci(valor)

{

auto x, y, z, i;

x = 0;

y = 1;

x;

while (i++ < valor) {

y;

z = x;

x = y;

y = z + y;

}

}

Algoritmo em Pascal

19/04/2011 Número de Fibonacci – Wikipédia, a enc…

pt.wikipedia.org/…/Número_de_Fibonacci 13/27

Generated by Foxit PDF Creator © Foxit Softwarehttp://www.foxitsoftware.com For evaluation only.

Page 14: Número de Fibonacci – Wikipédia, a enciclopédia livre

program fibonacci (input,output);

var i,n,ni,ni1,ni2:longint;

begin writeln; writeln ('NÚMEROS DE FIBONACCI'); writeln; write('Quantos termos de Fibonacci você quer calcular? '); read(n); ni:=1; ni1:=1; ni2:=0; for i:=1 to n do begin write(ni,' '); ni:=ni1+ni2; ni2:=ni1; ni1:=ni; end;

end.

Algoritmo em MATLAB

a=0;b=1;c=a+b;N=0;while N⇐0 N=input('Defina limite da sequência fibonacci: ');endwhile c⇐N disp(num2str(c)) a=b; b=c; c=a+b;end

Algoritmo em Prompt Script (BAT)

19/04/2011 Número de Fibonacci – Wikipédia, a enc…

pt.wikipedia.org/…/Número_de_Fibonacci 14/27

Generated by Foxit PDF Creator © Foxit Softwarehttp://www.foxitsoftware.com For evaluation only.

Page 15: Número de Fibonacci – Wikipédia, a enciclopédia livre

3 4

@echo offsetlocal ENABLEDELAYEDEXPANSIONset/an=-1set/af0=0set/af1=1

:loopset/an+=1set/am=%n%-1set/al=%m%-1set /a f%n%=!f%m%!+!f%l%!echo F(%n%)=!f%n%!pause&goto loop

Algoritmo em PROLOG

fib(1, 1).fib(2, 1).fib(X, Y):- X > 1, X1 is X - 1, X2 is X - 2, fib(X1, Z), fib(X2, W

Algoritmo em Tcl

proc fib {n} {

if {$n < "2"} { return $n

} return [expr [fib [expr $n - 1]] + [fib [expr $n - 2]]]

} # Chamandofib 10

Portugues estruturado

19/04/2011 Número de Fibonacci – Wikipédia, a enc…

pt.wikipedia.org/…/Número_de_Fibonacci 15/27

Generated by Foxit PDF Creator © Foxit Softwarehttp://www.foxitsoftware.com For evaluation only.

Page 16: Número de Fibonacci – Wikipédia, a enciclopédia livre

3 4

algoritmo "série de fibonnacci"

// autor: marquin.freitas - undb -ma 1º período 2009

// função: calcula a soma de todos os números da série de fibonacci e mostrando a série perfeitamente

var

fibo:inteiro

n0,n1,n2:inteiro

I:inteiro

soma:inteiro

aux: caracter

inicio

n0:=0

enquanto n0<2 faca

escreva("quantos num.? [ n > 1 ]:")

leia(n0)

se n0<2 então

escreval(" digite novamente [pressione enter]")

leia(aux)

limpatela

fimse

fimenquanto

escreva("1º numero da seq.: ")

leia(n1)

escreva("2º numero da seq.: ")

leia(n2)

escreva(" ",n1," ",n2," ") // aqui ele vai mostrar os dois primeiros números que foram digitados

soma:=n1+n2

para I de 1 ate n0 faca

fibo:=n1+n2 // o 3° número [fibo] é a soma dos dois primeiros

escreva(fibo," ")

soma:=soma+fibo// aqui vai acumular a soma de todos os números

// ele só escreverá o valor de 'fibo' a cada volta do para, por na sequencia de fibonacci

// não aparece valores repetidos apartir do 3 e sim um novo número resultante da soma dos dois últimos valores

//***** método da bolha *******

// a partir do 3° é atribuído ao 1° número o valor do 2°

//e o 2° passa a ser o 3° tendo como seu valor, no caso, fibo.

n1:=n2

n2:=fibo

fimpara

escreval

escreval("A soma de todos os números é igual a: ", soma)

fimalgoritmo

Algoritmo em COBOL

19/04/2011 Número de Fibonacci – Wikipédia, a enc…

pt.wikipedia.org/…/Número_de_Fibonacci 16/27

Generated by Foxit PDF Creator © Foxit Softwarehttp://www.foxitsoftware.com For evaluation only.

Page 17: Número de Fibonacci – Wikipédia, a enciclopédia livre

*---------------------- 300-FIBONACCI SECTION.

*---------------------- IF 999E-REG EQUAL 0

MOVE PNULT TO FIB ELSE IF 999E-REG EQUAL 1

MOVE ULT TO FIB ELSE MOVE 999E-REG TO GDA-POSICAO PERFORM 400-CALCULA UNTIL GDA-POSICAO EQUAL 1.

*---------------------------------------------------------------***-------------------- 400-CALCULA SECTION.

*-------------------- COMPUTE FIB = ULT + PNULT.

MOVE ULT TO PNULT. MOVE FIB TO ULT.

SUBTRACT 1 FROM GDA-POSICAO.

*---------------------------------------------------------------*

Algoritmo em Visual Fox Pro

19/04/2011 Número de Fibonacci – Wikipédia, a enc…

pt.wikipedia.org/…/Número_de_Fibonacci 17/27

Generated by Foxit PDF Creator © Foxit Softwarehttp://www.foxitsoftware.com For evaluation only.

Page 18: Número de Fibonacci – Wikipédia, a enciclopédia livre

? Fibonacci(22) FUNCTION Fibonacci (tnNumeros) LOCAL lnNumero, lnNumero1, lnNumero2, lnI, lcRetorno lnI = 1 lcRetorno = "" lnNumero = 1 lnNumero1 = 1 lnNumero2 = 0 FOR lnI = 1 TO tnNumeros STEP 1 lcRetorno = lcRetorno + " " + TRANSFORM(lnNumero) lnNumero = lnNumero1 + lnNumero2 lnNumero2 = lnNumero1 lnNumero1 = lnNumero ENDFOR RETURN lcRetornoENDFUNC

Algoritmo em C#

public String Fibonacci(int numeros){ String retorno = ""; int numero = 1; int numero1 = 1; int numero2 = 0; for(int i=0; i < numeros; i++) { retorno = retorno + " " + numero.ToString(); numero = numero1 + numero2; numero2 = numero1; numero1 = numero; } return retorno;}

19/04/2011 Número de Fibonacci – Wikipédia, a enc…

pt.wikipedia.org/…/Número_de_Fibonacci 18/27

Generated by Foxit PDF Creator © Foxit Softwarehttp://www.foxitsoftware.com For evaluation only.

Page 19: Número de Fibonacci – Wikipédia, a enciclopédia livre

Algoritmo em C# (modo com caixa de texto)

public void fibonacci(object s, EventArgs e){ int x; try { x = int.Parse(xfb.Text); int r = 0; int n1 = 1; int n2 = 1; int nn = 0; for (int i = 0; i < x; i++) { r = n1; n1 = n2 + nn; nn = n2; n2 = n1; } rfb.Text = r.ToString(); if (x > 46) { xfb.Text = "46"; MessageBox.Show("Insira um nº inferior a 47."); } } catch (FormatException) { xfb.ResetText(); }}

Algoritmo em C++

19/04/2011 Número de Fibonacci – Wikipédia, a enc…

pt.wikipedia.org/…/Número_de_Fibonacci 19/27

Generated by Foxit PDF Creator © Foxit Softwarehttp://www.foxitsoftware.com For evaluation only.

Page 20: Número de Fibonacci – Wikipédia, a enciclopédia livre

3 4

#include <iostream>using namespace std;int Fibonacci(int);int main(){ int quantidade; cout << "Deseja imprimir quantos numeros?"; cin >> quantidade; for(int x = 1; x < quantidade; x++) cout << "O " << x << "# numero de Fibonacci é: " << Fibonacci

} int Fibonacci(int number){ if(number == 0 || number == 1) return number; else return Fibonacci(number - 1) + Fibonacci(number - 2);}

Algoritmo em Fortran 2003

PROGRAM FIBONACCIIMPLICIT NONEINTEGER, DIMENSION (1:1000) :: FIB INTEGER :: I,NWRITE(*,*) "SEQUENCIA DE FIBONACCI COM N ELEMENTOS. INFORME N"READ (*,*) NFIB(1) = 1FIB(2) = 1WRITE(*,*) !pular linhaWRITE(*,*) FIB(1)WRITE(*,*) FIB(2)DO I = 3,N FIB(I) = FIB(I-1) + FIB(I-2) WRITE(*,*) FIB(I)END DOPAUSEEND PROGRAM FIBONACCI

Algoritmo em Haskell

Versão mais lenta.

19/04/2011 Número de Fibonacci – Wikipédia, a enc…

pt.wikipedia.org/…/Número_de_Fibonacci 20/27

Generated by Foxit PDF Creator © Foxit Softwarehttp://www.foxitsoftware.com For evaluation only.

Page 21: Número de Fibonacci – Wikipédia, a enciclopédia livre

fib n |n==0 = 0 |n==1 = 1

|otherwise = fib(n-1) + fib(n-2)

Versão mais rápida.

fibs n = fibGen 0 1 nfibGen a b n = for n of 0 -> a

n -> fibGen b (a + b) (n - 1)

Algoritmo em Visualg 2.0

algoritmo "Sequenciador de Números Fibonacci" // Função : Gerar sequências de Fibonacci // Autor : LucasVinícius Santos da Costa // Data : 02/10/2010 var N1:inteiro //Primeiro termo da série que interage com N2 naobtenção dos outros termos. N2:inteiro //Segundo termo da série que interage com N1 na obtenção dos outrostermos. N:inteiro //resultado da interação entre N1 e N2. T:inteiro //Permite ao usuário a definição da quantidadede termos da sequência. C:inteiro //Contador que permite a exibição dos T termos requeridos pelo usuário.S:inteiro //Efetua a soma dos T termos requeridos pelo usuário. inicio C<-0 escreval("Entre com o número determos desejados para a sequenciação") leia(T) N1<-0 N2<-1 S<-(N1+N2) escreval(N1) escreval(N2)

repita

N<-N1+N2 N1<-N2 N2<-N escreval(N) S<-(S+N) C<-C+1

ate C=(T-2)

fimrepita

escreval("Soma dos termos: ",S) fimalgoritmo

===Dev-C++===

//Autor: RenatoSantos - CEUMA - 3º período.

1. include <stdio.h>2. include <conio.h>

int fib(int c) {

19/04/2011 Número de Fibonacci – Wikipédia, a enc…

pt.wikipedia.org/…/Número_de_Fibonacci 21/27

Generated by Foxit PDF Creator © Foxit Softwarehttp://www.foxitsoftware.com For evaluation only.

Page 22: Número de Fibonacci – Wikipédia, a enciclopédia livre

//1,1,2,3,5,8,13,21,...

int resp;

int a1,a2,t;

a1=1;

a2=1;

for(t=3;t<=c;t++)

{resp=a1+a2;

a1=a2;

a2=resp;}

return resp;}

main() {

int n,y;

printf("Digite um numero : ");

scanf("%d",&n);

y = fib(n);

printf("FIB = %d\n",y);

system ("pause");}

Algoritmo em ASP

Mostra todos os 75 primeiros resultados.

<%DIM fibo

REDIM fibo(75)

for f = 1 to 75 if f = 1 then fibo(f) = 0

else if f = 2 then fibo(2) = 1

else fibo(f) = fibo(f-1) + fibo(f-2) end if end if response.write f & ": " & fibo(f) & "<br />"

next

%>

Fórmula Excel

19/04/2011 Número de Fibonacci – Wikipédia, a enc…

pt.wikipedia.org/…/Número_de_Fibonacci 22/27

Generated by Foxit PDF Creator © Foxit Softwarehttp://www.foxitsoftware.com For evaluation only.

Page 23: Número de Fibonacci – Wikipédia, a enciclopédia livre

Exemplo de sons Fibonacci

Célula A1 =0

Célula B1 =1

Célula C1 =A1+B1

Célula D1 =B1+C1 //arraste a célula para copiar a fórmula ao longo da linha

Aplicações

Os números de Fibonacci são importantes para a análise em tempo real do algoritmo euclidiano, para determinar omáximo divisor comum de dois números inteiros.

Matiyasevich mostrou que os números de Fibonacci podem ser definidos por uma Equação diofantina, o que olevou à solução original do Décimo Problema de Hilbert.

Os números de Fibonacci aparecem na fórmula das diagonais de um triângulo de Pascal (veja coeficiente binomial).

Um uso interessante da sequência de Fibonacci é na conversão de milhas para quilômetros. Por exemplo, parasaber aproximadamente a quantos quilômetros 5 milhas correspondem, pega-se o número de Fibonaccicorrespondendo ao número de milhas (5) e olha-se para o número seguinte (8). 5 milhas são aproximadamente 8quilômetros. Esse método funciona porque, por coincidência, o fator de conversão entre milhas e quilômetros(1.609) é próximo de φ (1.618) (obviamente ele só é útil para aproximações bem grosseiras: além do factor deconversão ser diferente de φ, a série converge para φ).

Em música os números de Fibonacci são utilizados para a afinação, talcomo nas artes visuais, determinar proporções entre elementos formais.Um exemplo é a Música para Cordas, Percussão e Celesta de BélaBartók.

Le Corbusier usou a sequência de Fibonacci na construção do seumodulor, um sistema de proporções baseadas no corpo humano e aplicadas ao projeto de arquitetura.

Em The Wave Principal, Elliot defende a ideia que as flutuações do mercado seguem um padrão de crescimento edecrescimento que pode ser analisado segundo os números de Fibonacci, uma vez determinada a escala deobservação. Defende que as relações entre picos e vales do gráfico da flutuação de bolsa tendem a seguir razõesnuméricas aproximadas das razões de dois números consecutivos da sequência de Fibonacci.

19/04/2011 Número de Fibonacci – Wikipédia, a enc…

pt.wikipedia.org/…/Número_de_Fibonacci 23/27

Generated by Foxit PDF Creator © Foxit Softwarehttp://www.foxitsoftware.com For evaluation only.

Page 24: Número de Fibonacci – Wikipédia, a enciclopédia livre

Teorias mais recentes, defendem que é possível encontrar relações “de ouro” entre os pontos de pico e os de vale,como no gráfico abaixo:

Se tomarmos o valor entre o início do ciclo e o primeiro pico, e o compararmos com o valor entre este pico e opico máximo, encontraremos também o número de ouro. O ciclo, naturalmente, pode estar invertido, e osmomentos de pico podem se tornar momentos de vale, e vice-versa.

Generalizações

Uma generalização da sequência de Fibonacci são as Sequências de Lucas. Um tipo pode ser definido assim:

U(0) = 0U(1) = 1

U(n+2) = PU(n+1) − QU(n)

onde a sequência normal de Fibonacci é o caso especial de P = 1 e Q = -1. Outro tipo de sequência de Lucascomeça com V(0) = 2, V(1) = P. Tais sequências têm aplicações na Teoria de Números e na prova que um dadonúmero é primo (primalidade).

Os polinômios de Fibonacci são outra generalização dos números de Fibonacci.

Identidades

F(n + 1) = F(n) + F(n − 1)

19/04/2011 Número de Fibonacci – Wikipédia, a enc…

pt.wikipedia.org/…/Número_de_Fibonacci 24/27

Generated by Foxit PDF Creator © Foxit Softwarehttp://www.foxitsoftware.com For evaluation only.

Page 25: Número de Fibonacci – Wikipédia, a enciclopédia livre

F(0) + F(1) + F(2) + … + F(n) = F(n + 2) − 1

F(1) + 2 F(2) + 3 F(3) + … + n F(n) = n F(n + 2) − F(n + 3) + 2

Podemos provar essas identidades usando diferentes métodos. Mas, entretanto, nós queremos demonstrar umaelegante prova para cada um de seus usos aqui. Particularmente, F(n) podem ser interpretados como o número deformas de adicionar 1's e 2's até n − 1, convencionando-se que F(0) = 0, significando que nenhuma soma iráadicionar até -1, e que F(1) = 1, significando que a soma 0 será "adicionada" até 0. Aqui a ordem dos númerosimporta. Por exemplo, 1 + 2 e 2 + 1 são consideradas duas diferentes somas e são contadas duas vezes.

Prova da primeira identidade

Sem perda de generalidade, podemos assumir n ≥ 1. Então F(n + 1) conta o número de formas de somar 1's e 2'saté n.

Quando a primeira parcela é 1, há F(n) formas de completar a contagem para n − 1; quando a primeira parcela é2, há F(n − 1) formas de completar a contagem para n − 2. Portanto, no total, há F(n) + F(n − 1) formas decompletar a contagem para n.

ohlé?

Prova da segunda identidade

Contamos o número de formas de somar 1's e 2's até n + 1 de forma que pelo menos uma das parcelas é 2.

Como antes, há F(n + 2) formas de somar 1's e 2's até n + 1 quando n ≥ 0. Já que há apenas uma soma n + 1 quenão usa nenhum 2, a saber 1 + … + 1 (n + 1 termos), subtraímos 1 de F(n + 2).

Equivalentemente, podemos considerar a primeira ocorrência de 2 como uma parcela.

Se, em uma soma, a primeira parcela é 2, então há F(n) formas de completar a contagem para n − 1. Se a segundaparcela é 2, mas a primeira é 1, então há F(n − 1) formas de completar a contagem para n − 2. Continuando esteraciocínio iremos chegar à (n + 1)-ésima parcela. Se é 2, mas todas as n parcelas anteriores são 1's, então há F(0)formas de completar a contagem para 0. Se uma soma contém 2 como uma parcela, a primeira ocorrência de talparcela deve tomar lugar entre a primeira e a (n + 1)-ésima posição. Portanto F(n) + F(n − 1) + … + F(0) dá acontagem desejada.

Prova da terceira identidade

Essa identidade pode ser estabelecida em duas fases. Primeiro, contamos o número de formas de somar 1's e 2'saté -1, 0, …, ou n + 1 tal que pelo menos uma das parcelas seja 2.

Pela nossa primeira igualdade, há F(n + 2) − 1 formas de somar até n + 1; F(n + 1) − 1 formas de somar até n;…; e, finalmente, F(2) − 1 formas de somar até 1.

Como F(1) − 1 = F(0) = 0 , podemos adicionar todos as somas n + 1 e aplicar a segunda igualdade novamentepara obter: [F(n + 2) − 1] + [F(n + 1) − 1] + … + [F(2) − 1]

= [F(n + 2) − 1] + [F(n + 1) − 1] + … + [F(2) − 1] + [F(1) − 1] + F(0)

19/04/2011 Número de Fibonacci – Wikipédia, a enc…

pt.wikipedia.org/…/Número_de_Fibonacci 25/27

Generated by Foxit PDF Creator © Foxit Softwarehttp://www.foxitsoftware.com For evaluation only.

Page 26: Número de Fibonacci – Wikipédia, a enciclopédia livre

= F(n + 2) + [F(n + 1) + … + F(1) + F(0)] − (n + 2)

= F(n + 2) + F(n + 3) − (n + 2).

Por outro lado , observamos a partir da segunda igualdadee que existem

F(0) + F(1) + … + F(n − 1) + F(n) meios somando com n + 1;

F(0) + F(1) + … + F(n − 1) meios somando com n;

……

F(0) meio somando com -1.

Somando todas as somas n + 1 , vemos que há

(n + 1) F(0) + n F(1) + … + F(n) formas de somar até -1, 0, …, ou n + 1.

Já que os dois métodos de contagem se referem ao mesmo número , temos : (n + 1) F(0) + n F(1) + … + F(n) =F(n + 2) + F(n + 3) − (n + 2)

Finalmente, completamos a prova subtraindo a igualdade acima de n + 1 vezes a segunda igualdade.

Número Tribonacci

Um número Tribonacci assemelha-se a um número de Fibonacci, mas em vez de começarmos com dois termospré-definidos, a sequência é iniciada com três termos pré-determinados, e cada termo posterior é a soma dos trêstermos precedentes. Os primeiros números de uma pequena sequência Tribonacci são:

1, 1, 2, 4, 7, 13, 24, 44, 81, 149, 274, 504, 927, 1705, 3136, 5768, 10609, 19513, 35890, 66012, 121415,223317, etc.

A Espiral

Na espiral formada pela folha de umabromélia, pode ser percebida a sequênciade Fibonacci, através da composição dequadrados com arestas de medidasproporcionais aos elementos da sequência,por exemplo: 1, 1, 2, 3, 5, 8, 13… ,tendentes à razão áurea. Este mesmo tipode espiral também pode ser percebida naconcha do Nautilus marinho.

Repfigits

Um repfigit ou número de Keith é umnúmero inteiro, superior a 9, tal que os seusdígitos, ao começar uma sequência deFibonacci, alcançam posteriormente o

[5]

19/04/2011 Número de Fibonacci – Wikipédia, a enc…

pt.wikipedia.org/…/Número_de_Fibonacci 26/27

Generated by Foxit PDF Creator © Foxit Softwarehttp://www.foxitsoftware.com For evaluation only.

Page 27: Número de Fibonacci – Wikipédia, a enciclopédia livre

referido número. Um exemplo é 47, porque a sequência de Fibonacci que começa com 4 e 7 (4, 7, 11, 18, 29,47) alcança o 47. Outro exemplo é 197: 1+9+7= 17, 9+7+17= 33, 7+17+33= 57, 17+33+57= 107,33+57+107= 197.

Um repfigit pode ser uma sequência de Tribonacci se houver três dígitos no número, e de Tetranacci se o númerotiver quatro dígitos, etc.

Alguns Números de Keith conhecidos: 14, 19, 28, 47, 61, 75, 197, 742, 1104, 1537, 2208, 2580, 3684, 4788,7385, 7647, 7909, 31331, 34285…

Referências

1. ↑ http://www.quipus.it/english/Andean%20Calculators.pdf2. ↑ S. Douady and Y. Couder (1996). "Phyllotaxis as a Dynamical Self Organizing Process

(http://www.math.ntnu.no/~jarlet/Douady96.pdf) " (PDF). Journal of Theoretical Biology 178 (178): 255–274.DOI:10.1006/jtbi.1996.0026 (http://dx.doi.org/10.1006/jtbi.1996.0026) .

3. ↑ JONES, Judy. An Incomplete Education. [S.l.]: Ballantine Books, 2006.4. ↑ A. Brousseau (1969). "Fibonacci Statistics in Conifers". Fibonacci Quarterly (7): 525–532.5. ↑ A000073 (http://www.research.att.com/projects/OEIS?Anum=A000073) OEIS

Ligações externas

The Golden Section: Phi (http://www.mcs.surrey.ac.uk/Personal/R.Knott/Fibonacci/phi.html)Computing Fibonacci numbers on a Turing Machine (http://semillon.wpi.edu/~aofa/AofA/msg00012.html)

The Fibonacci Quarterly (http://www.engineering.sdstate.edu/~fib/) — um jornal acadêmico voltado ao

estudo dos números de FibonacciAlgoritmo de Fibonacci em O(lg n) (http://algoritmo.110mb.com/index.php?

p=artigo.php&a=Algoritmos/Numericos/fib-lgn.html)

Obtida de "http://pt.wikipedia.org/wiki/N%C3%BAmero_de_Fibonacci"

Categorias: Inteiros | Sucessões

Esta página foi modificada pela última vez às 19h36min de 14 de abril de 2011.

Este texto é disponibilizado nos termos da licença Atribuição - Partilha nos Mesmos Termos 3.0 NãoAdaptada (CC BY-SA 3.0); pode estar sujeito a condições adicionais. Consulte as condições de uso para

mais detalhes.

19/04/2011 Número de Fibonacci – Wikipédia, a enc…

pt.wikipedia.org/…/Número_de_Fibonacci 27/27

Generated by Foxit PDF Creator © Foxit Softwarehttp://www.foxitsoftware.com For evaluation only.