Répondre à la discussion
Affichage des résultats 1 à 5 sur 5

Petit bout de code a ajouter a mon fichier Matlab



  1. #1
    Djodjo89

    Petit bout de code a ajouter a mon fichier Matlab


    ------

    Bonjour a tous, en fait j'ai réalisé un petit programme en Matlab utilisant la méthode de Monte Carlo pour trouver une estimation de Pi, en creant des couples aleatoires et en regardant s'ils atterrissent dans un cercle de rayon 1 ou pas (en gros). Grace a ca on peut approximer (plus ou moins bien) Pi.

    Voici mon programme:

    Code:
    %  Estimation de Pi par la Methode de Monte Carlo
       
       NbColMat = 1000;  % On choisit 1000, on peut choisir un nombre superieur
       nmaxboucles  = input('Combien de boucles (de 1000 nombres aleatoires chacunes) ');
       NbTot = 0;  %Initialisation a 0
       NbInter = 0;   %Initialisation a 0
       for nboucles=1:nmaxboucles
          X = rand(1,NbColMat);        % Genere 1000 points XY aleatoires
          Y = rand(1,NbColMat);
          R = X.^2 + Y.^2;  % Trouve le rayon associe aux 1000 points aleatoires XY
          Verif = R<=1.;  % Prend la valeur 1 si Vrai, 0 si Faux, pour chaque element
          NbInter = NbInter + sum(Verif);  % Nombre total de points generes a l'interieur du cercle
       end
    NbTot = nmaxboucles*NbColMat;     % Nombre total de points generes
      disp(['Points Generes: ' num2str(NbTot)]);
      disp(['Points Dans Le Cercle: ' num2str(NbInter)]);
       approxpi = 4*NbInter/NbTot;   % Le rapport (Points a l'interieur/Total de points generes) tend vers pi/4
       erreurpi = 4*sqrt(NbInter)/NbTot;
       disp(['  Approximation De Pi = ' num2str(approxpi) ...
          ' Avec Une Erreur De ' num2str(erreurpi)]);
    En fait ca fonctionne mais je voudrais que le programme affiche en plus des résultats, un graphique montrant le cercle inscrit dans le carré de coté 1, avec tous les points générés et où ils "atterrissent" (en supposant qu'il n'y en ait pas trop a generer, sinon faire un truc plus global). Voila je ne maitrise pas vraiment les fonctions graphiques de matlab j'espere que vous pourrez m'aider .

    PS: ici on voit bien:

    Merci!

    -----

  2. Publicité
  3. #2
    sebsheep

    Re : Petit bout de code a ajouter a mon fichier Matlab

    Connais tu la fonction plot?

    Un rapide descriptif (une utilisation possible) :
    plot(XX,YY[,motif]);

    cela t'affiches les points dont les absicces (resp. ordonnées) sont stockés dans le vecteur XX ( resp. YY).

    Par exemple pour afficher un triangle : plot([0,10,5,0],[0,0,10,0]).

    Par défaut, si tu ne fourni pas de 3eme argument, cela te trace une ligne entre chaque point. Mais avec ce 3eme arguement tu peux spécifier plein de choses :
    par exemple, si tu passes '+' (met bien les guillemets), cela t'affichera les points avec une croix sans les relier. Tu peux aussi changer la couleur et utiliser plusieurs motifs. Un petit help plot te renseignera mieu que moi.

    Pour ton problème, il faudrait mettre les points dans le cercle d'une certaine couleur, ceux à l'extérieur d'une autre, je n'ai pas réussi à faire ca autrement qu'en le faisant point par point (avec une grosse boucle immonde), si tu trouves un moyen plus élégant, je suis preneur.

    Après une commande dont tu auras besoin est hold on / hold off. En fait chaque nouvea plot par défaut efface le graphe qu'il avait tracé avant. En mettant un "hold on", il conserve le dessin précédent. Quand tu as fini tout ce que tu voulais faire, tu peux mettre un "hold off" ; cela n'effacera pas ton graphe, mais au prochain plot, tout disparaitra!

    Donc la structure global que je te propose est la suivante :
    hold on
    % dessin du carré et du cercle grâce à plot

    for nboucles=1:nmaxboucles
    % calcul des point dans le cercle ou pas, affichage de chaque point en mode '+'
    end

    hold off

    disp(['Points Generes: ' num2str(NbTot)]);
    disp(['Points Dans Le Cercle: ' num2str(NbInter)]);
    approxpi = 4*NbInter/NbTot; % Le rapport (Points a l'interieur/Total de points generes) tend vers pi/4
    erreurpi = 4*sqrt(NbInter)/NbTot;
    disp([' Approximation De Pi = ' num2str(approxpi) ...
    ' Avec Une Erreur De ' num2str(erreurpi)]);
    ...

    Si tu as des quesitons, n'hésite pas

  4. #3
    phryte

    Re : Petit bout de code a ajouter a mon fichier Matlab

    Bonsoir.
    Tu aurais dû placer ton post au forum des développeurs !
    Essaie :
    Code:
    clear;nbin=0;nbout=0;
    N = 1000; % nombre de tirages
    for n = 10:10:N	% on considère plusieurs tirages de taille n
      k(1) = 0.0;
    	  for j = 2:n
          k(j) = k(j-1)+(abs(rand+rand* i)<= 1);
    	  end
      k = k* 4/n;
    end
    title('Approximation de pi par le calcul de probabilités');
    x = 0:.001:1;
    y = sqrt(1-x.^2); % équation du cercle
    plot(x,y) % tracé du quart de cercle
    figure(gcf)
    hold on
    for j = 1:100
    	x(j) = rand+rand* i;
    	if (abs(x(j))<= 1) % si nombre est dans le quart de cercle
          plot(x(j),'.r')
          nbin=nbin+1;
    	else 
          plot(x(j),'.b') % si le nombre est en dehors du quart de cercle
          nbout=nbout+1;
    	end
    end
    grid
    cpi=4*nbin/(nbin+nbout)

  5. #4
    Djodjo89

    Re : Petit bout de code a ajouter a mon fichier Matlab

    Merci! je vais tester ceci dès que je peux

  6. A voir en vidéo sur Futura
  7. #5
    Djodjo89

    Re : Petit bout de code a ajouter a mon fichier Matlab

    Merci ça marche nickel je l'ai un peu remodelé merci encore

Discussions similaires

  1. Matlab Lecture de n fichier .txt et ecriture dans un fichier .xls
    Par yokute dans le forum Logiciel - Software - Open Source
    Réponses: 4
    Dernier message: 26/07/2010, 10h12
  2. Petit bout de code a ajouter a mon fichier Matlab
    Par Djodjo89 dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 20/11/2008, 14h40
  3. Lire un fichier .BIN avec Matlab converti d'un fichier .WAV
    Par solissisme dans le forum Logiciel - Software - Open Source
    Réponses: 2
    Dernier message: 03/05/2008, 17h13
  4. Ajouter des métadonnées dans un fichier PDF ?
    Par deep_turtle dans le forum Logiciel - Software - Open Source
    Réponses: 4
    Dernier message: 18/04/2008, 21h47
  5. Ajouter une note à un fichier PDF.
    Par cedbont dans le forum Logiciel - Software - Open Source
    Réponses: 19
    Dernier message: 01/01/2008, 23h50