Code Scilab qui bloque

Modérateur : Michel Quercia

BlaieBlaie
Messages : 42
Enregistré le : lun. janv. 11, 2016 11:10 pm
Classe : Autodidacte

Re: Code Scilab qui bloque

Message par BlaieBlaie » jeu. mai 18, 2017 3:14 pm

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)...

Avatar du membre
fakbill
Messages : 11166
Enregistré le : mer. juil. 30, 2008 4:59 pm
Classe : Dr.-Ing

Re: Code Scilab qui bloque

Message par fakbill » jeu. mai 18, 2017 9:37 pm

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
Messages : 42
Enregistré le : lun. janv. 11, 2016 11:10 pm
Classe : Autodidacte

Re: Code Scilab qui bloque

Message par BlaieBlaie » sam. mai 20, 2017 1:05 pm

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 ! :)

loupi
Messages : 440
Enregistré le : mer. févr. 27, 2013 5:45 pm
Classe : ENVT

Re: Code Scilab qui bloque

Message par loupi » sam. mai 20, 2017 1:32 pm

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
Messages : 42
Enregistré le : lun. janv. 11, 2016 11:10 pm
Classe : Autodidacte

Re: Code Scilab qui bloque

Message par BlaieBlaie » mar. mai 23, 2017 1:48 pm

Merci ! :)
J'ai enfin mon code !
Modifié en dernier par BlaieBlaie le mer. mai 24, 2017 11:40 am, modifié 1 fois.

BlaieBlaie
Messages : 42
Enregistré le : lun. janv. 11, 2016 11:10 pm
Classe : Autodidacte

Re: Code Scilab qui bloque

Message par BlaieBlaie » mar. mai 23, 2017 4:23 pm

Au fait, vous savez ce que signifient ces quantités-là :

\( \max_{x \in A_n} ||x|| - \sqrt{n/\pi} \) et \( \min_{x \notin A_n} ||x|| - \sqrt{n/\pi} \) ? On me demande de simuler ces valeurs lorsque n est grand (je suppose donc qu'il s'agit d'un nombre !). Que peut-on dire des fluctuations ? (c'est la question posée !)

Voici un exemple d'une réalisation de A2000 de ce que me donne mon code :

Image

Comme la forme limite de An est un disque, l'on peut tracer autour de cette forme un cercle "enveloppant", certains points seront à l'intérieur et d'autres à l'extérieur. Je suppose que \( \max_{x \in A_n} ||x|| \) représenterait les points à l'intérieur du cercle (hors bordure du cercle), et \( \min_{x \notin A_n} ||x|| \) représenterait les points à l'extérieur du cercle, c'est bien ça ?
Cependant, que signifie \( -\sqrt{n/\pi} \) dans les deux cas ? Je suppose que l'on veut simuler, pour n grand, le nombre de points à l'extérieur du cercle et le nombre de points à l'intérieur du cercle ? Si quelqu'un comprend et veut bien me donner deux/trois indications pour que je fasse ce code, ce serait top !

loupi
Messages : 440
Enregistré le : mer. févr. 27, 2013 5:45 pm
Classe : ENVT

Re: Code Scilab qui bloque

Message par loupi » mar. mai 23, 2017 9:39 pm

\( \sqrt{n/\pi} \), ça doit être le rayon du disque, tu peux donc en déduire le reste...

BlaieBlaie
Messages : 42
Enregistré le : lun. janv. 11, 2016 11:10 pm
Classe : Autodidacte

Re: Code Scilab qui bloque

Message par BlaieBlaie » jeu. mai 25, 2017 3:48 pm

Ok, donc on demande une différence de rayons dans les deux cas.
Le deuxième cercle (\( \min_{x \notin A_n} ||x|| \)) est bien celui qui englobe TOUS les points de An ?
Et le premier (\( \max_{x \in A_n} ||x|| \)) celui qui ne contient aucun point du complémentaire de An ?

(Oui oui, j'suis un peu naze pour traduire de maths en info :D)

loupi
Messages : 440
Enregistré le : mer. févr. 27, 2013 5:45 pm
Classe : ENVT

Re: Code Scilab qui bloque

Message par loupi » jeu. mai 25, 2017 5:13 pm

Je ne vois pas ce qui te prend la tête, comptabilise les 2, puis regarde leur évolution en fonction de n.

BlaieBlaie
Messages : 42
Enregistré le : lun. janv. 11, 2016 11:10 pm
Classe : Autodidacte

Re: Code Scilab qui bloque

Message par BlaieBlaie » ven. mai 26, 2017 1:28 pm

Oui, ce n'est pas bien dur, le seul souci c'est que j'ai du mal à traduire les deux rayons en langage scilab, surtout le \( x \in/\notin A_n \).

loupi
Messages : 440
Enregistré le : mer. févr. 27, 2013 5:45 pm
Classe : ENVT

Re: Code Scilab qui bloque

Message par loupi » ven. mai 26, 2017 4:28 pm

D'après ce que je comprends, mais j'ai pas regardé dans le détail, tu comptabilises à chaque itération la distance du point parcouru depuis l'origine \( \sqrt{{x}^{2}+{y}^{2}} \) (tu prends la valeur max tant que tu es dans An et la valeur min dès que tu en sors), puis tu compares les 2 à\( \sqrt{n/π} \), et tu regardes ce que ça donne quand n grandit.
J'imagine que la différence doit tendre vers 0, puisque quand n est grand, chaque nouvelle exploration devrait se faire proche du périmètre théorique du disque de rayon \( \sqrt{n/π} \).
Maintenant, je dis peut-être une connerie...

BlaieBlaie
Messages : 42
Enregistré le : lun. janv. 11, 2016 11:10 pm
Classe : Autodidacte

Re: Code Scilab qui bloque

Message par BlaieBlaie » ven. mai 26, 2017 4:50 pm

Ok, merci :)

Donc en fait on note ||x|| = sqrt(sum(x^2)), puis à chaque itération on prend la valeur max si x est dans An, et la valeur min si x sort de An.

loupi
Messages : 440
Enregistré le : mer. févr. 27, 2013 5:45 pm
Classe : ENVT

Re: Code Scilab qui bloque

Message par loupi » ven. mai 26, 2017 5:02 pm

\( \sqrt{{x}^{2}+{y}^{2}} \), tu as des coordonnées en x (axe ouest-est) et y (nord-sud).

BlaieBlaie
Messages : 42
Enregistré le : lun. janv. 11, 2016 11:10 pm
Classe : Autodidacte

Re: Code Scilab qui bloque

Message par BlaieBlaie » sam. mai 27, 2017 1:03 pm

Décidément... En voulant faire le max j'ai l'impression de me retrouver avec le min !

Edit, en fait, c'est bon ! Merci à tous pour votre aide, et particulièrement à loupi !!

Répondre

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité