Suite de Cantor avec matlab
Discutez d'informatique ici !
-
houba
- Messages: 3
- Enregistré le: 23 Avr 2013, 09:32
-
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!!!!
-
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!!!
-
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!!!
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 , jannonçais à l'avance ce que je voulais obtenir, essaie de faire de même
si il y erreur elle va apparaitre toute seule !
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 6 invités