2eme année Ingénieur
Partie 2: Exemple de Processus StochastiqueTapez une équation ici .
Exercice 1 : La variable aléatoire gaussienne
2
(x−μ )
−
Donner l’expression de la loi normale (gaussienne) :f(x) = 1 2σ
2
e
σ √2 π
Soit la variable aléatoire G qui suit la loi normale N(, 2). Représentez la fonction de densité de
probabilité (pdf). On choisit =4 , 2 = 1.
function gaus_plot()
% Paramètres de la distribution normale
mu = 4; % moyenne
sigma2 = 1; % variance
% Génération des valeurs x
x = linspace(mu - 4*sqrt(sigma2), mu + 4*sqrt(sigma2), 1000);
% Calcul des PDF
pdf_values = normpdf(x, mu, sqrt(sigma2));
% Calcul des CDF en utilisant la fonction gaus_cdf
cdf_values = gaus_cdf(mu, sigma2, x);
% Création de la figure
figure;
% Tracer le PDF
subplot(1, 2, 1); % Deux sous-graphes dans une seule ligne
plot(x, pdf_values, 'b-', 'LineWidth', 2);
title('Fonction de Densité de Probabilité (PDF)');
xlabel('x');
ylabel('Densité');
grid on;
% Tracer le CDF
subplot(1, 2, 2); % Deux sous-graphes dans une seule ligne
plot(x, cdf_values, 'r-', 'LineWidth', 2);
title('Fonction de Répartition Cumulative (CDF)');
xlabel('x');
ylabel('Probabilité cumulée');
grid on;
end
function cdf_values = gaus_cdf(mu, sigma2, x)
% Fonction qui calcule la CDF d'une loi normale N(mu, sigma^2)
sigma = sqrt(sigma2); % Calcul de l'écart-type
cdf_values = 0.5 * (1 + erf((x - mu) / (sigma * sqrt(2)))); % Formule de la CDF
end
2eme année Ingénieur
Sur l’axe horizontal, quelle serait la valeur correspondant à une fonction de répartition cdf égale
à 0.5 ? Justifiez :
G=μ=4 , sur l'axe horizontal, la valeur correspondant à une fonction de répartition CDF égale
à 0.5 est 4. Cela signifie que pour cette distribution normale, il y a une probabilité de 50% que
la variable aléatoire soit inférieure ou égale à 4.
Pour G∼N(4,1) : La moyenne μ=4 . Donc, lorsque F(x)=0.5. on : x=μ=4
Vérifier votre réponse en affichant le graphe de la cdf (utiliser la fonction gaus_cdf(, 2)), les deux
graphes pdf et cdf doivent être affichés au même temps.
Commande : >> gaus_plot()
Déterminer (a partir du 2eme graphe) les probabilités suivantes :
P (0<G<3) P (3<G<5) P (G>5)
cdf(3)−cdf(0) = 0.15 -0 = 0.15 cdf(5)−cdf(3) = 0.84 -0.15 1−cdf(5) = 1 – 0.84 = 0.16
= 0.69
On suppose maintenant qu’une VA X suit la loi N(, 2). Afin de voir l’effet de la variance sur
la courbe de la pdf, nous fixons la moyenne =1 et nous varions la valeur de 2 entre 0.5 et 10. Nous
utilisons les commandes suivantes :
>> clf
2eme année Ingénieur
>> m=1, gaus_pdf (m, 0.5)
>> axis([-10 10 0 0.6]), hold on
>> gaus_pdf (m, 1)
..
.
>> gaus_pdf (m, 10)
clf;
% Fixer la moyenne
m = 1;
% Tracer la PDF pour différentes valeurs de variance
gaus_pdf(m, 0.5); % Pour sigma^2 = 0.5
axis([-10 10 0 0.6]); % Ajuster les axes
hold on; % Maintenir le graphique pour ajouter d'autres courbes
gaus_pdf(m, 1); % Pour sigma^2 = 1
gaus_pdf(m, 2); % Pour sigma^2 = 2
gaus_pdf(m, 5); % Pour sigma^2 = 5
gaus_pdf(m, 10); % Pour sigma^2 = 10
% Ajouter une légende et des titres
legend({'\sigma^2 = 0.5', '\sigma^2 = 1', '\sigma^2 = 2', '\sigma^2 = 5', '\sigma^2 =
10'}, 'Location', 'northeast');
title('Effet de la Variance sur la PDF');
xlabel('x');
ylabel('Densité');
grid on;
A partir des graphes obtenus et en considérant l’événement A={0<X<2}, quelle est la valeur de
2 correspondant a P(A) maximale (expliquez) :
Peut-on prédire la fonction de répartition pour une valeur très petite de la
variance (0.00001) ? . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . .
................. .................. ..............
2eme année Ingénieur
Exercice 2: Le vecteur aléatoire/ La corrélation entre des variables aléatoires
Soit le vecteur aléatoire (A, T, P) représentant l’âge, la taille et le poids d’une personne.
Que fait chaque ligne de ce code :
age = fix(rand(in,1)*30+20.5) : La fonction fix() arrondit les valeurs vers zéro, ce qui signifie que les âges
générés seront compris entre 20 et 50 ans car :
rand(in,1) génère un vecteur colonne contenant in valeurs aléatoires uniformément distribuées entre 0 et
1.
En multipliant par 30, on étend l'intervalle à [0, 30].
En ajoutant 20.5, on déplace l'intervalle à [20.5, 50.5].
height = fix(randn(in,1)*12+168): Cette ligne génère un vecteur de hauteurs pour in personnes, avec une
moyenne de 168 cm et un écart-type de 12 cm, en arrondissant chaque hauteur à un entier.
height(height<150) = 150 + randn(sum(height<150),1)*3: Cette ligne ajuste toutes les hauteurs dans le
vecteur height qui sont inférieures à 150 cm, en leur attribuant une nouvelle valeur centrée autour de 150 cm avec
un écart-type de 3 cm. Cela garantit que toutes les hauteurs respectent une limite minimale de 150 cm.
Nous souhaitons générer 1000 enregistrements du vecteur (fonction person_d), et visualiser les
variations de chaque variable par rapport à l’autre. Completer le code :
>> a= person_d(1000)
>> subplot(131); stat_plot(a, 'weight', 'height')
>> . . . . . . . . . >> . . . . . . . . .
Commenter la corrélation entre ces variables.
clc , clear all
% Générer 1000 enregistrements
a = person_d(1000);
% Visualiser les variations
figure;
% Tracer le poids par rapport à la taille
subplot(1, 3, 1); % Première sous-figure
stat_plot(a, 'weight', 'height');
title('Poids vs Taille');
xlabel('Taille (cm)');
ylabel('Poids (kg)');
2eme année Ingénieur
grid on;
% Tracer le poids par rapport à l'âge
subplot(1, 3, 2); % Deuxième sous-figure
stat_plot(a, 'weight', 'age');
title('Poids vs Âge');
xlabel('Âge (ans)');
ylabel('Poids (kg)');
grid on;
% Tracer la taille par rapport à l'âge
subplot(1, 3, 3); % Troisième sous-figure
stat_plot(a, 'height', 'age');
title('Taille vs Âge');
xlabel('Âge (ans)');
ylabel('Taille (cm)');
grid on;
function stat_plot(data, var1, var2)
% Fonction pour tracer var1 contre var2 à partir des données
% data : matrice contenant les données (âge, taille, poids)
% var1 : nom de la première variable (ex: 'weight')
% var2 : nom de la deuxième variable (ex: 'height')
% Identifier les indices des colonnes
col1 = find(strcmp({'age', 'height', 'weight'}, var1));
col2 = find(strcmp({'age', 'height', 'weight'}, var2));
% Tracer les données
plot(data(:, col1), data(:, col2), 'o');
xlabel(var1);
ylabel(var2);
end