Skip to content
Snippets Groups Projects
Commit 83804248 authored by ARTHUR MADY's avatar ARTHUR MADY
Browse files

TP4

parent c56fda0d
Branches main
No related tags found
No related merge requests found
......@@ -50,7 +50,7 @@ Z = c(A,B)
C = ax.contour(A, B, Z, [0])
# On retire cette courbe de niveau du graphique final
C.remove ()
#C.remove ()
# On trace la courbe 3D des points du graphe de f qui satisfont la contrainte
for ii, seg in enumerate(C.allsegs[0]) :
......@@ -68,3 +68,47 @@ ax.quiver (a, b, f(a,b), grad_f[0], grad_f[1], 0, color='blue')
plt.show ()
#Q1
#f(a,b) + lambda*c(a,b)
#Q2
#Au niveau de n1, on voit que le grand vecteur est perpendiculaire a la courbe de niveau
#Les gds vecteurs sont delta-f, les petits delta-c
#Q3 les gradiants sont parallèles (presque)
#Le minimum local peut être l'un des deux
#En u5, delta-f est dirigé vers l'intérieur du cercle et donc la courbe de niveau en haut du graphique contient le minimum local de la foncton f
#U5 est surement la solution optimale.
#Q4
#Quand on évalue c(a;b) en (a*,b*), on obtient une valeur > 1/2
# Donc (a*,b*) ne satisfait pas la contrainte c(a,b) < 1/2
# Donc la solution optimale du problème d'optimisation avec contrainte se situe sur
#le cercle (pas à l'intérieur)
#Donc la contrainte sera active. On peut la transformer en une contrainte d'égalité
#c(a,b) = 1/2
#Q5 Graphiquement la solution optimale = (a,b) = (1.75, 0.68)
#Q7
def Lagrangien (u):
a, b, lmbda = u
return f(a,b) + lmbda*c(a,b)
grad_L = ag.grad (Lagrangien)
H_L = ag.hessian (Lagrangien)
u = np.array([1.8,.9,0],dtype=np.float64)
# a b lambda
for i in range(5):
g= grad_L (u)
H = H_L (u)
h = np.linalg.solve (H, -g)
u = u + h
print ('u =',u)
print('gradient du lagrangien =',g)
print ('valeurs propres hessienne du lagrangien = ',np.linalg.eigvalsh (H))
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment