Suite de Cantor avec matlab

Discutez d'informatique ici !
houba
Messages: 3
Enregistré le: 23 Avr 2013, 09:32

suite de Cantor avec matlab

par houba » 08 Mai 2013, 12:03

salut à tous
je suis entrain de programmer la réponse optique d'une structure quasi-périodique basée sur la suite de Cantor ( poussières de Cantor)!
j'arrive pas à faire un programme bien organisé
LA SUITE étant comme suit:
H
HBH
HBH BBB HBH
HBH BBB HBH BBB BBB BBB HBH BBB HBH
.
.
.
.
Ainsi de suite!!

j'ai définie :

Code: Tout sélectionner
j_Iter=5;     F1='BBB';     F2='HBH'; for e=2:j_Iter+1    if e==j_Iter+1    break    end     eval(sprintf('F%d=strcat(F%d,F%d,F%d )',e+1,e-1,1,e-1));   end


mais ça ne me donne pas la suite de cantor!!!!
:cry:



LeJeu
Membre Irrationnel
Messages: 1141
Enregistré le: 24 Jan 2010, 22:52

par LeJeu » 09 Mai 2013, 19:08

houba a écrit:salut à tous
je suis entrain de programmer la réponse optique d'une structure quasi-périodique basée sur la suite de Cantor ( poussières de Cantor)!
j'arrive pas à faire un programme bien organisé
LA SUITE étant comme suit:
H
HBH
HBH BBB HBH
HBH BBB HBH BBB BBB BBB HBH BBB HBH
.
:


Salut,

Je pense que tu n'échappes pas à l'utilisation d'un fonction récursive
ou à chaque 'tour' tu remplaces
H par HBH
et B par BBB

je te propose d'écrire la fonction cantor(level) telle que
cantor ( 1) imprime H
cantor ( 2) impime HBH
.....
je créé un deuxieme fonction recurs( lettre, level)
qui développe une lettre sur 'level' niveau

donc
recurs(H, 1) ->H
recurs(B,1) -> B

recurs(H,2) -> HBH
recurs(B,2) -> BBB

donc cantor(4) = recurs(H,4) = HBH BBB HBH BBB BBB BBB HBH BBB HBH


Code: Tout sélectionner

cantor(level)
{
    recurs ( 'H', level)
}

recurs ( lettre, level)
{
   si ( level ==1)
        print lettre
   sinon si lettre ='H'
   {
        recurs ( 'H', level-1)
        recurs ( 'B', level-1)
        recurs (' H', level-1)
  }
  sinon
   {
        recurs ( 'B', level-1)
        recurs ( 'B', level-1)
        recurs ( 'B', level-1)
  }
   
}

houba
Messages: 3
Enregistré le: 23 Avr 2013, 09:32

par houba » 10 Mai 2013, 20:03

LeJeu a écrit:Salut,

Je pense que tu n'échappes pas à l'utilisation d'un fonction récursive
ou à chaque 'tour' tu remplaces
H par HBH
et B par BBB

je te propose d'écrire la fonction cantor(level) telle que
cantor ( 1) imprime H
cantor ( 2) impime HBH
.....
je créé un deuxieme fonction recurs( lettre, level)
qui développe une lettre sur 'level' niveau

donc
recurs(H, 1) ->H
recurs(B,1) -> B

recurs(H,2) -> HBH
recurs(B,2) -> BBB

donc cantor(4) = recurs(H,4) = HBH BBB HBH BBB BBB BBB HBH BBB HBH


Code: Tout sélectionner

cantor(level)
{
    recurs ( 'H', level)
}

recurs ( lettre, level)
{
   si ( level ==1)
        print lettre
   sinon si lettre ='H'
   {
        recurs ( 'H', level-1)
        recurs ( 'B', level-1)
        recurs (' H', level-1)
  }
  sinon
   {
        recurs ( 'B', level-1)
        recurs ( 'B', level-1)
        recurs ( 'B', level-1)
  }
   
}





bon voila la suite que j'ai trouvé:


Code: Tout sélectionner
B1='BBB';
 F1='HBH';
 j_Iter=2
for e=1:j_Iter+1
for i=1:j_Iter+1       
 if e==j_Iter+1         
break         
end       
 eval(sprintf('B%d=strcat(B%d,B%d,B%d)',i+1,i,i,i))      eval(sprintf('F%d=strcat(F%d,B%d,F%d)',e,e,i,e))   
end
end


la boucle corrècte tourne seulement sur F1 :triste:
je trouve pas le problème!!!
:cry:

LeJeu
Membre Irrationnel
Messages: 1141
Enregistré le: 24 Jan 2010, 22:52

par LeJeu » 10 Mai 2013, 20:12

houba a écrit:bon voila la suite que j'ai trouvé:


Code: Tout sélectionner
B1='BBB';
 F1='HBH';
 j_Iter=2
for e=1:j_Iter+1
for i=1:j_Iter+1       
 if e==j_Iter+1         
break         
end       
 eval(sprintf('B%d=strcat(B%d,B%d,B%d)',i+1,i,i,i))      eval(sprintf('F%d=strcat(F%d,B%d,F%d)',e,e,i,e))   
end
end


la boucle corrècte tourne seulement sur F1 :triste:
je trouve pas le problème!!!
:cry:


Pardon , je ne comprends pas du tout ce que tu veux faire ...... tu pourrais l'exprimer avec d'autres mots,? en pseudo code ? en donnant les exemples de ce que tu attends ? c'est quoi J_iter ????

Dans ma façon de faire , j’annonçais à l'avance ce que je voulais obtenir, essaie de faire de même
si il y erreur elle va apparaitre toute seule !

 

Retourner vers ϟ Informatique

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 6 invités

cron

Tu pars déja ?



Fais toi aider gratuitement sur Maths-forum !

Créé un compte en 1 minute et pose ta question dans le forum ;-)
Inscription gratuite

Identification

Pas encore inscrit ?

Ou identifiez-vous :

Inscription gratuite