Escolar Documentos
Profissional Documentos
Cultura Documentos
6.6. Use a Rotina 6.6 e sua variante com busca de Armijo para minimizar a função do
1
Exemplo 6.1 a partir do novo ponto x 0=() 2
e compare o número de iterações, de avaliações de
funçãoo e o tempo gasto por cada método para resolver o problema.
Resolução:
Funções utilizadas: armijo.m, aurea.m, grad_aurea.m, grad_armijo.m, exquad.
Na janela de comandos, escreva:
fun=’exquad’
epsl=1e-5
kmax=1000
x0=[1;2]
grad_aurea
gama=0.7
eta=0.45
grad_armijo
Pelo método do gradiente com tamanho de passo obtido pelo algoritmo da seção Áurea, o
problema é resolvido em 4.7483s com 5 iterações, na Tabela 1 abaixo podemos ver os valores da
função e da norma do gradiente calculados em cada iteração. As figuras 5 e 6 mostram os
gráficos gerados pelo algoritmo, com variação da função e da norma do gradiente, ao longo das
iterações.
Áurea
k f norm(g)
0 33.000.000 29.732.137
1 0.021607 0.160609
2 0.000032 0.029354
3 0.000000 0.000239
4 0.000000 0.000053
5 0.000000 0.000001
Armijo
nor
k f m(g
)
33.0 29.7
0 00.0 32.1
00 37
1.72 6.76
1 6.34 1.04
7 2
0.10 1.54
2 865 4.56
5 1
0.01 0.21
3 955 828
1 4
0.01 0.16
4 639 632
7 3
5 0.01 0.23
335 609
6 9
0.01 0.11
6 068 483
7 3
0.00 0.26
7 431 668
0 1
0.00 0.05
8 159 114
6 2
0.00 0.07
9 128 095
7 1
0.00 0.03
10 104 579
2 5
0.00 0.07
11 039 918
5 2
0.00 0.01
12 015 574
5 3
0.00 0.02
13 012 134
4 5
0.00 0.01
14 010 115
2 9
0.00 0.02
15 003 351
6 5
0.00 0.00
16 001 485
5 1
0.00 0.00
17 001 642
2 8
0.00 0.00
18 001 348
0 0
0.00 0.00
19 000 698
3 4
0.00 0.00
20 000 149
1 6
0.00 0.00
21 000 193
1 8
22 0.00 0.00
000 138
1 8
0.00 0.00
23 000 147
1 9
0.00 0.00
24 000 109
1 6
0.00 0.00
25 000 114
1 0
0.00 0.00
26 000 087
0 4
0.00 0.00
27 000 122
0 7
0.00 0.00
28 000 060
0 8
0.00 0.00
29 000 137
0 7
0.00 0.00
30 000 026
0 9
0.00 0.00
31 000 036
0 9
0.00 0.00
32 000 018
0 9
0.00 0.00
33 000 040
0 9
0.00 0.00
34 000 008
0 3
0.00 0.00
35 000 011
0 1
0.00 0.00
36 000 005
0 9
0.00 0.00
37 000 012
0 1
0.00 0.00
38 000 002
0 6
39 0.00 0.00
000 003
0 3
0.00 0.00
40 000 002
0 4
0.00 0.00
41 000 002
0 5
0.00 0.00
42 000 001
0 9
0.00 0.00
43 000 002
0 0
0.00 0.00
44 000 001
0 5
0.00 0.00
45 000 002
0 1
0.00 0.00
46 000 001
0 0
0.00 0.00
47 000 002
0 4
0.00 0.00
48 000 000
0 5
1
()
6.7. Use a rotina 6.6 para minimizar a quadrática dada por (6.1) a partir do ponto x 0= .
1
Resolvendo o problema com o método do gradiente com busca Áurea para a matriz A1
1 0
= ( )
0 2
, obtemos o resultado em 4.8909s com 10 iterações. Segue abaixo os valores
calculados em cada iteração na Tabela 3.
Matriz A1
nor
k f m(g
)
1.50 2.23
0 0.00 6.06
0 8
0.11 0.49
1 111 690
1 2
0.00 0.16
2 823 563
0 2
0.00 0.03
3 061 680
0 6
0.00 0.01
4 004 226
5 9
0.00 0.00
5 000 272
3 6
0.00 0.00
6 000 090
0 9
0.00 0.00
7 000 020
0 2
0.00 0.00
8 000 006
0 7
0.00 0.00
9 000 001
0 5
10 0.00 0.00
000 000
0 5
Tabela 3: Valores da função e da norma do gradiente.
As figuras 9 e 10 mostram os gráficos gerados pelo algoritmo, com variação da função e
da norma do gradiente, ao longo das iterações.
Matriz A2
K f norm(g)
0 250.500.000 500.001.000
1 0.498091 1.041.073
2 0.485013 3.421.105
3 0.472279 1.012.894
4 0.459665 3.361.917
5 0.447389 0.986668
6 0.435642 3.242.451
7 0.424204 0.959961
8 0.412875 3.186.354
9 0.401847 0.935106
10 0.391298 3.072.768
100 0.034954 0.926645
200 0.002387 0.242077
300 0.000163 0.063258
400 0.000011 0.016534
500 0.000001 0.004322
600 0.000000 0.001130
700 0.000000 0.000295
800 0.000000 0.000077
863 0.000000 0.000010
Tabela 4: Valores da função e da norma do gradiente.
6.12. Implemente o método do gradiente com busca exata para minimizar a quadrática (6.1),
com a matriz A∈ Rnxn obtida pela Rotina 6.2, a partir de um ponto x 0∈ Rn arbitrário. Considere 𝜆1
= 1 e 𝜆2 = 20. Note que neste caso o tamanho do passo pode ser calculado diretamente pela
fórmula (5.4). Teste o algoritmo implementando com diferentes valores de n e compare o tempo
computacional com o tempo gasto ao se utilizar a Rotina 6.6.
Resolução: Funções utilizadas: quadratica.m, matriz_simetrica.m, vetor_arb.m, aurea.m,
grad_exata_sg.m, grad_aurea_sg.
Na janela de comandos, escreva:
fun=’quadratica’
global A
A=matriz_simetrica(n,1,20) (n é a ordem da matriz)
global x0
x0=vetor_arb(n,1)
epsl=1e-5
kmax=1000
grad_exata_sg
grad_aurea_sg
Após compararmos o tempo gasto para n=2, o processo foi novamente feito para outros
valores de n, onde foram gerados uma nova matriz simétrica aleatória e outro vetor aleatório e
analisados o tempo gasto da solução pelo método do gradiente com busca exata e pelo método
do gradiente com seção Áurea conforme a Tabela 5 abaixo.
Tempo gasto (s)
n Exata Áurea
2 0.00091600 0.010237
3 0.0074100 0.12179
4 0.011092 0.11700
5 0.0075810 0.14663
6 0.016723 0.15645
7 0.0064960 0.13144
8 0.013363 0.13047
9 0.0069849 0.14091
10 0.0074379 0.15042
20 0.0067189 0.13503
100 0.025747 0.43142
500 0.039103 0.44911
1000 0.19915 3.1301
5000 4.6545 74.547
Tabela 5: Tempo gasto em segundos pelo método do gradiente com seção Áurea e com busca
exata.
Podemos ver que não há diferença no número de iterações em ambos os métodos, porém, o
problema é solucionado mais rápido ao utilizarmos busca exata. Não há muita discrepância entre
o tempo gasto com valores de n baixos, contudo ao utilizar valores altos para n, essa diferença
aumenta, como podemos ver para n = 5000, onde a diferença chega a ser, aproximadamente, de
70s.
Observação: foi utilizado o programa GNU Octave-5.1.0.0 para resolução dos exercícios
acima.
Referências: http://en.pudn.com/Download/item/id/740271.html