Inscription / Connexion Nouveau Sujet
Niveau autre
Partager :

suite de Fibonacci

Posté par
aurelie231
16-03-08 à 17:31

Bonjour,
pourriez vous m'aider svp ?

On définit la suite de Fibonacci par U1 = 1, U2 = 1 et Un+2 = Un+1 + Un pour n>=1. Ecrire une fonction Scilab qui calcule Un (en fonction de n).

Voilà,
merci d'avance
A+

Posté par
gui_tou
re : suite de Fibonacci 16-03-08 à 17:34

Salut

De préférence une procédure récursive ?

Posté par
aurelie231
re : suite de Fibonacci 16-03-08 à 17:45

J'ai fais quelquechose, vous pouvez regarder ?

function [Un] = fibonacci(n)
if n<=2 then Un=1
else
Un = Un-1 + Un-2
end
endfunction

Posté par
gui_tou
re : suite de Fibonacci 16-03-08 à 17:45

En maple, un programme récursif tient en qq lignes :

fibo:=proc(n)

    if n=1
           then 1
      elif n=2
           then 1
      elif n<1 then print(`n>1 stp`)
     else fibo(n-1)+fibo(n-2)
    fi:
end:


soit :

Citation :
fibo:=proc(n) option remember:
if n=1 then 1 elif n=2 then 1 elif n<1 then print(`n>1 stp`) else fibo(n-1)+fibo(n-2) fi:
end:


Posté par
gui_tou
re : suite de Fibonacci 16-03-08 à 17:51

Vers le milieu :

Posté par
aurelie231
re : suite de Fibonacci 16-03-08 à 17:56

c'est un peu ce que j'ai écrit...
J'en ai une autre mais là je n'y arrive vraiment pas...

On définit la suite (Um,n) par :
Um,0 = m
Um,n+1 = (Um,n) /2 si Um,n est pair
       = ((3Um,n) +1) /2 si Um,n est impair

Ecrire une fonction Scilab qui calcule Un en fonction de n et m.
Si vous pouvez m'aider...
Merci d'avance
A+

Posté par
gui_tou
re : suite de Fibonacci 16-03-08 à 17:59

sûre que c'est divisé par 2 pour n impair ?

Posté par
aurelie231
re : suite de Fibonacci 16-03-08 à 18:00

b1 oui, c'est mon énoncé...

Posté par
gui_tou
re : suite de Fibonacci 16-03-08 à 18:05

Oui non je dis ça parce que c'est pas au mot près la suite de Syracuse mais une variante ^^ ()

Je cherche

Posté par
aurelie231
re : suite de Fibonacci 16-03-08 à 18:07

merci

Posté par
gui_tou
re : suite de Fibonacci 16-03-08 à 18:20

syra:=proc(m) option remember:
u[0]:=m:
k:=0:
while u[k]>2 do
    if floor(u[k]/2)=u[k]/2
        then u[k+1]:=u[k]/2
      else u[k+1]:=(3*u[k]+1)/2
    fi:
   print(u[k]):k:=k+1:
od:
end:

sachant que dès que le nombre 2 apparaît, il n'y a plus que 2 et 4 qui s'enchaînent.

Posté par
gui_tou
re : suite de Fibonacci 16-03-08 à 18:29

syra:=proc(m) option remember:                       nom du programme, qui demande m pour tourner
u[0]:=m:                                              rentre m dans la valeur u0
k:=0:                                                 initialise k à 0
while u[k]>2 do                                                     tant que uk est >2 le prog tourne
    if floor(u[k]/2)=u[k]/2                            si uk est pair, alors la partie entière de uk/2 est elle-même
        then u[k+1]:=u[k]/2
      else u[k+1]:=(3*u[k]+1)/2
    fi:                                               fin du if
   print(u[k]):k:=k+1:                                 affiche uk et incrémente de 1 la valeur de k
od:                                               fin du while
end:                                          fin de la procédure

Posté par
aurelie231
re : suite de Fibonacci 16-03-08 à 18:35

je ne comprends pas vraiment...
on ne peut pas la faire en écrivant
function[...] = ...
if....(quand vous mettez u[0]:=m...c'est l'initialisation ?)
while...(ici je ne comprends plus)

Posté par
aurelie231
re : suite de Fibonacci 16-03-08 à 18:36

le "k" c'est m,n ?

Posté par
gui_tou
re : suite de Fibonacci 16-03-08 à 18:36

Là je l'ai fait en maple, je ne connais pas le langage de matlab

Mais dans les grandes lignes, ça doit être la même chose.

Posté par
gui_tou
re : suite de Fibonacci 16-03-08 à 18:39

syra:=proc(m,n) option remember:
u[0]:=m:
for k from 0 ro n do
    if floor(u[k]/2)=u[k]/2
        then u[k+1]:=u[k]/2
      else u[k+1]:=(3*u[k]+1)/2
    fi:
   print(u[k]):
od:
end:

-------------

syra(5,10);
                                  5


                                  8


                                  4


                                  2


                                  1


                                  2


                                  1


                                  2


                                  1


                                  2


                                  1

Posté par
aurelie231
re : suite de Fibonacci 16-03-08 à 18:41

je vais y réfléchir...
merci pour votre aide.
Bonne soirée

Posté par
gui_tou
re : suite de Fibonacci 16-03-08 à 18:41

Pardon, le message est parti.

Je viens de relire ce que tu demandes. Voici le code Maple :

Citation :
syra:=proc(m,n) option remember:
u[0]:=m:
for k from 0 to n do
    if floor(u[k]/2)=u[k]/2
        then u[k+1]:=u[k]/2
      else u[k+1]:=(3*u[k]+1)/2
    fi:
   print(u[k]):
od:
end:

-------------

syra(5,10);
                                  5


                                  8


                                  4


                                  2


                                  1


                                  2


                                  1


                                  2


                                  1


                                  2


                                  1

Posté par
gui_tou
re : suite de Fibonacci 16-03-08 à 18:45

au bout d'un moment (n suffisament grand), il n'y a plus que des 1 et des 2

Bonne soirée



Vous devez être membre accéder à ce service...

Pas encore inscrit ?

1 compte par personne, multi-compte interdit !

Ou identifiez-vous :


Rester sur la page

Inscription gratuite

Fiches en rapport

parmi 1675 fiches de maths

Désolé, votre version d'Internet Explorer est plus que périmée ! Merci de le mettre à jour ou de télécharger Firefox ou Google Chrome pour utiliser le site. Votre ordinateur vous remerciera !