Está en la página 1de 3

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=
[

% Hf = Hessiana de f

-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)

fxx =-y^4*cos(x*y^2)-y^2*sin(x*y)

fy = x*cos(x*y) - 2*x*y*sin(x*y^2)
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}),
0
0
Hf0 =
Gf1=subs(Gf,{x,y},{1,1}), Hf1=subs(Hf,{x,y},{1,1}),
Gf1 = -0.3012
-1.1426

Gf0 =
0
1

Hf1 =

1
0

>>
-1.3818
-3.0647

-3.0647
-4.6856

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 mediante 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


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

y representarla grficamente

%Nota: el mismo resultado con el comando solve se podra haber


obtenido directamente poniendo simplemente:

hf=jacobian(gf)

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

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

b=

>> ezmesh(f)

>> 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

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=
[ 0]
[ 1]
[ -1]

b=
[ 0]
[ 1/2]
[ 1/2]

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

4*x,
-6,
2,

c=
[ 0]
[ 1/2]
[ 1/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.- 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]
Ejercicio:
>> [a,b,c]=solve(x^2+y^2-1, 2*x+y+2*m*x, x+2*y+2*m*y)

a=
[ -3/2]
[ -3/2]
[ -1/2]
[ -1/2]

b=
[1/2*2^(1/2)]
[-1/2*2^(1/2)]
[ 1/2*2^(1/2)]
[1/2*2^(1/2)]

c=
[1/2*2^(1/2)]
[-1/2*2^(1/2)]
[1/2*2^(1/2)]
[-1/2*2^(1/2)]

Evaluar el carcter de los puntos crticos obtenidos


para extremo condicionado, estudiando la matriz
hessiana correspondiente.

>> 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

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).

También podría gustarte