Vous êtes sur la page 1sur 4

UNIVERSITE DE YAOUNDE I UNIVERSITY OF YAOUNDE I

------------------ -------------------

Sapientia-Collativa-Cognitio Sapientia-Collativa-Cognitio

------------------------------ ------------------------------

ECOLE NATIONALE SUPERIEURE POLYTECHNIQUE NATIONAL ADVANCED SCHOOL OF ENGINEERING

DE YAOUNDE OF YAOUNDE

------------------------- ----------------------

DEPARTEMENT DE GENIE CIVIL DEPARTMENT OF CIVIL ENGINEERING

TRAVAU
X
PRATIQU
ES DE
PROBABI
LITE ET
STATISTI
QUE :
EXERCIC
E5

Travail réalisé par AVELING


AN RODRIGUE, Matricule
NEE
18P044 AC
ADE
Supervisé par, M. NDOM FRANCIS
MIQ
UE
2020
/202
1
1) ALGORITHME DU PROGRAMME
FONCTION SAMPLEPOINT

samplePoints=function(n,beta,beta2){

La fonction simple permet de créer une liste de deux élément le premier est une matrice de taille
n ×2 et le second élément un vecteur colonne :

s=list()

Crée la liste S

s$x=matrix(runif(2*n),nrow=n);

Crée le premier élément de la liste et l’initialise à l’aide de la fonction runif(2*n) 

runif(n) : génère aléatoirement entre 0 et 1 n nombre réel suivant une loi uniforme

s$y=2*(s$x%*%beta+beta2>0)-1 ;

Crée le second élément de la liste :

 s$x%*%beta+beta2 effectue le produit des matrices s$x et beta ajoute le réel beta2 à chaque
élément de la matrice obtenue.
 s$x%*%beta+beta2>0 : renvoie 1 si (s$x%*%beta+beta2)[i]>0  et 0 sinon

s : permet de retourner la liste

n=100

tbeta=c(0.5,-1)

tbeta2=0.5;

s=samplePoints(n,tbeta,tbeta2)

Crée et initiale la liste s à partir de la fonction samplePoints()

beta=runif(2)-1/2;

Crée un vecteur de deux éléments (runif(2)) dont on retranche ½ à chaque élément.

beta2=-sum(beta)/2;

Somme les éléments du vecteur beta et divise le résultat -2

rho=0.002;

K=which((s$x%*%beta+beta2) *s$y<0)

 B=(s$x%*%beta+beta2) *s$y : donne un vecteur colonne de taille 100


 Which (B<0) donne sous forme de vecteur les indices des éléments du vecteurs B qui
vérifie la condition B<0.

1
it<-0;

while(length(K)>0&it<500){

it=it+1;

plot(s$x[,1],s$x[,2],col=c("blue","red")[(s$y+3)/2],pch=19);

Dessine le graphe (place les points, sans les reliés) de la première colonne de s$x en fonction de
sa deuxième colonne : les points (s$x[i,1] ;s$x[i,2]) vérifiant (s$y[i]=-1 seront représentés en bleu et les
points vérifiant s$y[i]=1 seront représentés en rouge.

lines(c(-1,1),(-tbeta2-tbeta[1]*c(-1,1))/tbeta[2],col="black");

−tbeta 2−tbeta [ 1 ]∗X


Trace la droite d’équation Y ( X )= en noir 
tbeta [ 2 ]

lines(c(-1,1),(-beta2-beta[1]*c(-1,1))/beta[2],col="green");

−beta 2−beta [ 1 ]∗X


Trace la droite d’équation Y ( X )= en vert 
beta [ 2 ]

points(s$x[K,1],s$x[K,2],pch=21,cex=2.5,lwd=5,col="green");

Entoures-en vert les points qui ne sont pas dans la bonne zone du plan par rapport à la droite te
la machine

if(length(K>1)){i=sample(K,1)}else{i=K;}

sample(K,1) : renvoie une valeur aléatoire parmi les valeur de K

points(s$x[i,1],s$x[i,2],col="magenta",pch=20,cex=3);

Place en magenta le point par rapport auquel se fera la rectification de la droite

beta=beta + rho*s$y[i]*s$x[i,];

Rectifie le vecteur beta

beta2=beta2 + rho*s$y[i];

Rectifie beta2

plot(s$x[,1],s$x[,2],col=c("blue","red")[(s$y+3)/2],pch=19);

lines(c(-1,1),(-tbeta2-tbeta[1]*c(-1,1))/tbeta[2],col="black");

lines(c(-1,1),(-beta2-beta[1]*c(-1,1))/beta[2],col="green");

points(s$x[K,1],s$x[K,2],pch=21,cex=2.5,lwd=5,col="green");

Même instruction et même rôle que dans la boucle while

2
cat("number of iterations: ",it,"\n") : affiche le nombre d’’itération

2) ROLE DE L’ALGORTHIME
Le but du programme est de trouver automatiquement la droite permettant de
diviser le plan du graphe en deux de tel sorte que d’un côté on a uniquement les points
bleus et de l’autre les points rouges).

3) INCONVENIENTS
Il n’est pas précis étant donné qu’il peut exister une infinité de droite de séparation.