︠1563981e-5201-4038-a7ed-20b1e196e06fasi︠ %auto typeset_mode(True) ︡1fd7556c-dbf5-47d7-bd7d-e4559806ac25︡{"done":true}︡ ︠a97f3ad1-11bc-4334-8e6c-f3b0502b3b33i︠ %md ## Les multiplicateurs de Lagrange **Exemple:** On considère la fonction $f(x,y)=(x-1)^2+(y-2)^2$. Parmi les points $(x,y)$ sur le cercle $x^2+y^2=45$, on cherche celui où; $f$ atteint son minimum/maximum. ︡3ec99a1a-5bad-4a05-b578-11a1b6f14e29︡{"done":true,"md":"## Les multiplicateurs de Lagrange \n**Exemple:** On considère la fonction $f(x,y)=(x-1)^2+(y-2)^2$. Parmi les points $(x,y)$ sur le cercle $x^2+y^2=45$, on cherche celui où; $f$ atteint son minimum/maximum."} ︠29c2a449-5fdb-44be-9d11-a4e2c1005513s︠ import matplotlib.cm; var('u,v') f(x,y)=(x-1)^2+(y-2)^2 r=sqrt(45) ︡bf0af4ec-0646-43e2-bac1-cefe7ba8b610︡{"stdout":"(u, v)\n"}︡{"done":true} ︠2494cd72-7ac5-45ca-8dad-73d0d4184414s︠ cmsel = [colormaps['autumn'](i) for i in sxrange(0,1,0.05)] ︡7ccb88da-b11f-4ba7-8e46-713152adadd5︡{"done":true} ︠0a8f9b9f-98ea-4f4d-82b1-ea84cee02febi︠ %md D'un point de vue plus géométrique, il s'agit de trouver le point sur le paraboloïde et au dessus du cercle bleu qui est le plus hau / le plus bas. ︡939009a7-2318-46ca-b04e-287af0c54c52︡{"done":true,"md":"D'un point de vue plus géométrique, il s'agit de trouver le point sur le paraboloïde et au dessus du cercle bleu qui est le plus hau / le plus bas."} ︠9c827114-28e3-4d62-8f60-4063834d7dcas︠ S=plot3d(f(u,v),(u,-r,r),(v,-r,r), adaptive = True, color = cmsel); C=parametric_plot3d([r*cos(v),r*sin(v),0],(v,0,2*pi), color='blue', thickness=2) CS=parametric_plot3d([r*cos(v),r*sin(v),f(r*cos(v), r*sin(v))],(v,0,2*pi), color='blue', thickness=3) show(S+C+CS, frame_aspect_ratio=[5,5,1]); ︡37f0cfac-39ba-4c28-93fc-be49f13d6faa︡{"file":{"filename":"12802f78-b4d0-44bc-af41-c4a41f0b81ba.sage3d","uuid":"12802f78-b4d0-44bc-af41-c4a41f0b81ba"}}︡{"done":true} ︠6b996f0c-02c3-4c0c-8e89-5eb1f698799bs︠ df=f.gradient() ︡d41027c3-15a5-4e74-9d7d-3ec85a3bc975︡{"done":true} ︠5b9e5440-78db-4dc6-9f48-098656e2ea05︠ %md Voyons le problème en termes de courbes de niveau et du champ gradient de $f$. Rappelons que $\nabla f(x_0,y_0)$ donne la direction dans laquelle il faut se déplacer à partir de $(x_0,y_0)$ pour avoir la plus forte augmentation dans la valeur de $f$ . Ci-bas, on trouve les courbes de niveau de $f$, le champ $\nabla f$ et la courbe $x^2+y^2=45$ (en bleu) ︡a346abb6-2356-4433-94d2-32b52d696995︡{"done":true,"md":"Voyons le problème en termes de courbes de niveau et du champ gradient de $f$. Rappelons que $\\nabla f(x_0,y_0)$ donne la direction dans laquelle il faut se déplacer à partir de $(x_0,y_0)$ pour avoir la plus forte augmentation dans la valeur de $f$ .\n\nCi-bas, on trouve les courbes de niveau de $f$, le champ $\\nabla f$ et la courbe $x^2+y^2=45$ (en bleu)"} ︠2d19d452-c328-4df2-9ad1-2e3d992a4167s︠ Champf=plot_vector_field(df, (x,-r,r), (y,-r,r), color='black',aspect_ratio=1) Contourf=contour_plot(f(u,v),(u,-r,r),(v,-r,r),cmap='autumn', labels=True, linestyles='solid',label_colors = "black",aspect_ratio=1); Cercle = parametric_plot([r*cos(u),r*sin(u)],(u,0,2*pi), color='blue', thickness=2,aspect_ratio=1) show(Contourf+Cercle+Champf, figsize=6); ︡2262222e-8688-4413-861b-296a2d0e3607︡{"file":{"filename":"/home/user/.sage/temp/project-b317db30-e79c-4087-a881-6ba4c99c270b/152/tmp_93bVQE.svg","show":true,"text":null,"uuid":"17807f16-3fd7-49fb-9090-bb37cf4a8fa8"},"once":false}︡{"done":true} ︠2adf9f40-7a68-4969-8504-22956d4afd1fi︠ %md La courbe de contrainte est donnée; par $g(x,y)=45$, où $g(x,y)=x^2+y^2$, c'est donc une courbe de niveau pour la fonction de contrainte $g$. Cette fonction a aussi un champ gradient, $\nabla g$. Dessinons les vecteurs de ce champ, mais seulement ceux qui correspondent aux points sur la courbe. ︡3ecb1e66-1270-4d4e-8758-775a3df4582f︡{"html": "
La courbe de contrainte est donné par $g(x,y)=45$, où $g(x,y)=x^2+y^2$, c'est donc une courbe de niveau pour la fonction de contrainte $g$. Cette fonction a aussi un champ gradient, $\\nabla g$. Dessinons les vecteurs de ce champ, mais seulement ceux qui correspondent aux points sur la courbe.
"}︡ ︠7847e64f-207e-4832-a8d7-f30e480e1853s︠ Pts=[(r*cos(2*t*pi/20),r*sin(2*t*pi/20)) for t in range(20)]; Pts1=[(1.2*r*cos(2*t*pi/20),1.2*r*sin(2*t*pi/20)) for t in range(20)]; Vecs=[arrow(Pts[j],Pts1[j],color='blue', width=1) for j in range(20)]; Champg=sum(Vecs) ︡5056d76f-e201-4f0d-9865-6b6648adf64c︡{"done":true}︡ ︠ca7a39ae-a9d9-410d-8743-4ae9af780968si︠ show(Contourf+Cercle+Champf+Champg,aspect_ratio=1, figsize=8); ︡0ce7b14c-c9a7-4c46-adc8-94eb19f42346︡{"file":{"filename":"/projects/b317db30-e79c-4087-a881-6ba4c99c270b/.sage/temp/compute5-us/3283/tmp_tre8bp.svg","show":true,"text":null,"uuid":"a86a1098-6861-4596-a32b-35708edd0f4e"},"once":false}︡{"html":""}︡{"done":true}︡ ︠177426e8-9ba7-4c66-af96-e69e916c8739i︠ %htmlConjecture : Les points de maximum / minimum de $f$ sur la courbe $g=45$ sont précisément ceux pour lequels les vecteurs gradient $\nabla f$ et $\nabla g$ sont colinéaires. En d'autres termes, il doit exister $\lambda\in \mathbb{R}$ tel que $$\nabla f = \lambda \nabla g$$
Demandons à SAGE de résoudre les équations qu'on a besoin de résoudre. La fonction $f$ a déjà été définie, mais pas $g$, et nous avons également besoin d'une variable supplémentaire $L$, pour $\lambda$.
Conjecture : Les points de maximum / minimum de $f$ sur la courbe $g=45$ sont précisément ceux pour lequels les vecteurs gradient $\\nabla f$ et $\\nabla g$ sont colinéaires. En d'autres termes, il doit exister $\\lambda\\in \\mathbb{R}$ tel que $$\\nabla f = \\lambda \\nabla g$$
\nDemandons à SAGE de résoudre les équations qu'on a besoin de résoudre. La fonction $f$ a déjà été définie, mais pas $g$, et nous avons également besoin d'une variable supplémentaire $L$, pour $\\lambda$.
Ici, $df$ est le gradient de $f$, c'est donc une paire de fonctions de deux variables (voir plus bas). Ainsi df[0] est la première de ces deux fonctions (il y a des gens qui commencent à compter à 0), c'est à dire $\frac{\partial f}{\partial x}$ puis $df[0](x,y)$ est la première de ces fonctions évaluée en (x,y).
︡1adc4392-49eb-4244-9371-ad64d72b3656︡{"html": "Ici, $df$ est le gradient de $f$, c'est donc une paire de fonctions de deux variables (voir plus bas). Ainsi df[0] est la première de ces deux fonctions (il y a des gens qui commencent à compter à 0), c'est à dire $\\frac{\\partial f}{\\partial x}$ puis $df[0](x,y)$ est la première de ces fonctions évaluée en (x,y).
"}︡ ︠268e1c67-f146-476a-8f60-d6046b586f47s︠ dg ︡3b392b52-c261-467c-889d-dc6decc4909f︡{"html":"