Encontre estimativas dos pontos de máximo e mínimos globais da função
usando a técnica da Simulação Monte Carlo. Verifique Graficamente a qualidade do resultado obtido.
O processo conhecido como simulação Monte Carlo consiste em sortear um número grande de valores, testá-los na função que se deseja otimizar e selecionar os pontos para o qual a função atingiu maior valor, no caso da maximização, ou mínimo valor, no caso da minimização. Esse método também é conhecido como um método de força bruta, pois no lugar de encontrar as condições necessarias para encontrar os pontos de máximo e mínimo da função, esses pontos são encontrados testando um determinado (de preferência grande) conjunto de elementos que pertencem ao domínio e escolhendo aqueles que melhor se adequam.
Fig.1 Fisiculturista Jay Cutler mostrando como se operacionaliza o método da força bruta.
Começamos definindo a função que se deseja otimizar.
f<-function(v){
return(exp(abs(v)))
}
No passo seguinte vamos sortear valores \(n\) no domínio,\([a,b]\) que serão aplicados a função que desejamos otimizar, e vamos armazenar esses valores em um vetor com \(n\) componentes.
sorteio<-function(n,a,b){
v<-runif(n,a,b)
}
Em seguida, vamos aplicar os valores sorteados na segunda função dentro da primeira função, e selecionar os maiores e menores.
otimo<-function(n,a,b){
options(digits=15)
set.seed(100)
v<-runif(n,a,b)
y<-f(v)
min<-v[which.min(y)]
max<-v[which.max(y)]
cat("Mínimo=",min,"\n")
cat("Máximo=",max,"\n")
}
Definas as funções a serem utilizadas, basta aplicá-las e buscar os valores desejados. Faremos os testes e vamos comparalos para \(n = 1.000, n = 10.000 e n = 100.000\) No intervalo [-1,2].
otimo(1000,-1,2)
## Mínimo= 0.000509488163515925
## Máximo= 1.99857103079557
otimo(10000,-1,2)
## Mínimo= 3.49851325154305e-06
## Máximo= 1.99956093775108
otimo(100000,-1,2)
## Mínimo= -2.3464672267437e-06
## Máximo= 1.9999807823915
Como os números testados dependem de um sorteio, os resultados obtidos podem mudar a cada sorteio. Além disso, maior o número de elementos sorteados, maior a chance do resultado se aproximar do real. Analisando o problema graficamente podemos ter uma boa noção do quantos os resultados aqui obtidos se aproximam dos mínimos e máximos reais.
Fig.2 Gráfico da \(f(x) = e^{|x|}\). Elaborado no wxMaxima.
Podemos observar que o ponto de máximo para o determinado intervalo se encontra no limite \(x = 2\), enquanto o de mínimo global se encontra na origem \(x = 0\). Quanto maior o número de elementos (\(n\)) testados na função “otimo” criado, com mais precisão nos aproximamos dos reais valores de máximo e mínimo global.