Code Scilab qui bloque

BlaieBlaie

Re: Code Scilab qui bloque

Message par BlaieBlaie » 14 mai 2017 15:54

Ben justement..
Moi j'avais cru comprendre que la particule se déplaçait suivant les axes abscisses OU ordonnées puisqu'elle va soit au Nord, Sud, Est ou Ouest.
A vrai dire, je ne comprends pas pourquoi An a une forme de "cercle" si n est grand... Ca veut dire que la particule a plus de 4 directions aux étapes supérieures à 1... Et dans ce cas mon code est complètement faux en effet.

Messages : 13

Inscription : 27 févr. 2013 16:45

Profil de l'utilisateur : Élève de lycée

Re: Code Scilab qui bloque

Message par loupi » 14 mai 2017 16:01

Ouais, ben là avec une seule particule et incrémentation (N,S,E,O) sans aucun test de sortie de la trajectoire, ça ne risque pas de faire un disque. Ca doit pouvoir commencer à ressembler à un disque si tu lances n (avec n grand) fois la particule pour m déplacements à partir de la même origine. Par exemple, si tu te déplaces de m pas à partir d'une même origine un grand nombre de fois, tu finiras par fouler tout un disque de rayon m pas (genre une chèvre attachée à un piquet dans un pré qui a un nb de pas limité dans une direction donnée, laisse la attachée une semaine, tu verras le résultat).

Pour obtenir 4 entiers aléatoires 1,2,3 ou 4, il suffit de faire i=ceil(4*rand()).
Le mieux serait même d'obtenir une matrice aléatoire qui te donnerait directement [0 1], [0,-1], [1 0] ou [-1 0] si tu ne veux gérer que les 4 directions, puis d'appliquer l'opération qui va bien à ta coordonnée courante pour obtenir la coordonnée suivante.

Messages : 9679

Inscription : 30 juil. 2008 16:59

Profil de l'utilisateur : Élève de lycée

Re: Code Scilab qui bloque

Message par fakbill » 15 mai 2017 22:19

"J'ai trouvé mon erreur précédente : j'avais simplement oublié un crochet fermé à la ligne 10."
Comment est ce possible???? Tout éditeur pas trop nul hurle et mets les parenthèses fautives en rouge.

Pour ce qui est du problème:
Comme les 4 directions sont équiprobables il serait étonnant que ça ne fasse pas un cercle.
Pas prof.
Prépa, école, M2, thèse (optique/images) ->ingé dans le privé.

BlaieBlaie

Re: Code Scilab qui bloque

Message par BlaieBlaie » 16 mai 2017 14:07

Bonjour,

Désolé du temps de réponse. Scilab ne met pas les crochets manquants en avant. On a par contre un message d'erreur "else ou end manquant".

Merci loubi pour ces conseils ! Du coup je pense mieux comprendre. En fait, on commence avec A1 = {(0,0)}. Ensuite on a 4 ensembles potentiels pour A2, et ensuite, on a 6 possibilités de A3 (pour chaque A2), puis 8 pour A4, etc... Dans mon code précédent, j'avais très mal compris, d'où le résultat pas net du tout.

Bon, je vais essayer de mettre tout ça en application alors...

Messages : 1162

Inscription : 01 juin 2012 22:03

Profil de l'utilisateur : Élève de lycée

Re: Code Scilab qui bloque

Message par Cortez » 16 mai 2017 15:24

BlaieBlaie a écrit :
16 mai 2017 14:07
Scilab ne met pas les crochets manquants en avant
Non mais qd tu en ouvres un il te met automatiquement celui qui ferme, c'est donc que tu l'avais effacé toi même ;)

BlaieBlaie

Re: Code Scilab qui bloque

Message par BlaieBlaie » 18 mai 2017 15:14

C'est probable !

Sinon je ne vois pas du tout comment faire ce code... Je m'aperçois que, par exemple, si la particule est dans A2 = {(0,0),(0,1)} à l'étape 2, alors elle en sort par les points (-1,0), (0,-1), (1,0), (0,2) (elle est lancée à l'origine) ou (1,1) ou (-1,1) (avec une probabilité plus faible).
Et ceci à chaque fois, certaines probabilités étant plus fortes que d'autres, les directions augmentant constamment, comment coder ça ? :( Je me triture l'esprit depuis quelques jours, pour moi l'énoncé n'est pas clair dès le départ (et en plus je débute vraiment, ce qui n'aide pas)...

Messages : 9679

Inscription : 30 juil. 2008 16:59

Profil de l'utilisateur : Élève de lycée

Re: Code Scilab qui bloque

Message par fakbill » 18 mai 2017 21:37

Oublie le langage. Essaye déjà de coder ça en pseudocode voire limite en français.
Pas prof.
Prépa, école, M2, thèse (optique/images) ->ingé dans le privé.

BlaieBlaie

Re: Code Scilab qui bloque

Message par BlaieBlaie » 20 mai 2017 13:05

Bonjour.

Du coup je pense enfin avoir compris en traduisant en français. Mon truc est un peu laborieux mais je pense avoir compris :

On tire 4 nombres aléatoirement, correspondant chacun à une direction N, S, E, O.
Direction N : Un pas vers le haut [0,1].
Direction S : Un pas vers le bas [0,-1].
Direction E : Un pas vers la droite [1,0].
Direction O : Un pas vers la gauche [-1,0]. (donc ça c'était OK :))

Etape 1 :
On crée A1 = {(0,0)}.
La particule lancée en (0,0) va vers N,S,E ou O aléatoirement et sort directement par un point X.
On note A2 = A1 UNION X.

A chaque étape supérieure :
La particule est lancée en (0,0) et va vers N,S,E ou O.
Tant qu'elle reste dans An, alors on continue à lui assigner une direction aléatoire N,S,E ou O.
Dès qu'elle sort de An par un point X, alors on écrit An+1 = An UNION X.

C'est bien ça ?
Si oui, je pense pouvoir coder ça ! :)

Messages : 13

Inscription : 27 févr. 2013 16:45

Profil de l'utilisateur : Élève de lycée

Re: Code Scilab qui bloque

Message par loupi » 20 mai 2017 13:32

Oui, c'est ça, tu relances n fois la particule à partir de l'origine à chaque fois qu'elle va sur une nouvelle position inexplorée.

BlaieBlaie

Re: Code Scilab qui bloque

Message par BlaieBlaie » 23 mai 2017 13:48

Merci ! :)
J'ai enfin mon code !
Dernière modification par BlaieBlaie le 24 mai 2017 11:40, modifié 1 fois.

Répondre