1.pract2(optimización14)(2)

3
  1 PRACTICA 2: OPTIMIZACION DE CAMPOS ESCALARES Los objetivos de esta práctica son de cálculo simbólico con MATLAB para: 1) Determinar el gradiente (jacobiana) de una función escalar (vectorial). 2) Aplicación al cálculo de extremos de una función escalar: determinación de los puntos críticos y de su carácter correspondiente en un problema de optimización de funciones escalares. Vamos a usar comandos de simbólico para determinar el gradiente, los puntos críticos, la Hessiana y la clasificación de los puntos críticos de una función escalar. En el caso z = f(x,y), haremos también la gráfica de ésta en torno a los puntos críticos que hayan resultado.  Comandos básicos a utilizar : syms jacobian solve subs y eig  1.- Cálculo del gradiente, de la hessiana y de las derivadas parciales de una función escalar en forma simbólica .   Ejemplo 1.- Sea la función escala r: f (x, y) = sen(xy) + cos(xy  2  ) .  a) Calcular su gradiente y su matriz hessiana ;  b) Comprobar el resultad o obtenido hallando su s derivadas parciales su cesivas de orden 1 y .2 con el comando diff.  c) Determinar los puntos (x,y) en los que se a nula el gradiente de f puntos críticos de f).  d) Hallar el gradiente y la hess iana de f en los puntos (0, 0) y (1,-1)  a) >> sym s x y ; f = si n( x*y) + cos( x*y^ 2) ; G f = j aco bi an ( f )  %Gf = Gradiente de f G f = [ y*co s( x*y) - y^ 2*si n( x*y^ 2) , x*cos( x*y) - 2*x*y*si n( x*y^ 2) ] >> H f = j acobi an( G f ) % Hf = Hessiana de f H f = [ - y^ 4*cos( x*y^ 2) - y^ 2*si n( x*y), cos(x*y) - 2*y*si n( x*y^ 2) - x*y*si n( x*y)- 2*x*y^ 3* cos(x*y^ 2) ]  [ cos( x*y) -2*y*si n( x*y^2) - x*y*si n(x*y) -2*x*y^ 3*cos( x*y^2) , - 2*x*si n( x*y^2) - x^2*si n( x*y) -4*x^ 2*y^ 2*cos( x*y^ 2) ]   b) % NOTA: También podríamos determinar las derivadas parciales sucesivas de una función escalar utilizando el comando diff. >> syms x y ; f=sin(x*y)+cos(x*y^2); >> fx=diff(f,x,1), fy=diff(f,y,1),fxx=diff(f,x,2),fyy=diff(f,y,2), fxy=diff(fx,y,1) f x = y*cos( x*y) - y^2*si n( x*y^2) f y = x*cos(x*y) - 2*x*y*si n( x*y^ 2) f xx =-y^4*cos(x*y^2)- y^ 2*si n( x*y) f yy= - 2*x*si n(x*y^2)-x^2*si n(x*y)-4*x^2*y^2*cos( x*y^ 2) f xy = cos( x*y) - 2*y*si n( x*y^ 2) - x*y*si n( x*y) - 2*x*y^ 3*cos( x*y^ 2) f yx =cos( x*y) - 2*y*si n( x*y^ 2) - x*y*si n( x*y) - 2*x*y^ 3*cos( x*y^ 2)  c) >> [ a, b] =sol ve ( G f ( 1) , G f ( 2) ) a = 0 b = 0  d) >> Gf0=subs(Gf,{x,y},{0,0}), Hf0=subs(Hf,{x,y},{0,0}), Gf0 = 0 0 Hf0 = 0 1 1 0 >> Gf1=subs(Gf,{x,y},{1,1}), Hf1=subs(Hf,{x,y},{1,1}), Gf1 = -0.3012 -1.1426 Hf1 = -1.3818 -3.0647 -3.0647 -4.6856 

Upload: roberto-e-mencia

Post on 01-Nov-2015

214 views

Category:

Documents


0 download

DESCRIPTION

practica optinizacion

TRANSCRIPT

  • 1

    PRACTICA2: OPTIMIZACION DE CAMPOS ESCALARES

    Los objetivos de esta prctica son de clculo simblico con MATLAB para:

    1) Determinar el gradiente (jacobiana) de una funcin escalar (vectorial). 2) Aplicacin al clculo de extremos de una funcin escalar: determinacin de los puntos crticos y de su

    carcter correspondiente en un problema de optimizacin de funciones escalares.

    Vamos a usar comandos de simblico para determinar el gradiente, los puntos crticos, la Hessiana y la clasificacin de los puntos crticos de una funcin escalar. En el caso z = f(x,y), haremos tambin la grfica de sta en torno a los puntos crticos que hayan resultado.

    Comandos bsicos a utilizar: syms jacobian solve subs y eig

    1.- Clculo del gradiente, de la hessiana y de las derivadas parciales de una funcin escalar en forma simblica.

    Ejemplo 1.- Sea la funcin escalar: f (x, y) = sen(xy) + cos(xy2) .

    a) Calcular su gradiente y su matriz hessiana ; b) Comprobar el resultado obtenido hallando sus derivadas parciales sucesivas de orden 1 y .2 con el comando diff. c) Determinar los puntos (x,y) en los que se anula el gradiente de f puntos crticos de f). d) Hallar el gradiente y la hessiana de f en los puntos (0, 0) y (1,-1)

    a) >> syms x y ; f=sin(x*y)+cos(x*y^2); Gf=jacobian(f) %Gf = Gradiente de f

    Gf = [ y*cos(x*y) - y^2*sin(x*y^2), x*cos(x*y) - 2*x*y*sin(x*y^2)]

    >> Hf=jacobian(Gf) % Hf = Hessiana de f

    Hf= [ -y^4*cos(x*y^2)-y^2*sin(x*y),cos(x*y)-2*y*sin(x*y^2)-x*y*sin(x*y)-2*x*y^3* cos(x*y^2)]

    [cos(x*y)-2*y*sin(x*y^2)-x*y*sin(x*y)-2*x*y^3*cos(x*y^2), -2*x*sin(x*y^2)-x^2*sin(x*y)-4*x^2*y^2*cos(x*y^2)]

    b) % NOTA: Tambin podramos determinar las derivadas parciales sucesivas de una funcin escalar utilizando el comando diff. >> syms x y ; f=sin(x*y)+cos(x*y^2); >> fx=diff(f,x,1), fy=diff(f,y,1),fxx=diff(f,x,2),fyy=diff(f,y,2), fxy=diff(fx,y,1)

    fx = y*cos(x*y) - y^2*sin(x*y^2) fy = x*cos(x*y) - 2*x*y*sin(x*y^2) fxx =-y^4*cos(x*y^2)-y^2*sin(x*y) fyy=-2*x*sin(x*y^2)-x^2*sin(x*y)-4*x^2*y^2*cos(x*y^2) fxy = cos(x*y) - 2*y*sin(x*y^2) - x*y*sin(x*y) - 2*x*y^3*cos(x*y^2) fyx =cos(x*y) - 2*y*sin(x*y^2) - x*y*sin(x*y) - 2*x*y^3*cos(x*y^2)

    c) >> [a,b]=solve(Gf(1),Gf(2)) a = 0 b = 0

    d) >>Gf0=subs(Gf,{x,y},{0,0}), Hf0=subs(Hf,{x,y},{0,0}), Gf0 = 0 0 Hf0 = 0 1 1 0 >> Gf1=subs(Gf,{x,y},{1,1}), Hf1=subs(Hf,{x,y},{1,1}), Gf1 = -0.3012 -1.1426 Hf1 = -1.3818 -3.0647 -3.0647 -4.6856

  • 2

    2.- Clculo de extremos (libres) de una funcin escalar. Teniendo en cuenta el ejemplo anterior cabe deducir que para estudiar los extremos de una funcin escalar de varias variables en modo simblico los pasos a seguir sern: 1) Introducir las variables independientes como variables simblicas a travs del comando syms. 2) Introducir la funcin cuyos extremos se quieren estudiar (convendr ponerle un nombre como f, z, w, ). 3) Calcular su gradiente y matriz hessiana de modo general de modo simblico ( con el comando jacobian ) 4) Determinar los puntos crticos resolviendo el sistema resultante al igualar a 0 cada una de las componentes del gradiente me- diante el comando solve ( no olvidar indicar en la salida un vector con tantas componentes como variables) 5) Estudiar el carcter de los puntos crticos resultantes determinando en cada uno de ellos la matriz hessiana correspondiente (con subs) y el tipo de la forma cuadrtica que definira ( aplicando comando eig). 6) Si la funcin considerada fuera de dos variables convendr corroborar los resultado viendo su representacin grfica.

    Ejemplo 2.- Estudiar los extremos de la funcin: z = x2 - 4x + y2 y xy y representarla grficamente

    >> f=x^2-4*x+y^2-y-x*y; gf=jacobian(f), hf=jacobian(gf)

    gf = [ 2*x-4-y, 2*y-1-x] hf = [ 2, -1] [ -1, 2]

    >> sol=solve('2*x-4-y=0','2*y-1-x=0') x: [1x1 sym] y: [1x1 sym]

    >> sol.x ans = 3 >> sol.y ans = 2

    %Nota: el mismo resultado con el comando solve se podra haber obtenido directamente poniendo simplemente:

    >> [a,b]=solve('2*x-4-y=0','2*y-1-x=0')

    a = 3

    b = 2

    >> ezmesh(f)

    Determinar el carcter del punto crtico (3,2).

    Ejemplo 3.- Estudiar los extremos de la funcin: f(x,y,z)= ( x2 + y + z ) 2 4 (( x2 + y2 + z2 )

    >> syms x y z; f=(x^2+y+z)^2-4*(x^2+y^2+z^2); gf=jacobian(f) gf = [ 4*(x^2+y+z)*x-8*x, 2*x^2-6*y+2*z, 2*x^2+2*y-6*z]

    >> [a,b,c]=solve('4*(x^2+y+z)*x-8*x','2*x^2-6*y+2*z','2*x^2+2*y-6*z') a = b = c = [ 0] [ 0] [ 0] [ 1] [ 1/2] [ 1/2] [ -1] [ 1/2] [ 1/2]

    >> hf=jacobian(gf) hf = [ 12*x^2+4*y+4*z-8, 4*x, 4*x] [ 4*x, -6, 2] [ 4*x, 2, -6]

    >> hf1=subs(hf,{x,y,z},{0,0,0}) hf1 = -8 0 0 0 -6 2 0 2 -6

    >> eig(hf1) ans = -8 -8 -4 % la forma cuadrtica asociada a hf1 es definida negativa por lo que en el punto crtico (0,0,0) hay un mximo relativo

    Completar el ejemplo3 averiguando el carcter de los dems puntos crticos.

  • 3

    3.- Clculo de extremos condicionados. Nota: En esto problemas se partir de la funcin de Lagrange correspondiente y convendr declarar desde el principio los

    multiplicadores a utilizar tambin como variables simblicas.

    Ejemplo 4.- Estudiar los extremos de la funcin: f(x,y)= x2 + x.y + y2 condicionados a que x2 + y2 1 Como f(x,y) es continua y diferenciable en el conjunto D={(x,y) / x2 + y2 1 } es un compacto, sabemos a priori que habr extremos absolutos. Para determinar-los bastar con hallar los posibles extremos relativos de f(x,y) en D y los posibles extremos relativos condicionados a que estn en la frontera de D. Entre todos los puntos crticos resultantes bastar con evaluar en ellos la funcin f(x,y) para poder decidir donde se encuentra el mximo y el mnimo absolutos de f en D.

    El clculo de los puntos crtico en el interior de C se deja al alumno como ejercicio previo con MATLAB.

    Los puntos crticos en la frontera los obtendremos resolviendo el problema: extremos de f(x,y)= x2 + x.y + y2 condicionados a que x2 + y2 = 1

    La funcin de Lagrange ser por tanto : L = ( x2 + x.y + y2 ) + m.( x2 + y2 -1)

    >> syms x y m; L=(x^2+x*y+y^2)+m*(x^2+y^2-1); gL=jacobian(L) gL = [ x^2+y^2-1, 2*x+y+2*m*x, x+2*y+2*m*y]

    >> [a,b,c]=solve(x^2+y^2-1, 2*x+y+2*m*x, x+2*y+2*m*y) a = b = c = [ -3/2] [1/2*2^(1/2)] [1/2*2^(1/2)] [ -3/2] [-1/2*2^(1/2)] [-1/2*2^(1/2)] [ -1/2] [ 1/2*2^(1/2)] [1/2*2^(1/2)] [ -1/2] [1/2*2^(1/2)] [-1/2*2^(1/2)]

    >> L1=subs (L,{m, x, y},{-3/2, 1/2*2^(1/2), 1/2*2^(1/2)} ) L1 = 1.5000 >> L2=subs (L,{m, x, y},{-3/2, -1/2*2^(1/2), -1/2*2^(1/2)} ) L2 = 1.5000 >>L3=subs (L,{m, x, y},{-1/2, -1/2*2^(1/2), 1/2*2^(1/2)} ) L3 = 0.5000 >> L4=subs (L,{m, x, y},{-1/2, 1/2*2^(1/2), -1/2*2^(1/2)} ) L4 = 0.5000

    Ejercicio:

    Evaluar el carcter de los puntos crticos obtenidos para extremo condicionado, estudiando la matriz hessiana correspondiente.

    EJERCICIOS.-

    1) Hallar los extremos de los siguientes campos escalares de dos variables y en los casos a),b) y c) representar grficamente la superficie que les corresponde:

    a) f(x,y) = x3 + y3 - 3x 3y + 5 ; b) f(x,y) = x2 + y2 + x 2y xy + 1 c) f(x,y) = x2y + xy2 - 3xy ; d) f(x,y,z) = 2x2 + 2y2 + z2 2xy + yz 7y 4z

    2) Determinar el punto de la superficie z = x2 + y2 ms cercano al punto (2,3,1).