Optimización Multidimensional no restringida 2020
Transcript of Optimización Multidimensional no restringida 2020
Matemática Superior Aplicada
Optimización Multidimensionalno restringida
2020
Prof.: Dr. Alejandro S. M. Santa Cruz
J.T.P.: Dr. Juan Ignacio Manassaldi
Aux. 1ra: Ing. Amalia Rueda
Repaso
Repaso
Repaso
( ) ( )( )0 0
0
1
!
kk
k
f x f x x xk
=
= −Serie de Taylor en una variable:
( ) ( ) ( )( )0 0 0 0, 'f x x f x f x x x= + −
( ) ( ) ( )( ) ( )( )2
0 0 0 0 0 0
1, ' ''
2f x x f x f x x x f x x x= + − + −
Aproximación de primer orden:
Aproximación de segundo orden:
Repaso
Se define el diferencial r de una función f como:
( ) ( ) ( ) ( )( )0
0 0 0
1 1 1
rn n nr
i j ki j k i j k
r sumatorias
f xd f x x x x x x x
x x x= = =
= − − −
( ) ( )( )
( )( )
( )( )0 0 0
0 0 01 21 2
nn
f x f x f xdf x x x x x x x
x x x
= − + − + + −
( ) ( )( )0
0
1
n
ii i
f xdf x x x
x=
= −
Para r=1:
Serie de Taylor en multivariable: ( ) ( ) ( )0
1
1
!
k
k
f x f x d f xk
=
= +
Repaso
( )
( )
( )
0
1
0
2
0
n
f x
x
f x
x
f x
x
( ) ( ) ( )0 0 01 2 nx x x x x x− − −
( ) ( ) ( )0 0
Tdf x x x f x= −
( ) ( )( )
( )( )
( )( )0 0 0
0 0 01 21 2
nn
f x f x f xdf x x x x x x x
x x x
= − + − + + −
Repaso
Para r=2: ( ) ( ) ( )( )2
02
0 0
1 1
n n
i ji j i j
f xd f x x x x x
x x= =
= − −
( )
( ) ( )( )
( ) ( )( )
( ) ( )( )
( ) ( )( )
( ) ( )( )
( ) ( )( )
( ) ( )( )
( ) ( )( )
( ) ( )
2
2 2 2
0 0 0
0 0 0 0 0 01 1 1 2 11 1 1 2 1
2 2 2
0 0 0
0 0 0 0 0 02 1 2 2 22 1 2 2 1
2 2
0 0
0 0 0 0 0 01 21 2
nn
nn
n n n nn n
d f x
f x f x f xx x x x x x x x x x x x
x x x x x x
f x f x f xx x x x x x x x x x x x
x x x x x x
f x f xx x x x x x x x x x x x
x x x x
=
− − + − − + + − − +
+ − − + − − + + − − +
+ − − + − − + + − −
( )2
0
n n
f x
x x
Repaso
( ) ( ) ( )( )2 2
0 0 0
Td f x x x f x x x= − −
( ) ( ) ( )( )
( ) ( ) ( )( )
( ) ( ) ( )( )
2 2 2
0 0 0
0 11 1 1 2 1
2 2 2
0 0 0
0 22 1 2 2 2
2 2 2
0 0 0
0
1 2
n
n
nn n n n
f x f x f xx x
x x x x x x
f x f x f xx x
x x x x x x
f x f x f xx x
x x x x x x
−
−
−
( ) ( ) ( )0 0 01 2 nx x x x x x− − −
Matriz Hessiana
( ) ( ) ( )( )
( ) ( )( )
( ) ( )( )
( ) ( )( )
( ) ( )( )
( ) ( )( )
( ) ( )( )
( ) ( )( )
( ) ( )
2 2 2
0 0 02
0 0 0 0 0 01 1 1 2 11 1 1 2 1
2 2 2
0 0 0
0 0 0 0 0 02 1 2 2 22 1 2 2 1
2 2
0 0
0 0 0 0 0 01 21 2
nn
nn
n n n nn n
f x f x f xd f x x x x x x x x x x x x x
x x x x x x
f x f x f xx x x x x x x x x x x x
x x x x x x
f x f xx x x x x x x x x x x x
x x x x
= − − + − − + + − − +
+ − − + − − + + − − +
+ − − + − − + + − −
( )2
0
n n
f x
x x
Repaso
( ) ( ) ( ) ( )0 0 0 0,T
f x x f x x x f x= + −
( ) ( ) ( ) ( ) ( ) ( )( )2
0 0 0 0 0 0 0
1,
2
T Tf x x f x x x f x x x f x x x= + − + − −
Aproximación de primer orden:
Aproximación de segundo orden:
Repaso
Introducción
Los métodos que se han ideado se pueden clasificar en tres amplias categorías según el tipo de información que debe proporcionar el usuario:
• Métodos de búsqueda directa, que utilizan solo valores de función.
• Métodos de gradiente (primer orden), que requieren estimaciones de la primera derivada de ƒ(x).
• Métodos de segundo orden, que requieren estimaciones de la primera y segunda derivada de ƒ(x).
Método de una variable a la vez
Descenso mas pronunciado
Método de Newton
Introducción - Búsqueda de línea
• La búsqueda de línea nos permite encontrar el valor mínimo (o
máximo) que toma una función sobre una dirección determinada
de búsqueda.
• Para realizar la búsqueda de línea sobre ƒ(x), necesitamos un valor
perteneciente al dominio de la función x0 y una dirección de
búsqueda d.
• Partiendo del punto x0 y utilizando la dirección en el espacio d
podemos encontrar el valor mínimo que toma la función mediante
una optimización unidimensional.
0dx x +=
Ecuación de todos los puntos sobre la dirección d desde x0
Búsqueda de línea
0dx x +=
Ecuación de todos los puntos sobre la dirección d desde x0:
Para encontrar el valor mínimo sobre esta dirección se debe resolver el siguiente problema:
( )0. dMin f x +
¡Es un problema de optimización unidimensional!
Solo debo encontrar el que minimiza f
Búsqueda de línea - Ejemplo
( ) 2 2
1 1 2 28 4 5f x x x x x= + +
Búsqueda de línea - Ejemplo
( ) 2 2
1 1 2 28 4 5f x x x x x= + +0 4
4x
− =
−
1
0d
=
Búsqueda de línea - Ejemplo
( ) ( )( ) ( )2 2
8 4 4 4 4 5 4Min − + + − + − + −
0 4
4x
− −
=1
0d
=0
dx x +→ =
4 1
4 0x
−+
− =
4
4x
− + −
→ =
( )0. dMin f x + ( ) 2 2
1 1 2 28 4 5f x x x x x= + +
Búsqueda de línea - Ejemplo
( ) ( )( ) ( )2 2
8 4 4 4 4 5 4Min − + + − + − + −
( )0df x +
5óptimo =
Búsqueda de línea - Propuesta
0 4
4x
− =
−
( )
( )
cos 4
4d
sen
=
( ) 2 2
1 1 2 2. 8 4 5Min f x x x x x= + +
• En el método de una variable a la vez, buscamos el mínimo a lo largo de las direcciones paralelas a los ejes.
• Este proceso se realiza de manera iterativa hasta que no sea posible una mejora en la FO.
• El método de optimización unidimensional elegido influye en el desempeño del método.
• Este método puede no converger y en algunos casos su convergencia resulta muy lenta.
• Estos problemas se pueden evitar cambiando las direcciones de búsqueda de una manera favorable en lugar de mantenerlas siempre paralelas a los ejes de coordenadas.
Método directo: “Una variable a la vez”
Una variable a la vez - Algoritmo
( )0
1 2; , , ; 1n
nx D d d d k =
( )( )( ) ( )
*
*
.k
i
k k
i
Min f x d
x x d
= +
= +
1i a n=
1k k= +
( ) ( )1k kx x
−=
( ) ( )1k kx x tol
−−
no( )
*k
x x=
si
Una variable a la vez - Ejemplo
( ) 2 2
1 1 2 2. 8 4 5Min f x x x x x= + + ( )0 4
4x
− =
−
( ) 2 2
1 1 2 2. 8 4 5Min f x x x x x= + +
( )0
1
2
4
4
1
0
0
1
1k
x
d
d
− −
=
=
=
=
( ) ( )01 4
4x x
− −
= =
Una variable a la vez - Ejemplo
( )( )1
1
1
. 5d
i
Min f x +
=
= → =
( ) ( )1 1
1x x d= + ( )1 4 1 15
4 0 4x
−+ =
− − → =
( )( )1
2
2
. 3.6d
i
Min f x +
=
= → =
( ) ( )1 1
2x x d= + ( )1 1 0 13.6
4 1 0.4x
+ =
− − → =
( ) ( )0 14 1;
4 0.4x x
− − −
= =
( )( )( )( )
0
1
272
7.2
f x
f x
=
→ =
¿? ¡Seguimos!
( )1
1
2
1
0.4
1
0
0
1
2k
x
d
d
−
=
=
=
=
( ) ( )2 1 1
0.4x x
−
= =
Una variable a la vez - Ejemplo
( )( )2
1
1
. 0.9d
i
Min f x +
=
= → = −
( ) ( )2 2
1x x d= + ( )2 1 1 0.10.9
0.4 0 0.4x
− =
− − → =
( )( )2
2
2
. 0.36d
i
Min f x +
=
= → =
( ) ( )2 2
2x x d= +( )2 0.1 0 0.1
0.360.4 1 0.04
x
+ = − −
→ =
( ) ( )1 21 0.1;
0.4 0.04x x
− −
= =
( )( )( )( )
1
2
7.2
0.072
f x
f x
=
→ =
¿? ¡Seguimos!
( )2
1
2
0.1
0.04
1
0
0
1
3k
x
d
d
−
=
=
=
=
( ) ( )3 2 0.1
0.04x x
−
= =
Una variable a la vez - Ejemplo
( )( )3
1
1
. 0.09d
i
Min f x +
=
= → = −
( ) ( )3 3
1x x d= + ( )3 0.1 1 0.010.09
0.04 0 0.04x
− =
− − → =
( )( )3
2
2
. 0.036d
i
Min f x +
=
= → =
( ) ( )3 3
2x x d= + ( )3 0.01 0 0.010.036
0.04 1 0.004x
+ =
− − → =
( ) ( )2 30.1 0.01;
0.04 0.004x x
− −
= =
( )( )( )( )
2
3
0.072
0.0072
f x
f x
=
→ =
¿?¡Sigan!
( )0x
( )1x
( )2x
Una variable a la vez - Ejemplo
• Los métodos directo requieren solo valores de la función objetivo para avanzar hacia la solución.
• Los métodos directos son importantes, porque muy a menudo, en un problema práctico de ingeniería, esta es la única información confiable disponible.
• Por otro lado, incluso los mejores métodos directos pueden requerir un número excesivo de evaluaciones de la función para localizar la solución.
• El ítem anterior, combinado con el deseo natural de buscar puntos críticos, motiva a considerar métodos que emplean información del gradiente.
• Se supone en todo momento que existen y son continuas.
( ) ( ) ( )2, y f f fx x x
Métodos basados en el gradiente
• Todos los métodos que se presentaremos emplean un procedimiento de iteración similar, el nuevo punto se obtiene a partir de una dirección de búsqueda:
• En general se busca entonces encontrar el tamaño del salto en la dirección de s que minimiza el valor de la función objetivo (búsqueda de línea).
( ) ( ) ( )( )( )
( )( )
1
: *
:
:
k
k
nk
k k k k
x Estimación actual de x
Tamaño del salto
s Dirección de busqueda en el espaciox
x x s x
+ = +
Métodos basados en el gradiente
• Supongamos que estamos en el punto x(k) y deseamos determinar la dirección de “el mayor descenso local".
• A partir de la serie de Taylor, formamos una aproximación lineal a ƒ(x) a partir x(k) eliminando los términos de orden 2 y superiores:
• Evaluando la aproximación de la función objetivo en el siguiente punto (k+1) del proceso iterativo se llega a:
• Suponemos que la aproximación lineal representa a la función, por lo que:
( )( ) ( )( ) ( )( ) ( )( ),Tk k kkf x x f x f xx x= + −
( ) ( )( ) ( )( ) ( ) ( )( ) ( )( )1 1,Tk k k kk kf x x f x f xx x
+ += + −
( )( ) ( )( ) ( ) ( )( ) ( )( )1 1Tk k kk kf x f x f xx x
+ += + −
Método del descenso mas pronunciado
• Por lo tanto, el cambio en la función objetivo corresponde a:
• Siguiendo la estrategia de resolución propuesta:
• Reemplazando en la expresión anterior:
• Analizando, proponemos la siguiente dirección:
( )( ) ( )( ) ( ) ( )( ) ( )( )1 1Tk k kk kf x f x f xx x
+ +− = −
( ) ( ) ( )( ) ( ) ( )( ) ( )( )1 1T Tk k k kk k k kx x s sx x x x + += + =−
( )( ) ( )( ) ( )( ) ( )( )1 Tk k kk kf x f x s f xx+ − =
( )( ) ( )( )kks f xx = −
Método del descenso mas pronunciado
• Luego, reemplazando la dirección propuesta:
• El método (basado en el gradiente) mas simple consiste en tomar la dirección opuesta del gradiente y fijar como un parámetro fijo positivo:
• Esto tiene dos desventajas: la necesidad de hacer una elección adecuada para y la lentitud inherente cerca del mínimo debido a que en esta zona el gradiente tiende a cero.
( )( ) ( )( ) ( )( ) ( )( )( )( ) ( )( ) ( )( )
1
21
Tk k k kk
k k kk
f x f x f x f x
f x f x f x
+
+
− = −
− = −
( ) ( ) ( )( )1k k kx x f x+ = −
Método del descenso mas pronunciado
• El Método del descenso mas pronunciado propone realizar una optimización unidimensional para la elección de en cada iteración:
• Por lo tanto, en cada iteración se debe resolver el siguiente problema de optimización unidimensional:
• Este método es más confiable que el método de gradiente simple, pero la convergencia sigue siendo lenta para la mayoría de los problemas prácticos.
( ) ( ) ( ) ( )( )1k k k kx x f x+ = −
( ) ( )( )( ) ( ) ( ) ( )( )1* *min k kk kkf x x fx f xx += = − −
Método del descenso mas pronunciado
Ejemplo: ( ) ( ) ( )2 2
2 2
1 2 1 2. 11 7Min f x x x x x= ++ − + −
( ) ( ) ( )( )1k k kx x f x+ = −
( )0 2
2
1
x
=
=
( )1 44
20x
= ( )2 343150
38830x
− −
=
( )
1
0 2
2
10
x
−
=
=
( )1 6.2
3.8x
=( )2 74.003
23.181x
− −
=
( )
2
0 2
2
10
x
−
=
=
( )1 2.42
2.18x
=( )2 2.703
2.224x
=
Método simple (l=cte)
( )( )( ) ( )( ) ( )( )
2 211 2 1 2
2 221 2 1 2
2 2211 7
2 2 211 7
xx x x xf x
xx x x x
++ − + − =
++ − + −
( ) ( ) ( )2 2
2 2
1 2 1 2. 11 7Min f x x x x x= ++ − + −
( )
2
0
10
2
2x
−=
=
( )332.999989
2.000025x
=
510tol −=
( ) ( ) ( )2 2
2 2
1 2 1 2. 11 7Min f x x x x x= ++ − + −
( ) ( )( )( )( ) ( ) ( )( )
* 0 0
0 *1 0
min f x f x
x x f x
= −
= −
( )02
2x
=
Método del descenso mas pronunciado
( )( )( ) ( )( ) ( )( )
2 211 2 1 2
2 221 2 1 2
2 2211 7
2 2 211 7
xx x x xf x
xx x x x
++ − + − =
++ − + −
( )02
2x
=
( )132.999999
2.000002x
=
510tol −=
Método del descenso mas pronunciado
Método del descenso mas pronunciado - Algoritmo
( ) ( )0; ; 0nx D f x k =
( )( )( )( )
( ) ( )
*
1 *
.
k
k
k k
d f x
Min f x d
x x d
+
= −
= +
= +
1k k= +
* d tol
no( )1
*k
x x+
=
si
• El gradiente negativo apunta directamente hacia el mínimo solo cuando los contornos de ƒ(x) son circulares, por lo tanto el gradiente negativo no es una buena dirección global (en general) para funciones no lineales.
• El método del descenso mas pronunciado emplea aproximaciones lineales sucesivas al objetivo y requiere valores de la función objetivo y su gradiente en cada iteración.
• Un avance es considerar el uso de información de orden superior (derivadas segundas) en un esfuerzo por construir una estrategia de iteración más global.
Método de Newton
• A partir de la serie de Taylor, formamos una aproximación cuadrática a ƒ(x) eliminando los términos de orden 3 y superiores:
• Se propone una secuencia de iteración en la que el siguiente punto, es un punto en donde el gradiente de la aproximación es cero.
• Siguiendo la estrategia de resolución propuesta:
( )( ) ( )( ) ( )( ) ( )( ) ( )( ) ( )( ) ( )( )212
,T Tk k k kk k kf x x f x f x f xx x x x x x= + + − − −
( )( ) ( )( ) ( )( ) ( )( )2, k k k kf x x f x f x x x = + −
( )( ) ( )( ) ( ) ( )( )2 1 0k k k kf x f x x x+ + =−
( ) ( ) ( )( ) ( ) ( )( ) ( )( )1 1k k k kk k k kx x s sx x x x + += + =−
Método de Newton
• Reemplazando y asumimos =1:
• Por lo que finalmente:
( )( ) ( )( ) ( )( )2 0k k k kf x f x s x + =( )( ) ( )( )( ) ( )( )
12 k kks f x f xx
−
= −
( ) ( ) ( )( )( ) ( )( )1
1 2k k k kx x f x f x−
+ = −
Método de Newton - I
Ejemplo: ( ) ( ) ( )2 2
2 2
1 2 1 2. 11 7Min f x x x x x= ++ − + −
( )( )
( )
2 21 1 22 1 2
2 21 2 2 1 2
8 4 2 4 411
4 4 2 8 4 7
x x xx xf x
x x x x x
+ + ++ − =
+ + + + −
( )( ) ( )( ) ( )
2 211 2 1 2
2 221 2 1 2
2 2 211 7
2 2 211 7
xx x x xf x
xx x x x
++ − + − =
++ − + −
Método de Newton - I - Ejemplo
( )0 2
2x
=( ) 9
3.584428 1.848126T
x = −510tol −=
Método de Newton - I - Ejemplo
• El método de Newton minimizará una función cuadrática (desde cualquier punto de partida) en exactamente un paso.
• La experiencia ha demostrado que el método de Newton puede ser poco confiable para funciones no cuadráticas.
• Es decir, el paso de Newton a menudo será grande cuando x(0) está lejos de x*, y existe la posibilidad real de divergencia.
• Es posible modificar el método de una manera lógica y simple para asegurar el descenso agregando una búsqueda de línea como en el método del descenso mas pronunciado.
( ) ( )( )( ) ( )( )( )( ) ( ) ( )( )( ) ( )( )
1* 2
11 * 2
min k k kk
k k k k
f x f x f x
x x f x f x
−
−+
= −
= −
Método de Newton - II
• El método de Newton II (o modificado) es confiable y eficiente cuando la primera y la segunda derivada se calculan de manera precisa y económica (desde el punto de vista computacional).
• La mayor dificultad es la necesidad de calcular y resolver en cada iteración el conjunto de ecuaciones lineales que involucra el termino de la matriz Hessiana.
Método de Newton - II
Método de Newton - II
( ) ( )( )( )0 2; ; ; 0knx D f x f x k =
( )( )( ) ( )( )( )( )
( ) ( )
12
*
1 *
.
k k
k
k k
d f x f x
Min f x d
x x d
−
+
= −
= +
= +
1k k= +no
( )1*
kx x
+=
si
* d tol
( ) 02 2
Tx =
( ) 53 2
Tx =
510tol −=
• Programar las “function” necesarias en las dimensiones correctas.
• Manejar las incógnitas como un único vector.
• Tener una buena implementación de los algoritmos de búsqueda unidimensional.
• Una buena herramienta es programar una “function” que realice la búsqueda de línea.
Claves para implementar en Scilab
Volvemos a Optimización Unidimensional…
Método de interpolación parabólica sucesivas
Este método encuentra la parábola que pasa por tres puntos de la función y encuentra el extremo de la misma. Luego se eligen tres nuevos puntos y se repite el procedimiento hasta satisfacer la tolerancia.
¿Cómo elegir los tres valores de arranque?
¿Cómo encontrar la parábola?
¿Cómo encontrar el extremo de la parábola?
¿Cómo elijo los nuevos puntos?
¿Cuál es el criterio de tolerancia?
-1 0 1 2 3 4 5 6 7-20
-10
0
10
20
30
40
50
1x2x
3x
4 3 21 7( ) 5 2
4 3max f x x x x= − + −
Método de interpolación parabólica sucesivas
¿Cómo elegir los tres valores de arranque?
-1 0 1 2 3 4 5 6 7-20
-10
0
10
20
30
40
50
1x2x
3x
Solo necesitamos tres puntos del dominio
4 3 21 7( ) 5 2
4 3max f x x x x= − + −
Método de interpolación parabólica sucesivas
-1 0 1 2 3 4 5 6 7-20
-10
0
10
20
30
40
50
1x2x
3x
4 3 21 7( ) 5 2
4 3max f x x x x= − + −
Método de interpolación parabólica sucesivas
Encontramos la parábola que pasa por los tres puntos. El nuevo punto corresponde al extremo de la misma.
4x
2y ax bx c= + +
2
2
2
2.5 2.5 1 2.55729
3 3 1 0.25
3.5 3.5 1 3.27604
a
b
c
= −
Los tres puntos deben cumplir esta ecuación
¿Cómo encontrar la parábola?
La parábola debe pasar por los siguientes puntos:
1 1
2 2
3 3
2.5 ( ) 2.55729
3 ( ) 0.25
3.5 ( ) 3.27604
x f x
x f x
x f x
= =
= =
= = −
( )
( )
( )
2.5;2.55729
3;0.25
3.5; 3.27604−
2
2
2
2.5 2.5 2.55729
3 3 0.25
3.5 3.5 3.27604
a b c
a b c
a b c
+ + =
+ + = + + = −
Ax b= Sistema 3x3
Método de interpolación parabólica sucesivas
2
2
2
2.5 2.5 1 2.55729
3 3 1 0.25
3.5 3.5 1 3.27604
a
b
c
= −
Resolvemos
2.4375
8.791667
4.1875
a
b
c
= −
=
= −
22.4375 8.791667 4.1875y x x= − + −
Método de interpolación parabólica sucesivas
-1 0 1 2 3 4 5 6 7-20
-10
0
10
20
30
40
50
1x2x
3x
-1 0 1 2 3 4 5 6 7-20
-10
0
10
20
30
40
50
¿Cómo encontrar el extremo de la parábola?2y ax bx c= + + ' 2y ax b= + ' 0
2
bx y
a= − =
El nuevo punto corresponde al extremo de la parábola:
( )4
8.7916671.803418
2 2.4375x = − =
−
Método de interpolación parabólica sucesivas
1x2x
3x
4x
-1 0 1 2 3 4 5 6 7-20
-10
0
10
20
30
40
50
1x2x
3x
Método de interpolación parabólica sucesivas
4x
¿Cómo elijo los nuevos puntos?Nos quedamos con los tres últimos
-1 0 1 2 3 4 5 6 7-20
-10
0
10
20
30
40
50
1x2x
3x
4 3 21 7( ) 5 2
4 3max f x x x x= − + −
Método de interpolación parabólica sucesivas
¿Cómo elijo los nuevos puntos?Nos quedamos con los tres últimos
-1 0 1 2 3 4 5 6 7-20
-10
0
10
20
30
40
50
1x2x
3x
4 3 21 7( ) 5 2
4 3max f x x x x= − + −
Método de interpolación parabólica sucesivas
Continuamos… hasta satisfacer la tolerancia
4x
-1 0 1 2 3 4 5 6 7-20
-10
0
10
20
30
40
50
1x
2x3x
4 3 21 7( ) 5 2
4 3max f x x x x= − + −
Método de interpolación parabólica sucesivas
¿Cómo elijo los nuevos puntos?Nos quedamos con los tres últimos
no
Método de interpolación parabólica sucesivas
si
1 2 3 1 2 3, ,x x x x x x
4 3x x tol− 4 extremox
( )( ) ( )( ) ( )( )4
1 1 2 2 3 3extremodela parabola que pasa por , , , y ,
x
x f x x f x x f x
1 2 2 3 3 4; ;x x x x x x= = =
Búsqueda Lineal en Scilab con MIPS
function alfa=linesearchMIPS(fun, xk,d,a_0)x1 = a_0*0.98;x2 = a_0;x3 = a_0*1.02;for i= 1:100
A=[x1^2 x1 1x2^2 x2 1x3^2 x3 1 ];
b=[fun(xk + x1*d)fun(xk + x2*d)fun(xk + x3*d)];
xx=A\b;x4=-xx(2)/(2*xx(1));if norm(x4-x3) < 1e-6alfa=x4;breakendx1=x2; x2=x3; x3=x4;
endif i==100alfa=[];endendfunction
Método de Newton
si
no
( )0
0; 0x k= =
( ) ( )
( )
1k k
rk
x x
x
+−
( )1es un extremo
kx
+
1k k= +
( ) ( )
( )( )( )( )
1'
''
k
k k
k
f xx x
f x
+= −
Búsqueda Lineal en Scilab con Newton
( )( )kf x dl+
( )( )kx ddf
d
l
l
+1 2
1 2
n
n
xx xf f f
x x xl l l
= + + +
1 2
1 2
n
n
f f fd d d
x x x
= + + +
( )( ) ( )( )k
Tk
df x df x d d
d
ll
l
+= +
( )( )kx ddf
d
l
l
+
Búsqueda Lineal en Scilab con Newton
( )( )kx ddf
d
l
l
+
( )( )2
2
kx dd f
d
l
l
+ 2 2
112 2
1
nn
n
xxf fd d
x xl l
= + +
( )( )( )( )
2
2
21
n
ii
i
kx dkx d
i i
d ff d d
d
ll
l =
++=
( )( )2
2
kx dd f
d
l
l
+ 2 2
1 12 2
1
n n
n
f fd d d d
x x
= + +
1 2
1 2
n
n
f f fd d d
x x x
= + + +
Búsqueda Lineal en Scilab con Newton
function alfa=linesearchMN(Fun, Grad, Hess, xk, d, a_0)a=a_0;for i=1:100
fp = Grad(xk + a*d)’*d;fpp= (d.*diag(Hess(xk + a*d)))’*d;a=a-fp/fpp;if norm(fp/fpp) < 1e-5alfa=a;breakend
endif i==100
alfa=[];endendfunction
( ) ( ) ( )2 2
2 2
1 2 1 2. 11 7Min f x x x x x= ++ − + −
( )( )
( )
2 21 1 22 1 2
2 21 2 2 1 2
8 4 2 4 411
4 4 2 8 4 7
x x xx xf x
x x x x x
+ + ++ − =
+ + + + −
( )( ) ( )( ) ( )
2 211 2 1 2
2 221 2 1 2
2 2 211 7
2 2 211 7
xx x x xf x
xx x x x
++ − + − =
++ − + −
Ejemplo
Ejemplo
function f=fun(x)f=(x(1)^2 + x(2) - 11)^2 + (x(1)+x(2)^2-7)^2
endfunction
function Gf=gradf(x)Gf(1,1) = 2*(x(1)^2 + x(2) - 11)*(2*x(1)) + 2*(x(1)+x(2)^2-7)Gf(2,1) = 2*(x(1)^2 + x(2) - 11) + 2*(x(1)+x(2)^2-7)*(2*x(2))
endfunction
function Hf=hessf(x)Hf(1,1) = 2*(2*x(1))*(2*x(1)) + 2*(x(1)^2 + x(2) - 11)*(2) + 2Hf(1,2) = 2*(2*x(1)) + 2*(2*x(2))Hf(2,1) = 2*(2*x(1)) + 2*(2*x(2))Hf(2,2) = 2 + 2*(2*x(2))*(2*x(2)) + 2*(x(1)+x(2)^2-7)*(2)
endfunction
Ejemplo
x1=linspace(-5,6,1000);x2=linspace(-3,4,1000);for i=1:length(x1)
for j=1:length(x2)z(i,j)=fun([x1(i);x2(j)]);
endend
contour(x1,x2,z,[2 5 10 20:20:160 170 180 200 350 500])
Ejemplo – 1 variable a la vez
Ejemplo – Descenso mas pronunciado
Ejemplo – Newton