Programme Monte Carlo stratification

Réponses à toutes vos questions après le Bac (Fac, Prépa, etc.)
Rineku
Messages: 6
Enregistré le: 06 Avr 2017, 18:19

Programme Monte Carlo stratification

par Rineku » 25 Mai 2017, 12:13

Bonjour,
Après avoir crée un programme de Monte Carlo basé sur l'échantillonnage stratifié, je fais face à un petit soucis. Mon but est de créer un programme capable d'approximer une intégrale en utilisant la méthode de stratification. Chose que j'ai presque réussit à faire à un détail près: L'approximation est bonne mais mon intervalle de confiance me semble douteuse.
Est ce que quelqu'un serait capable de critiquer mon travail et voir une éventuelle erreur?
Merci à ceux qui prendront le temps de jeter un oeil à mon travail. Bonne journée!
Ci dessous le programme que j'ai fait avec octave.


%%%Intégration sur D
d(1)= input ('Choisissez votre intervalle d''integration : [');
['[' , num2str(d(1)) , ';']
d(2)= input (' ');
D=['[' num2str(d(1)) ' ; ' num2str(d(2)) ']']
disp(' ');
%%%%%%%%%%%%%%

%%%% Choix strates
disp('Choisissez les bornes de vos strates (dans l''ordre) : ');
disp(' ');

%%%Premiere borne
Di(1)=d(1);

%%%Bornes suivantes
k=1;

while Di(k)!=d(2)
disp(' ');
disp([num2str(k) , ' eme intervalle : ']);
k=k+1;
['[' , num2str(Di(k-1)) , ';']
Di(k)= input(' Choisissez la borne de droite : ');
['[' , num2str(Di(k-1)) , ' ; ' num2str(Di(k)) ']']

while ( Di(k)<=Di(k-1) || Di(k)>d(2) )
disp(['Erreur saisie. Entrez une valeur entre ' , num2str(Di(k-1)) , ' et ' ...
, num2str(d(2))]);
['[' , num2str(Di(k-1)) , ';']
Di(k)= input('Choisissez la borne de droite : ');
endwhile
['[' , num2str(Di(k-1)) , ';', num2str(Di(k)) , ']'];
disp(' ');
end

NB_STRATE=length(Di)-1;

%%% Création des pj associées
for i=1:NB_STRATE
pj(i)=(Di(i+1)-Di(i))/(d(2)-d(1));
endfor

disp(['Vous avez entre les ' , num2str(NB_STRATE) , ' strates suivantes : ']);
for j=1:NB_STRATE
disp(['Strate ', num2str(j) , ': [' , num2str(Di(j)) , ...
' ; ' num2str(Di(j+1)) '] ; pj(' , num2str(j) , ')='...
num2str(pj(j))]);
endfor


%%%Choix taille échantillon
N=input('Taille de l''echantillon : ');

%%% Calcul des différentes sommes
for i=1:NB_STRATE
S(i)=0;
Nj(i)=N*pj(i);
X(i,:)=rand(1,Nj(i))*(Di(i+1)-Di(i))+Di(i);
for j=1:Nj(i)
S(i)=S(i)+(d(2)-d(1))*F(X(i,j));
endfor
S(i)=S(i)/Nj(i);
endfor


%%% Calcul de la variance
I=0;
V=0;
for i=1:NB_STRATE
v=0;
I=I+S(i)*pj(i);
for j=1:Nj(i)
v=v+((F(X(i,j))-S(i))^2);
endfor
v=v/(Nj(i)-1);
V=(v^2*pj(i)^2)/Nj(i)+V;
endfor
IC=['[' num2str(I-1.96*V/sqrt(N)) ' ; ' num2str(I+1.96*V/sqrt(N)) ']'];

%%%Affichage résultat
I
IC



 

Retourner vers ✯✎ Supérieur

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 30 invités

Tu pars déja ?



Fais toi aider gratuitement sur Maths-forum !

Créé un compte en 1 minute et pose ta question dans le forum ;-)
Inscription gratuite

Identification

Pas encore inscrit ?

Ou identifiez-vous :

Inscription gratuite