Calcul d’intégrale par Monte Carlo: Résolution 2/2 [MATLAB]


%% Script calcul d’une intégrale par la Méthode de Monte-Carlo
%
clear all;
close all;
clc;
disp(‘Calcul de l intégrale f(x)=1/(1+|x|^3) sur [-inf,+inf].’);   fprintf(‘\n’);
disp(‘On génère une variable aléatoire X~Cauchy.’);   fprintf(‘\n’);
k=input(‘Entrer le nombre d échantillages que vous voulez simuler!\nk=’);

% On génère U~Unif([0,1])
u=zeros(k,1); h=zeros(k,1);

  • for i = 1 : k

u(i,1)=rand(1,1);

end

% On génère X~Cauchy
X=cauchy(u,k);

Le protoype de la fonction ‘cauchy’ est :

  • function [P_X,X]=cauchy(u,k)

% G(u) = tan(pi*( u-(1/2) ) ) est la fonction inverse de la fonction de répartition de X~Cauchy, avec U~Unif([0,1])

X(:,1)=tan(pi*( u-(1/2) ) );

P_X=0;

fin function

% On calcul l’esperance de probabilité de h(X)= ( pi*(1+X^2) ) /(1+|X|^3)

  • for i = 1 : k

h(i,1)=( pi*(1+X(i,1)^2) ) /(1+abs(X(i,1))^3);

end

% valeur estimée de l’intégrale I
I=mean(h(:,1));

% Estimation de l’Erreur d’intégration
I_th=( 4*pi*sqrt(3) )/9;
Err=abs( I_th – I );

% Estimation de la précision( en %)

if I < I_th

Precision=(100*I)/I_th;

else Precision=(100*I_th)/I;

end

Conclusion : pour k=1 000 000 , j’obtient une valeur numérique de I d’environ 2.4195 . Soit une précision de 99.95%.

About these ads

Publié le janvier 28, 2013, dans Matlab. Bookmarquez ce permalien. Poster un commentaire.

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s

Suivre

Recevez les nouvelles publications par mail.

%d blogueurs aiment cette page :