• Nenhum resultado encontrado

ISCTE/FCUL - Mestrado Matemática Financeira. Aula de Janeiro de 2009 Ano lectivo: 2008/2009. Diana Aldea Mendes

N/A
N/A
Protected

Academic year: 2021

Share "ISCTE/FCUL - Mestrado Matemática Financeira. Aula de Janeiro de 2009 Ano lectivo: 2008/2009. Diana Aldea Mendes"

Copied!
65
0
0

Texto

(1)

ISCTE/FCUL - Mestrado Matem´atica Financeira Aula 4

15 de Janeiro de 2009 Ano lectivo: 2008/2009 Diana Aldea Mendes

Departamento de M´etodos Quantitativos, IBS - ISCTE Business School Gab. 207 AA, diana.mendes@iscte.pt, http://iscte.pt/˜deam

(2)

Optimiza¸

ao multi-dimensional

- M´etodos gradiente (gradiente descendente, gradiente conjugado) - M´etodos de Newton e quase-Newton

- M´etodo de Powell (non-gradiente search)

(3)

Nota-se que:

- Os computadores n˜ao podem encontrar todas as solu¸c˜oes - Os computadores n˜ao podem provar a ausˆencia de solu¸c˜oes - Os computadores n˜ao podem provar a existˆencia de solu¸c˜oes

- Os computadores n˜ao podem provar a unicidade de uma solu¸c˜ao

(4)

min x∈D f (

x

) ←→ ∇f (

x

) =

0

, ∇ 2f (

x

) definida positiva

x

R

n, f : D ⊂

R

n

R

(1) f (

x

) fun¸c˜ao objectivo (2) ∇f (

x

) = " ∂f ∂xi # i=1,...,n vector gradiente (3)

(derivadas parciais de primeira ordem) (4) ∇2f (

x

) = H (x) = " ∂2f ∂xi∂xj # i,j=1,...,n matriz Hessiana (5) (derivadas parciais de segunda ordem) (6)

(5)

• A formula¸c˜ao do problema de m´ınimo ´e muito simples, mas, apesar disto, n˜ao existe um algoritmo perfeito. A arte de minimizar fun¸c˜oes n˜ao-lineares consta em saber qual ´e o m´etodo `a utilizar e como determinar se o m´etodo escolhido converge para a solu¸c˜ao correcta. Em geral

- Utilizamos m´etodos iterativos que calculam uma sequˆencia de pontos x0, x1, ... ∈

R

n tal que f ¡xk+1¢ < f (xk) . O algoritmo termina quando ∇f (xk) < ε para ε pr´e-definido

- Se f ´e fortemente convexa, isto ´e, ∃ m > 0 tal que ∇2f (

x

) >> mI, ∀

x

R

n, ent˜ao existe um crit´erio de paragem definido por

(6)

• Classifica¸c˜ao dos m´etodos de optimiza¸c˜ao n˜ao-condicionada multidimen-sional

- M´etodos anal´ıticos: resolver ∇f (

x

) =

0

analiticamente

- M´etodos directos: precisam s´o a computa¸c˜ao de f (x) em cada passo (Powell ou DogLeg, Nelder-Mead)

- M´etodos gradiente: requerem a computa¸c˜ao de ∇f (

x

) e f (

x

) em cada passo (gradiente descendente, gradiente conjugado)

- M´etodos de segunda ordem: requerem a computa¸c˜ao de ∇2f (

x

) , ∇f (

x

) e f (

x

) em cada passo (Newton e quase-Newton)

(7)

etodo de Powell

- Requere apenas o c´alculo de f (x) . Necessita de um grande n´umero de avalia¸c˜oes da fun¸c˜ao objectivo, o que aumenta o custo computacional

- Id´eia b´asica: considerar um n´umero elevado de vectores x e calcular o f (x) associado. O vector correspondente ao menor valor f (x) ser´a considerado como o valor ´optimo x.

- Melhor: seja x0 o ponto que aproxima inicialmente o minimizante de f (x) . O pr´oximo valor do minimizante, o ponto x1, obtem-se procurando sucessiva-mente um minimizante de f ao longo de cada um dos vectores da base can´onica {e1, ..., en} de

R

n. Este processo gera a sequˆencia de pontos

(8)

Ao longo de cada um dos vectores da base can´onica, a fun¸c˜ao f torna ser s´o de uma vari´avel. Assim, minimizar f signifique aplicar os m´etodos de optimiza¸c˜ao unidimensional sobre intervalos onde a fun¸c˜ao ´e unimodal. O ponto x1 ´e deter-minado como sendo o ponto em qual o m´ınimo de f ocorre ao longo do vector PN − P0. Como o vector PN − P0 ´e considerado ser uma direc¸c˜ao de inves-tiga¸c˜ao vi´avel, vai substituir um dos vectores direc¸c˜ao para a pr´oxima iterada. A itera¸c˜ao ´e repetida para gerar uma sequˆencia de pontos {xk}k≥0 .

Algoritmo 1. P0 = xi

2. Para k = 1, ..., n encontre o valor de γk que minimiza f (P0 + γkUk) e escolha

(9)

3. i = i + 1

4. Uj = Uj+1 para j = 1, ..., n − 1. Seja

Un = Pn − P0

5. Encontre o valor γ que minimiza f (P0 + γUn) . Escolha xi = P0 + γUn

6. Repetir os passos (1)-(5). onde

(10)

Exemplo: Seja f (x, y) = cos x + sin y e seja x0 = (5.5, 2) . Determine os pontos x1 e x2. 0 5 10 15 0 5 10 15 -2 -1 0 1 2 2 4 6 8 10 12 14 2 4 6 8 10 12 14

(11)

Seja U = " 1 0 0 1 # e P0 = x0 = (5.5, 2) . Para i = 1, a fun¸c˜ao f (P0 + γ1U1) = f ((5.5, 2) + γ1 (1, 0)) = cos (5.5 + γ1)+sin 2 tem um m´ınimo em γ1 = −2.3584. Logo P1 = (3.1415, 2) .

Para i = 2, a fun¸c˜ao f (P1 + γ2U2) = f ((3.1415, 2) + γ2 (0, 1)) = cos (3.1415)+ sin (2 + γ2) tem um m´ınimo em γ2 = 2.7123. Logo P2 = (3.1415, 4.7123) .Seja agora U2T = (P2 − P0)T e U = " 0 −2.3584 1 2.7123 # .

(12)

A fun¸c˜ao

f (P0 + γU2) = f ((5.5, 2) + γ (−2.3584, 2.7123))

= cos (5.5 − 2.3584γ) + sin (2 + 2.7123γ) tem um m´ınimo em γ = 0.9816. Logo x1 = (3.1848, 4.6626) .

Seja P0 = x1. Quando i = 1, a fun¸c˜ao

f (P0 + γ1U1) = f ((3.1848, 4.6626) + γ1 (0, 1)) = cos (3.1848) + sin (4.6626 + γ1) tem um m´ınimo em γ1 = 0.0497. Logo P1 = (3.1484, 4.7123) . Quando i = 2, a fun¸c˜ao

f (P1 + γ2U2) = f ((3.1848, 4.7123) + γ2 (−2.3584, 2.7123))

(13)

tem um m´ınimo em γ2 = 0.0078. Logo P2 = (3.1662, 4.7337) . Seja U2T = (P2 − P0)T e U = " −2.3584 −0.0185 2.7123 0.0710 # . A fun¸c˜ao f (P0 + γU2) = f ((3.1848, 4.6626) + γ (−0.0185, 0.0710)) = cos (3.1848 − 0.0185γ) + sin (4.6626 + 0.0710γ) tem um m´ınimo em γ = 0.8035. Logo x2 = (3.1698, 4.7197) .

(14)

etodos gradiente ou m´

etodos descendentes

Minimiza¸c˜ao ao longo de uma direc¸c˜ao - Problema geral

Minimizar uma fun¸c˜ao real de n vari´aveis reais, f , onde: f ´e regular, o seu gradiente g = ∇f ´e conhecido e ´e dada um direc¸c˜ao descendente u.

Uma direc¸c˜ao u diz-se descendente para a fun¸c˜ao f em x se uTf0 (x) < 0. - Consideram-se itera¸c˜oes de forma

xk+1 = xk + λkuk,

onde uk ´e a direc¸c˜ao descendente investigada e λk ´e o comprimento de passo obtido por uma procura unidimensional (faz decrescer a fun¸c˜ao f ). Em todos

(15)

os m´etodos consideremos que f xk+1 < f (xk) , (descending condition) o que obriga a convergˆencia para um ponto de m´ınimo, caso existe. O algoritmo ter-mina quando satisfaz o cr´ıterio de paragem. Tem convergˆencia linear e portanto ´e um algoritmo bastante lento.

Problema: Dada uma fun¸c˜ao f (x) , x = (x1, ..., xn) ∈

R

n, um ponto inicial

x0

R

n e uma direc¸c˜ao u = (u1, ..., un) ∈

R

n, como minimizar a fun¸c˜ao f ao

longo da direc¸c˜ao u?

Resposta: Come¸camos com um ponto inicial x0 e procuramos um novo ponto x = x0 + λ∗u

tal que a fun¸c˜ao

(16)

´e minimizada quando λ = λ∗. Nesta situa¸c˜ao F (λ) ´e uma fun¸c˜ao s´o de uma vari´avel (λ).

• Como escolher a direc¸c˜ao descendente:

• Nos m´etodos do gradiente conjugado n˜ao linear, a direc¸c˜ao de investiga¸c˜ao ´e de forma

uk = −gk + βkuk−1

ou seja hk = −∇f (xk) = gk, onde o escalar βk ´e escolhido de tal maneira que o m´etodo reduz-se ao m´etodo linear dos gradientes conjugados, quando a fun¸c˜ao ´e quadr´atica e a linha de investiga¸c˜ao ´e exacta.

(17)

• Uma outra classe de m´etodos define a linha (direc¸c˜ao) de investiga¸c˜ao por uk = −Bk−1gk

onde Bk ´e uma matriz regular (|Bk| 6= 0) e sim´etrica (bij = bji). Casos especiais s˜ao dados quando

Bk = I the steepest descent method

Bk = ∇2f (xk) = H (f (xk)) o m´etodo de Newton.

• Os m´etodos quase-Newton ou m´etricos vari´aveis s˜ao tamb´em deste tipo, mas neste caso Bk depende ainda de Bk−1 e de xk−1.

Matlab: m-file opt steep.m

(18)

Minimiza¸c˜ao ao longo de uma direc¸c˜ao - exemplo

Seja f (x) = f (x1, x2) = 1 + x1 − x2 + x21 + 2x22. Minimize f na direc¸c˜ao u = (−2, 1) para o ponto inicial x0 = (0, 0) .

Definimos a linha de investiga¸c˜ao

x = x0 + λu = (0, 0) + λ (−2, 1) = (−2λ, λ) e a nova fun¸c˜ao F, isto ´e

F (λ) = f (x0 + λu) = f (−2λ, λ) = 1 − 3λ + 6λ2. O minimizante de F (λ) ´e obtido de F0 (λ) = 0, isto ´e

(19)

e como F00 (λ∗) = 12 > 0, temos que λ∗ = 14 ´e um m´ınimo.

Tem-se ent˜ao que x∗ = x0 + λ∗u = ³12, 14´ ´e o m´ınimo de f (x) ao longo da linha x = x0 + λu.

Mais, podemos mostrar que x∗ ´e o m´ınimo global da fun¸c˜ao f (x) . Escrevendo f (x) = f (x1, x2) = 1 + x1 − x2 + x21 + 2x22 = µ x1 + 1 2 ¶2 + 2 µ x2 1 4 ¶2 + 5 8 a ´ultima fun¸c˜ao tem curvas de n´ıvel (contorno) definidas por elipses centradas no ponto de m´ınimo x∗ = ³12, 14´. Observa-se que o m´ınimo ao longo da direc¸c˜ao

(20)

x = x0 + λu passa pelo centro ³12, 14´. 0 5 10 15 20 25 0 10 20 30 0 100 200 300 400 Fun¸co f (x1, x2) = 1 + x1 − x2 + x21 + 2x22

(21)

etodo do gradiente conjugado (Fletcher-Reeves)

A introdu¸c˜ao do m´etodo do gradiente conjugado por Fletcher-Reeves nos anos 1960 conduz a possibilidade de optimizar problemas n˜ao lineares de larga es-cala, pois s´o s˜ao precissos O (n) opera¸c˜oes por itera¸c˜ao e pouco espa¸co para armazenagem. S˜ao m´etodos simples e bastante f´aceis de implementar. S˜ao su-periores aos m´etodos que n˜ao utilizam informa¸c˜ao sobre o gradiente, mas s˜ao inferiores aos m´etodos de tipo Newton.

Considerando uma equa¸c˜ao da forma f (x) = 0, ´e claro que f (x) = 0 sse f(x)f (x) = 0. Logo, se existirem, os zeros de f, s˜ao os pontos de m´ınimo absoluto de f2.

(22)

De forma semelhante, no caso de fun¸c˜oes com v´arias vari´aveis, usando a norma euclidiana, obtemos:

F(x) = 0 <=> ||F (x)||2 = 0 <=> F (x).F (x) = 0

e, se existirem, as solu¸c˜oes de F (x) = 0 s˜ao os pontos de m´ınimo absoluto de f(x) = F (x).F (x).

Seja A uma matriz sim´etrica e definida positiva, e consideremos uma forma quadr´atica auxiliar:

f (x) = a − bTx + 1 2x

TAx

que transforma vectores em n´umeros reais. Como a forma ´e quadr´atica, h´a apenas um vector que minimiza f e ´e exactamente o ponto cr´ıtico, ou seja, a

(23)

solu¸c˜ao de f0(x) = 0, e neste caso, f0(x) = 1

2(A

T

+ A)x − b = Ax − b.

Assim, se encontrarmos o ponto de m´ınimo, ele ser´a solu¸c˜ao do sistema linear Ax = b.

Consideramos m´etodos iterativos de optimiza¸c˜ao de tipo investiga¸c˜ao de linha, ou seja:

xn+1 = xn + anhn

de forma que haja uma direc¸c˜ao descendente, ou seja, f (xn+1) < f (xn). O

(24)

M´etodo do Gradiente

No caso do m´etodo do gradiente (ou declive m´aximo - steepest descent), a direc¸c˜ao de descida escolhida ´e

hn = −∇f(xn) = b − Axn,

e neste caso (de sistemas lineares) ´e tamb´em designado por res´ıduo.

Resta encontrar o valor an que minimiza f , de entre os poss´ıveis valores xn+ahn.

Encontramos o ponto de m´ınimo, derivando f (nesses pontos) em ordem a a, ou seja, d da (f (xn + ahn)) = f 0(xn + ahn).hn = (b − A(xn + ahn)).hn = h .h − aAh .h

(25)

Assim, o valor m´ınimo an ser´a obtido com o zero da derivada,

hn.hn − anA hn.hn = 0 <=> an = hn.hn A hn.hn

.

Em conclus˜ao, dado um vector inicial x0, o m´etodo do gradiente resume-se `a itera¸c˜ao

xn+1 = xn + anhn = xn + hn.hn

hn.A hn

hn com hn = b − Axn

Um crit´erio de paragem consiste em exigir que ||hn||2 = hn.hn < ε

(26)

M´etodo das Direc¸c˜oes Conjugadas

Come¸camos por definir direc¸c˜oes conjugadas: Um conjunto de direc¸c˜oes {h1, h2, ...} diz-se conjugado com respeito a uma matriz A sim´etrica e definida positiva se

hTi Ahj = 0 para qualquer i 6= j.

Com este produto interno, dois vectores dizem-se A-ortogonais se < hi, hj > A = hi.Ahj = hTi Ahj = 0, como sin´onimo diz-se que as direc¸c˜oes hi e hj s˜ao conjugadas.

Seja N a dimens˜ao da matriz A e sejam h1, h2, ..., hN direc¸c˜oes conjugadas, que constituem uma base A-ortogonal em

R

N. Se considerarmos hn como direc¸c˜oes

de descida, temos a itera¸c˜ao

(27)

e queremos agora encontrar o valor an que minimiza f , de entre os poss´ıveis valores xn + ahn.

De forma, semelhante, podemos obter an = rn.hn

hn. A hn

, com rn = b − Axn e portanto o m´etodo de direc¸c˜oes conjugadas ´e

xn+1 = xn + rn.hn

hn. A hn

hn

Teorema: Um m´etodo de direc¸c˜oes conjugadas atinge a solu¸c˜ao ao fim de N itera¸c˜oes.

(28)

M´etodo dos Gradientes Conjugados

Consideramos agora o caso particular do m´etodo das direc¸c˜oes conjugadas, em que elas s˜ao obtidas atrav´es do gradiente. Recordamos que no caso linear o gradiente ´e dado pelo res´ıduo rn = b − Axn.

Atrav´es de um processo de ortogonaliza¸c˜ao (ou melhor, A-ortogonaliza¸c˜ao) de Gram-Schmidt, atrav´es dos sucessivos res´ıduos (gradientes) podemos construir as direc¸c˜oes hn que ser˜ao conjugadas (A-ortogonais).

Assim, podemos resumir o M´etodo dos Gradientes Conjugados, 1. Dado x0 definimos h0 = r0 = b − Ax0 ,

(29)

2. Definimos xn+1 = xn + anhn com an = rn.hn hn. A hn 3. Definimos rn+1 = rn − anAhn e hn+1 = rn+1 + bnhn, com bn = rn+1.rn+1 rn.rn .

4. Regressamos ao 2o passo, at´e que sejam efectuados N passos.

Nota: Apesar de termos dito que o m´etodo atinge a solu¸c˜ao exacta ao fim de N passos, um mau condicionamento da matriz poder´a impedir que a solu¸c˜ao seja efectivamente obtida. Nesse caso h´a que utilizar um crit´erio de paragem, por exemplo, exigindo que o res´ıduo seja suficientemente pequeno.

(30)

(a). M´etodo de Fletcher-Reeves (1964) bn = rn+1.rn+1

rn.rn =

f0 (xn+1)T f0 (xn+1) f0 (xn)T f0 (xn)

onde xprev ´e a iterada pr´evia.

(b). M´etodo de Polak-Ribi`ere (1971) bn = (rn+1 − rn) .rn+1 rn.rn = ¡ f0 (xn+1) − f0 (xn)¢T f0 (xn+1) f0 (xn)T f0 (xn)

(31)
(32)

Em Matlab o programa mincg.m est´a baseado neste m´etodo de optimiza¸c˜ao. [res, noiter]=mincg(f, derf, ftau, x, tol)

onde f ´e a fun¸c˜ao a optimizar, derf s˜ao as derivadas paciais de 1a ordem da fun¸c˜ao (gradiente), ftau represente o m´etodo de investiga¸c˜ao de linhas, x a condi¸c˜ao inicial e tol a tolerˆancia permitida.

De forma alternativa tem-se o m-file opt conjg.m

[xo,fo] = opt conjg(f,x0,TolX,TolFun,alpha0,MaxIter,KC)

Exemplo: Seja A = " 2 −1 −1 2 # .

(33)

Determine os vectores pr´oprios de A e motra que s˜ao A-conjugados.

Primeira vez determinam-se os valores pr´oprios, isto ´e |A − λI| = 0 ⇐⇒ λ1 = 1 e λ2 = 3. Logo (A − λI) v = 0 ⇐⇒ " 2 − 1 −1 −1 2 − 1 # " v1 v2 # = " 0 0 # ⇐⇒ v1 = ³v11, v21´ = ³v11, v11´ = v11 (1, 1) , ∀v11

R

⇐⇒ " 2 − 3 −1 −1 2 − 3 # " v1 v2 # = " 0 0 # ⇐⇒ v2 = ³v12, v22´ = ³v12, −v12´ = v12 (1, −1) , ∀v12

R

(34)

Agora ³ v1´T Av2 = h 1 1 i " 2 −1 −1 2 # " 1 −1 # = 0

Exemplo: Aplicando o m´etodo das direc¸c˜oes conjugadas, minimiza a seguinte fun¸c˜ao quadr´atica minx1,x2∈R f (x1, x2) = 12xTAx − bTx + c, onde

A = " 2 −1 −1 2 # , b = " 3 8 # , c = 5 e x0 = " 0 0 # .

Calculamos os vectores conjugados de A (exemplo anterior) h0 = (1, 1) e h1 = (1, −1).

(35)

Agora r0 = b − Ax0 = " 3 8 # − " 2 −1 −1 2 # " 0 0 # = " 3 8 # 6= 0 a0 = r T 0 h0 hT0 Ah0 = 11 2 x1 = x0 + a0h0 = h 112 112 iT r1 = b − Ax1 = " 3 8 # − " 2 −1 −1 2 # " 11 2 11 2 # = " −52 5 2 # a1 = r T 1 h1 hT1 Ah1 = 5 6 x2 = x1 + a1h1 = " 11 2 11 2 # − " 5 6 5 6 # = " 14 3 14 3 # " # " # " # " #

(36)

Exemplo: Aplicando o m´etodo do gradiente conjugado (Fletcher-Reeves), min-imiza a seguinte fun¸c˜ao quadr´atica

min

x1,x2∈R f (x1, x2) = x 2

1 − x1x2 + 3x22,

onde o ponto inicial ´e x0 = (1, 2) . Calculamos o vector gradiente

∇f (x) = f0 (x) = " 2x1 − x2 −x1 + 6x2 # logo f0 (x0) = " 0 11 # e r0 = h0 = " 0 11 #

(37)

Agora x1 = x0 + a0h0 = h 1 16 iT e f0 (x1) = " 11 6 0 # b1 = f0 (x1) T f0 (x 1) f0 (x0)T f0 (x0) = 1 36 h1 = f0 (x1) + b1h0 = " 11 6 −1136 # x2 = x1 + a1h1 = " 0 0 # .

Exemplo: Determinar um m´ınimo local da fun¸c˜ao

(38)

-4 -3 -2 -1 0 1 2 3 4 -4 -3 -2 -1 0 1 2 3 4 0 5 10 15 20 0 5 10 15 20 -80 -60 -40 -20 0 20 Fun¸c˜ao f801.m >> x1=mincg(’f801’,’f801pd’,’ftau2cg’, x0, 0.000005)

(39)

> number of iter= 6, > Solution 2.7468 -2.9035 >> x=-4:0.1:4;y=-4:0.1:4; [X,Y]=meshgrid(x,y);

>> z=0.5.*(X.ˆ4-16.*X.ˆ2+5.*X)+0.5.*(Y.ˆ4-16.*Y.ˆ2+5.*Y);

>> x1=[0 1.691 -2.560 -2.909 -2.903 -2.903]; y1=[0.5 -2.948 -3.210 -2.893 -2.903 -2.903];

>> figure; axis([-4 4 -4 4 -80 20]); contour(-4:0.1:4, -4:0.1:4, z,15) >> hold on; plot(x1,y1,x1,y1,’o’)

(40)

etodo de Newton

O m´etodo de Newton inic´ıa uma classe importante de algoritmos que, para serem aplicados, requerem a computa¸c˜ao do vector gradiente

g = ∇f (x) = ⎡ ⎢ ⎢ ⎢ ⎢ ⎢ ⎣ ∂f ∂x1 (x) ... ∂f ∂xn (x) ⎤ ⎥ ⎥ ⎥ ⎥ ⎥ ⎦ , onde f : D ⊂

R

n

R

e x = (x1, ..., xn)

(41)

e da matriz Hessiana H (f (x)) = ∇2f (x) = ⎡ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎣ ∂2f ∂x21 (x) ∂2f ∂x1∂x2 (x) ... ∂2f ∂x1∂xn (x) ∂2f ∂x2∂x1 (x) ∂2f ∂x22 (x) ... ∂2f ∂x2∂xn (x) ... ... . . . ... ∂2f ∂xn∂x1 (x) ∂ 2f ∂xn∂x2 (x) ... ∂ 2f ∂x2n (x) ⎤ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎦ .

Teorema: Suponhamos que f : D ⊂

R

n →

R

´e duas vezes diferenci´avel e x∗

R

n satisfaz

(42)

2. ∇2f (x∗) ´e definida positiva (em particular, n˜ao-singular) 3. ∇2f ´e Lipschitz cont´ınua numa vizinhan¸ca do ponto x∗.

Ent˜ao x∗ ´e um m´ınimo local de f e para qualquer x0 suficientemente pr´oximo de x∗, o m´etodo de Newton define uma sequˆencia que converge (local) quadrati-camente para x∗.

Nota: O m´etodo ainda converge se a matriz Hessiana ´e semidefinida positiva e singular.

O m´etodo de Newton determina um modelo quadr´atico para a fun¸c˜ao objectivo em torno da iterada corrente xk definida por

(43)

Na vers˜ao b´asica do m´etodo de Newton, a pr´oxima iterada ´e obtida a partir do minimizante de qk. Quando a matriz Hessiana ´e definida positiva, o modelo quadr´atico tem um ´unico minimizante que pode ser obtido resolvendo o seguinte sistema sim´etrico (n × n)

∇2f (xk) hk = −∇f (xk) ⇔ hk = − ³2f (xk)´−1 ∇f (xk) Agora, a nova iterada vai ser

xk+1 = xk + hk = xk ³2f (xk)´−1∇f (xk)

Como j´a referido a convergˆencia (local) ´e garantida se o ponto de partida ´e suficientemente pr´oximo de um minimizante local x∗. O crit´erio de paragem ´e dado por α2 ≤ ε onde α (x) = µ ∇Tf (x) ³2f (x)´−1 ∇f (x)1/2 = kx − x∗k

(44)

Figura 1: M´etodo de Newton. Caso (a), convergˆencia imediata para p m´ınimo (1 iterada) e caso (b) convergˆencia ao fim de 10 iteradas.

(45)

O algoritmo de Newton se funciona bem, funciona muito bem. Com tudo isto n˜ao ´e o m´etodo ideal, pois requere a computa¸c˜ao da matriz hessiana em cada iterada, tamb´em como a resolu¸c˜ao do sistema linear que envolve a hessiana. Falha facilmente se a matriz hessiana n˜ao ´e definida positiva ou regular.

Nestes casos (quando a matriz hessiana n˜ao ´e definida positiva ou regular) conv´em substituir a matriz Hessiana H por uma nova matriz ˆH = H + E. O m´etodo de Levenberg-Marquardt pode ser utilizado com sucesso, fazendo a substitui¸c˜ao: ˆH = H + γI, com I matriz identidade. O papel de γ ´e manter a matriz H definida positiva.

Matlab: m-file newtons.m

(46)

Exemplo: Minimizar a fun¸c˜ao f (x) = f (x1, x2) = 1 2x 2 1 Ã x21 6 + 1 ! + x2 arctan x2 1 2 ln ³ x22 + 1´. 0 10 20 30 0 5 10 15 20 250 10 20 30 40 50 60 70

(47)

Precisamos do gradiente e da matriz Hessiana ∇f (x) = ⎡ ⎢ ⎢ ⎢ ⎣ x31 3 + x1 arctan x2 ⎤ ⎥ ⎥ ⎥ ⎦ e ∇f (x) = ⎡ ⎢ ⎣ x21 + 1 0 0 1 1 + x22 ⎤ ⎥ ⎦

A tabela seguinte d´a os resultados de itera¸c˜ao quando x0 = (1, 0.7) . H´a con-vergˆencia local quadr´atica.

(48)

Mudando a condi¸c˜ao inicial, nomeadamente x0 = (1, 2) , o m´etodo de Newton comporta-se muito mal (n˜ao h´a convergˆencia global), como pode ser visto na pr´oxima tabela

Na maioria dos casos, o m´etodo b´asico de Newton n˜ao converge e para se obter bons resultados ´e preciso modificar o algoritmo. Basicamente, h´a dois m´etodos para modificar o algoritmo de Newton em ordem a obter convergˆencia:

(49)

1. Abordagem baseada numa investiga¸c˜ao de linhas (direc¸c˜oes) (modifica a direc¸c˜ao da linha de investiga¸c˜ao para obter uma outra direc¸c˜ao descendent para f )

2. Abordagem baseada numa regi˜ao de confian¸ca (utiliza a fun¸c˜ao quadr´atica original, mas condiciona-se que a nova iterada pertencer a uma vizinhan¸ca da iterada corrente)

Estas t´ecnicas s˜ao adequadas se o n´umero de vari´aveis da fun¸c˜ao objectivo n˜ao ´e muito elevado e se a matriz Hessiana ´e acess´ıvel e f´acil de calcular. Os algoritmos ficam n˜ao-alterados se a matriz Hessiana vem substitu´ıda por uma boa aprox-ima¸c˜ao sua. Existem dois tipos de m´etodos que aproximam a matriz Hessiana, nomeadamente: Aproxima¸c˜oes com diferen¸cas e M´etodos quase-Newton

(50)

etodos Quase-Newton ou m´

etodos m´

etricos vari´

aveis

Podem ser utilizados quando a matriz Hessiana ´e dif´ıcil de calcular ou demora muito tempo para ser avaliada. Este m´etodo constr´oi gradualmente uma matriz Hessiana aproximada utilizando informa¸c˜oes a partir do gradiente avaliado para quase todas as iteradas anteriores visitadas pelo algoritmo. Consta de dois passos fundamentais

- Determina¸c˜ao de uma direc¸c˜ao de investiga¸c˜ao - Escolha do m´etodo de investiga¸c˜ao da linha

Dada a iterada corrente xk e a matriz Hessiana aproximada Bk em xk, a solu¸c˜ao do sistema linear

(51)

gera uma direc¸c˜ao hk. A pr´oxima iterada encontra-se fazendo uma investiga¸c˜ao linear sobre hk e considerando

xk+1 = xk + αkhk,

onde o comprimentos de passo αk satisfaz as condi¸c˜oes de Wolfe, isto ´e, f (xk + αkhk) ≤ f (xk) + σ1αkTf (xk) hk

∇Tf (xk + αkhk) hk ≤ σ2Tf (xk) hk onde 0 < σ1 < σ2 < 1.

Para obter a aproxima¸c˜ao Bk+1 a partir de Bk ´e precisso considerar o Teorema Fundamental de C´alculo Integral. Se definimos

sk = xk+1 − xk

(52)

ent˜ao (Z 1 0 ∇ 2f (x k + tsk) dt )

m´edia da Hessiana sobre o segmento [xk,xk+sk]

sk = yk.

A partir dessa observa¸c˜ao podemos obter a aproxima¸c˜ao Bk+1 imitando o com-portamento da matriz ∇2f e considerando a condi¸c˜ao de quase-Newton

Bk+1sk = yk.

Ao fim de cada passo a aproxima¸c˜ao da matriz Hessiana vem actualizada. A mais comum (e utilizada) fam´ılia de actualiza¸c˜oes consideradas no m´etodo de quase-Newton (para determina¸c˜ao da direc¸c˜ao de investiga¸c˜ao) ´e a de Broyden de rang 2, isto ´e Bk+1 = Bk Bksk (Bksk) T T + ykykT T + φk[s T k Bksk]vkvkT,

(53)

onde φk ∈ [0, 1] e vk = " yk ykTsk − Bksk sTk Bksk # .

Para φk = 0 tem-se a actualiza¸c˜ao de Broyden-Fletcher-Goldfarb-Shanno (BFGS) e para φk = 1 tem-se a actualiza¸c˜ao de Davidon-Fletcher-Powell (DFP).

Aplicando qualquer uma dessas actualiza¸c˜oes a matriz Hessiana aproximada per-manence definida positiva e portanto a direc¸c˜ao de procura ´e sempre uma di-rec¸c˜ao descendente. S˜ao algoritmos que convergem rapidamente e evitam a computa¸c˜ao das derivadas de segunda ordem.

(54)

Matlab

fminunc ´e o m-file que determine extremos livres de uma fun¸c˜ao real de v´arias vari´aveis reais.

>> x=fminunc(’fname’,x0)

Inicia em x0 e tenta encontrar o m´ınimo local x da fun¸c˜ao ’fname’ (definida como m-file tamb´em)

Exemplo

(55)

> f = -0.2750 ...

> f = -2.0000

Optimization terminated: relative infinity-norm of gradient less than options.TolFun. x = 3.1416 4.7124

Para minimizar esta fun¸c˜ao j´a com o gradiente dado modificamos a fun¸c˜ao como a seguir (indicando no comando fminunc que o gradiente est´a dispon´ıvel utilizando OPTIONS)

(56)

>>x = fminunc(’fname’, x0, options);

>> options=optimset(’GradObj’,’on’); x0=[2 3] >> [x,fval]=fminunc(’dffdi’, x0, options)

Optimization terminated: first-order optimality less than OPTIONS.TolFun, and no negative/zero curvature detected in trust region model.

x = 3.1416 10.9956 fval = -2

(57)

etodo dos m´ınimos quadrados (problema n˜

ao-linear)

Consideremos, de novo, um conjunto de pontos x0, ..., xn a que est˜ao associados,

respectivamente, os valores f (x0), ..., f (xn). Temos que considerar agora uma

classe de fun¸c˜oes, entre as quais vamos tentar encontrar a que ”melhor aproxima” aquele conjunto de valores, nos pontos dados. Vamos concentrar em fun¸c˜oes da forma:

g(x) = a0f0(x) + ... + amfm(x)

em que f0, ..., fm s˜ao fun¸c˜oes base (linearmente independentes), e s˜ao

conheci-das.

Neste caso, apenas teremos que determinar os parˆametros a0, ..., an, de forma

(58)

ent˜ao sentido introduzir a distˆancia ||f − g|| em que ||u||2 = n X i=0 u2 (xi) a que est´a associada o produto interno

< u, v >=

n

X

i=0

u (xi) v (xi) .

A norma e o produto interno est˜ao bem definidos para fun¸c˜oes que assumem quaisquer valores nos pontos x0, ..., xn.

Pretende-se pois encontrar os parˆametros a0, ..., an que minimizem a distˆancia

entre f e g , isto ´e:

(59)

Para obtermos esse m´ınimo, come¸camos por procurar os valores a0, ..., am tais

que todas as derivadas parciais de Q sejam nulas, isto ´e: ∂Q

∂aj(a0, ..., am) = 0, para j = 0, ..., m.

Calculamos a derivada parcial, usando as propriedades de deriva¸c˜ao do produto interno: ∂Q ∂aj = ∂ ∂aj < f − g, f − g >= * ∂ ∂aj (f − g) , f − g + + * f − g, ∂ ∂aj (f − g) + = 2 * f − g, ∂ ∂aj (f − g) + = −2 * f − g, ∂ ∂ajg + . Por outro lado

∂g ∂a =

(60)

e assim obtemos, para cada j de 0 at´e m: Df − g, φjE = 0

Podemos ainda substituir a express˜ao de g e obtemos um sistema linear:

n

X

i=0

ai < φi, φj >=< f, φj > para cada j = 0, ..., m designado por sistema normal.

Teorema: Se as fun¸c˜oes base φ0, ..., φm forem linearmente independentes, a matriz do sistema normal ´e definida positiva.

Observa¸c˜oes:

1) A matriz Hessiana de Q coincide justamente com a matriz do sistema normal. Fica assim justificado que a solu¸c˜ao do sistema normal, tratando-se de um ponto

(61)

cr´ıtico de Q, e como a matriz Hessiana ´e definida positiva, seja o m´ınimo do funcional Q.

2) Como a matriz ´e sim´etrica e definida positiva, um m´etodo apropriado para resolver o sistema normal ´e o m´etodo de Cholesky.

Mais geral: Seja f :

R

n

R

m, com m ≥ n. Objectivo: minimizar kf (x)k , ou equivalente, encontrar um x∗, tal que x∗ = minx {F (x)} onde

F (x) = 1 2 m X i=1 (fi (x))2 = 1 2 kf (x)k 2 = 1 2f T (x) f (x) .

Os problemas dos m´ınimos quadrados podem ser resolvidos pelos m´etodos usuais de optimiza¸c˜ao ou pelos m´etodos dos m´ınimos quadrados que se tornam mais efficientes

(62)

Temos F0 (x) = J (x)T f (x) e F00 (x) = J (x)T J (x) + m X i=1 fi (x) fi00 (x) . M´etodo de Levenberg-Marquardt

O passo hlm ´e definido por ³JTJ + μI´hlm = −JTf.

A principal dificuldade em implementar este algoritmo consta em encontrar uma estrat´egia efectiva para controlar o tamanho de μ em cada itera¸c˜ao de tal forma que ser´a eficiente para um conjunto grande de problemas. O m´etodo utilizado neste algoritmo consta na medi¸c˜ao da n˜ao linearidade relativa de f (x) utilizando uma soma linear de quadrados. N˜ao procura explicitamente a direc¸c˜ao de inves-tiga¸c˜ao o que torna o algoritmo bastante r´apido e exacto.

(63)

Algoritmo

Iniciar k = 0; υ = 2; x = x0; A = J (x)T J (x) ; g = J (x)T f (x) found = (kgk ≤ ε1) ; μ = τ max {aii}

while (not found) e (k < kmax)

k = k + 1; resolver (A + μI) hlm = −g if khlmk ≤ ε2 (kxk + ε2)

found = true // else

xnew = x + hlm; ρ = F (x) − F (xnew) L(0) − L (hlm) if ρ > 0 x = xnew; A = J (x)T J (x) ; g = J (x)T f (x) found = (kgk ≤ ε1) μ = μ maxn1/3, 1 − (2ρ − 1)3o ; υ = 2 else μ = μν; ν = 2ν

(64)

Matlab Optimization Toolbox - lsqnonlin.m >> x=lsqnonlin(fun,x0)

>> function F = lsqDi(x,a)

>> F = [ 2*x(1) - exp(a*x(1)) -x(1) - exp(a*x(2)) x(1) - x(2) ]; >> a = -1; x = lsqnonlin(@(x) lsqDi(x,a),[1;1])

Optimization terminated: relative function value changing by less than OP-TIONS.TolFun.

(65)

x = 0.2983 0.6960 0 5 10 15 20 0 20 40 60 -80 -60 -40 -20 0 20 Fun¸c˜ao lsqDi.m

Referências

Documentos relacionados

O Magic Desktop, a que se tem acesso através de um ícone no ambiente de trabalho do sistema operativo da Microsoft Windows, disponibiliza um conjunto de programas educativos

No caso da classificação por níveis de desempenho, a cada nível corresponde uma dada pontuação, de acordo com os critérios específicos.. Nas respostas aos itens de seleção,

ORDEM DOS REVISORES OFICIAIS DE CONTAS – Normas Técnicas de Revisão Auditoria, Ordem dos Revisores Oficiais de Contas, Lisboa, 2006. RITTENBERG, Larry E.; SCHWIEGER, Bradley

Realização de palestras nos domínios científicos das diversas áreas científicas do DEMG. Realização de palestras nas áreas de intervenção dos profissionais do ramo da Engenharia

e) Verificarem-se irregularidades graves na organização interna e violação dos deveres de conduta e das normas que disciplinam a atividade da plataforma eletrónica de

Segundo Jaergers, que no geral os indivíduos amputados realizam um ciclo da passada; os indivíduos amputados apresentam uma marcha assimétrica, passando mais tempo

Neste trabalho deseja-se extrair informa¸ c˜ oes m´ e- tricas utilizando uma cˆ amera, com o objetivo de melhorar as informa¸ c˜ oes de posi¸ c˜ ao do quadri- motor a partir da

Conhecer a prevalência pontual de indicações de internação no período pós-operatório, além do tempo de internação preconizado após cada tipo de procedimento, forneceria às