Matlab
Fermé
cabrel92
Messages postés
3
Date d'inscription
mardi 1 novembre 2016
Statut
Membre
Dernière intervention
1 novembre 2016
-
1 nov. 2016 à 19:26
NHenry Messages postés 15209 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 12 avril 2025 - 6 nov. 2016 à 16:06
NHenry Messages postés 15209 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 12 avril 2025 - 6 nov. 2016 à 16:06
Bonjour,
je commence avec matlab svp je veux un programme qui calcule le volume avec la methode monte-carlo et un autre qui applique la méthode Ford
merci!!!
je commence avec matlab svp je veux un programme qui calcule le volume avec la methode monte-carlo et un autre qui applique la méthode Ford
merci!!!
3 réponses
NHenry
Messages postés
15209
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
12 avril 2025
360
1 nov. 2016 à 19:33
1 nov. 2016 à 19:33
Nous ne feront pas votre exercice à votre place.
Merci de décrire précisément votre problème et en postant le code déjà réalisé.
Cliquez ici pour des conseils d'écriture des messages et ici concernant les devoirs scolaires ou PFE.
Pour poster votre code, merci de penser à la coloration syntaxique.
Merci de décrire précisément votre problème et en postant le code déjà réalisé.
Cliquez ici pour des conseils d'écriture des messages et ici concernant les devoirs scolaires ou PFE.
Pour poster votre code, merci de penser à la coloration syntaxique.
cabrel92
Messages postés
3
Date d'inscription
mardi 1 novembre 2016
Statut
Membre
Dernière intervention
1 novembre 2016
Modifié par NHenry le 1/11/2016 à 20:11
Modifié par NHenry le 1/11/2016 à 20:11
bonsoir voila ce que j'ai fais
lorsque je compile je reçois ce message d'erreur
function [vol] = monte_carlo_torus(n)
↑
Error: Function definitions are not permitted in this context.
et pour la surface voici le code et j'aimerai le faire d'une autre façon et avec d'autre boucle
clear ;
function [vol] = monte_carlo_torus(n)
x=4*rand(n,1);
y=4*rand(n,1);
z=4*rand(n,1);
vol=0;
for ii=1:n
if (rand(2,1,1)==1)
x(ii)=-x(ii);
end
if (rand(2,1,1)==1)
y(ii)=-y(ii);
end
if (rand(2,1,1)==1)
z(ii)=-z(ii);
end
cond1=z(ii)^2 + (sqrt(x(ii)^2+y(ii));
cond2=x(ii)>=1;
cond2=x(ii)>=-3;
if (cond1)
plot3(x(ii),y(ii),z(ii),':g.');
hold on;
elseif (cond2 && cond3)
plot3(x(ii),y(ii),z(ii),':ro');
xlabel('x axis');
ylabel('y axis');
zlabel('z axis');
elseif (cond1 && cond2 && cond3)
vol=vol + 1;
else
plot3(x(ii),y(ii),z(ii),':b');
end
lorsque je compile je reçois ce message d'erreur
function [vol] = monte_carlo_torus(n)
↑
Error: Function definitions are not permitted in this context.
et pour la surface voici le code et j'aimerai le faire d'une autre façon et avec d'autre boucle
clear ;
AngleDeg = 0:1:360;
AngleRad = AngleDeg *pi / 180;
%Aire totale délimitée
xmin2=-20;
xmax2=20;
ymin2=-20;
ymax2=20;
%xmin3=xmin2/2; %Cela permet au cercle de rester dans la surface
%xmax3=xmax2/2;
%ymin3=ymin2/2;
%ymax3=ymax2/2;
Aire_totale2=(ymax2-ymin2)*(xmax2-xmin2); %Aire totale agrandie pour contenir les deux cercles
%Création des cercles
Abscisse1=-5;
Ordonnee1=0;
Abscisse2=5;
Ordonnee2=0;
%Abscisse1=xmax3+(xmin3-xmax3)*rand;
%Ordonnee1=xmax3+(xmin3-xmax3)*rand;
%Abscisse2=xmax3+(xmin3-xmax3)*rand;
%Ordonnee2=xmax3+(xmin3-xmax3)*rand;
Rayon1=12;
Rayon2=12;
%Rayon1=xmax3*rand;
%Rayon2=xmax3*rand;
XCercle1 = Abscisse1 + Rayon1 * cos(AngleRad);
YCercle1 = Ordonnee1 + Rayon1 * sin(AngleRad);
XCercle2 = Abscisse2 + Rayon2 * cos(AngleRad);
YCercle2 = Ordonnee2 + Rayon2 * sin(AngleRad);
aire_cercle1= pi*Rayon1*Rayon1;
aire_cercle2= pi*Rayon2*Rayon2;
%Lecture du nombre de tirages à effectuer
nb_tirages=0;
while nb_tirages<=0
nb_tirages=input('Combien de tirages souhaitez-vous effectuer ? \n');
nb_tirages= abs(nb_tirages);
end
%CALCUL DE LA VALEUR DE L'AIRE A DÉTERMINER
%Tirage aléatoire des points
PointX = xmax2+(xmin2-xmax2)*rand(1,nb_tirages);
PointY = ymax2+(ymin2-ymax2)*rand(1,nb_tirages);
points_intersection=0;
points_cercle1=0;
points_cercle2=0;
%aire_intersection_reel=0;
inter= 0; %Variable indiquant s'il y a une intersection entre les 2 cercles ou pas
kx=[];
ky=[];
%Détermination des points situés dans l'intersection
for N=1:1:nb_tirages
if (PointX(N)-Abscisse1)^2+(PointY(N)-Ordonnee1)^2<=Rayon1^2
points_cercle1=points_cercle1+1;
kx(points_cercle1)=PointX(N);
ky(points_cercle1)=PointY(N);
end
if (PointX(N)-Abscisse2)^2+(PointY(N)-Ordonnee2)^2<=Rayon2^2
points_cercle2=points_cercle2+1;
for m=1:1:(points_cercle1)
if PointX(N)==kx(m) && PointY(N)==ky(m)
inter= 1;
points_intersection= points_intersection+1;
end
end
end
end
aire_intersection_estime= (Aire_totale2*points_intersection)/nb_tirages;
%if inter==1
% aire_intersection_reel= abs(aire_cercle1-aire_cercle2);
%end
%Affichage
figure (2)
plot(XCercle1,YCercle1,'r',XCercle2,YCercle2,'m',PointX,PointY,'b')
axis([xmin2 xmax2 ymin2 ymax2]);
NHenry
Messages postés
15209
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
12 avril 2025
360
6 nov. 2016 à 16:06
6 nov. 2016 à 16:06
Je ne fais pas de Matlab, et encore moins des maths aussi précis (pour moi, Monte-Carlo est un lieu géographique et Ford le nom d'une personne qui a inventé le Fordisme et une marque de voiture, donc j'aurais du mal à aller plus loin.
Modifié par NHenry le 1/11/2016 à 20:11
lorsque je compile je reçois ce message d'erreur
function [vol] = monte_carlo_torus(n)
↑
Error: Function definitions are not permitted in this context.
et pour la surface voici le code et j'aimerai le faire d'une autre façon et avec d'autre boucle
clear ;