Corrigé Examen OP
Corrigé Examen OP
Corrigé Examen OP
Exercice 1. (6 pts)
1. Soit X et Y variables aléatoires discrètes à valeurs respectivement dans {x1 , . . . , xn } et {y1 , . . . , yn },
écrire un programme (fonctions) qui permet de calculer X̄, V ar(X), σX , et Cov(X, Y ), avec :
n n n
1X 1X 2
p 1X
X̄ = xi , V ar(X) = (xi − X̄) , σX = V ar(X), Cov(X, Y ) = (xi − X̄)(yi − Ȳ )
n i=1 n i=1 n i=1
2. Écrire la fonction Somme(n,k) qui calcule la somme suivante :
k
1 X k! in
(n,k) −→ (−1)k−i , avec : 0 ⩽ k ⩽ n.
k! i=0 i!(k − i)!
26 def Somme (n , k ) :
27 s =0
28 for i in range ( k +1) :
29 s +=(( -1) **( k - i ) ) *(( fact ( k ) *( i ** n ) ) ) /( fact (k - i ) * fact ( i ) )
30 return s / fact ( k )
31 # 2 - - - - - - - - - -0 pts - - - - - - - - - - - -
32 X =[1 ,2 ,3 ,5 ,4 ,6 ,8 ,4 ,5 ,2 ,1 ,6 ,10]
33 Y =[9 ,2 ,1 ,5 ,1 ,6 ,8 ,4 , -6 ,2 , -8 ,6 , -10]
34 print ( " xbar = " , X_bar ( X ) )
35 print ( " Var ( X ) = " , Var ( X ) )
36 print ( " Segma ( X ) = " , SegmaX ( X ) )
37 print ( " ybar = " , X_bar ( X ) )
38 print ( " Var ( Y ) = " , Var ( Y ) )
39 print ( " Segma ( Y ) = " , SegmaX ( Y ) )
40 print ( " Cov (X , Y ) = " , Cov (X , Y ) )
Où,
1, ..., 3 et j = 1, ..., n.
2. On considère que le choix de la maximisation ou de la minimisation du PL (P ) se fait grâce à
une variable booléenne (MiniMax) à initialiser par l’utilisateur.
maximisation, si M iniM ax = 0,
minimisation, si M iniM ax = 1.
Écrire un programme en Python permettant de résoudre (P ).
18 # 2) - - - - - - - - - -4 pts - - - - - - - - - -
19 import numpy as np
20 from scipy . optimize import linprog
21 a1 = np . array ( a1 )
22 a2 = np . array ( a2 )
23 a3 = np . array ( a3 )
24 P = Alpha * np . array ( P ) # alpha * f ( x )
25 C = Beta * np . array ( C ) # beta * g ( x )
26 # Au lieu de maximiser la fonc obj , vous pouvez la minimiser .
27 minimax = int ( input ( " Donner la valeur de minimax (0 si maximisation et 1 si
minimisation ) : " ) )
28 if minimax :
29 Obj = np . array ( P + C ) # alpha * f ( x ) + beta * g ( x ) cas de minimisation minimax =1
30 else :
31 Obj = - np . array ( P + C ) # - alpha * f ( x ) - beta * g ( x ) cas de maximisation minimax =0
32 # Les contraintes d ’ inegalite
33 lhs_ineq = [ - a1 , # Contrainte >= multiplier l ’ inegalite ( >=) par -1 pour obtenir
3ème année licence Recherche Opérationnelle (2022/2023) Module : Outils de programmation pour la RO
Section A et B 25 mai 2023
( <=) .
34 a3 ] # Contrainte <=
35 rhs_ineq = [ - b1 , # Contrainte >=
36 b3 ] # Contrainte <=
37 # Contrainte d ’ egalite
38 lhs_eq = [ a2 ]
39 rhs_eq = [ b2 ]
40 # Contraintes de Min_j <= x_j <= Max_j
41 bnd =[]
42 for i in range ( n ) :
43 bnd . append (( Min [ i ] , Max [ i ]) ) # Bornes de x_i
44
45
Exercice 3. (7 pts)
1. Ecrire une classe Cercle en langage Python, permettant de représenter un cercle avec trois
attributs : le Rayon et les coordonnées du centre (x,y). Cette classe possède :
— Un constructeur permettant l’initialisation des attributs lors de la création d’un objet.
— Une méthode P erimetre() permettant de calculer le périmètre du cercle.
— Une méthode Surf ace() permettant de calculer la surface du cercle.
— Une méthode P ointAppartenance(self, x, y) de la classe qui permet de tester si un point
avec les coordonnées (x, y) appartient ou non au cercle.
— Une méthode CircleInterconnects(self, C) qui permet de tester si deux objets "self" et
"C" de la classe Cercle sont interconnectés.
2. Écrire un programme permettant de tester la classe Cercle.
Solution exercice 3.(4+3 Parties 1 et 2.
1 # 1) - - - - - - - - - - - - -4 pts - - - - - - - -
2 from math import pi
3 class Cercle :
4 def __init__ ( self , rayon , x , y ) :
5 self . rayon = rayon
6 self . x = x
7 self . y = y
8 def Perimetre ( self ) :
9 return 2 * pi * self . rayon
10 def Surface ( self ) :
11 return pi * self . rayon ** 2
12 def Poi ntAppart enance ( self , x , y ) :
13 distance = ( ( self .x - x ) ** 2 + ( self .y - y ) ** 2) ** 0.5
14 return distance <= self . rayon
3ème année licence Recherche Opérationnelle (2022/2023) Module : Outils de programmation pour la RO
Section A et B 25 mai 2023
15 def Ce r c le I nt e r co n ne c ts ( self , C ) :
16 distance = ( ( self .x - C . x ) ** 2 + ( self .y - C . y ) ** 2) ** 0.5
17
20 # 2 - - - - - - - - - - - - - - - - -3 - - - - - - - - - - - - - - - - - - - - - - - - - - - -
21 # Creation d ’ objets Cercle
22 C1 = Cercle ( 5 , 0 , 0)
23 C2 = Cercle ( 3 , 2 , 2)
24 # Appel des methodes Perimetre () et Surface ()
25 Perimetre_C1 = C1 . Perimetre ()
26 print ( ’ Perimetre de C1 = ’ , Perimetre_C1 )
27 Surface_C1 = C1 . Surface ()
28 print ( ’ Surface de C1 = ’ , Surface_C1 )
29 Perimetre_C2 = C2 . Perimetre ()
30 print ( ’ Perimetre de C2 = ’ , Perimetre_C2 )
31 Surface_C2 = C2 . Surface ()
32 print ( ’ Surface de C2 = ’ , Surface_C2 )
33 # Appel aux methodes Po intAppar tenance () et Ce r cl e I nt e rc o n ne c ts ()
34 point_test = ( 1 , 1)
35
Bonne chance !