[R-br] Retornar duas soluções do comando optmim

Jônatan jdtatsch em gmail.com
Sexta Outubro 2 17:58:46 BRT 2015


Wagner, veja a adaptação de seu código comentada abaixo.

# função
Lmax_fun <- function(par){
  L <- par
  Ho <- 12
  Hvar <- 0.09061577
  So <- -0.03
  k <- 4.182488e-06
  ((Ho*Hvar/((-So-(k*L^1.75))*(1-Hvar)))-L)^2
}

L <- 1:300
Ho <- 12; Hvar <- 0.09061577; So <- -0.03; k <- 4.182488e-06
DEN_L <- ((-So-(k*L^1.75))*(1-Hvar))*L
plot(L,DEN_L,type = "l", ylim = c(0,max(DEN_L)*1.10))
abline(h=Ho*Hvar)

# otimização unidimensional - optimize()
# resultado depende do intervalo escolhido
# pelo gráfico da função podemos ver os intervalos das raízes
optimize(f = Lmax_fun, interval = c(min(L), max(L)))
optimize(f = Lmax_fun, interval = c(1, 200))
optimize(f = Lmax_fun, interval = c(100, 300))

library(pracma)
# findmins() divide o intervalo de busca n vezes (n = 100 por default)
mins <- findmins(f = Lmax_fun, min(L), max(L))
points(mins, rep(Ho*Hvar, 3), pch = 20)

#Condição para valer a escolha da função
mins[abs(So)/(k*mins^1.75) >= 1.75+1]

2015-10-02 14:48 GMT-03:00 Wagner Wolff <wwolff em usp.br>:

> Olá pessoal!
> Estou precisando de uma ajuda, preciso encontrar uma solução para uma
> variável que terei que usar um método iterativo para estimá-la, entretanto,
> existe duas soluções (raízes) ou mais para esta variável e preciso da
> segunda solução pois é a que tem explicação física, sendo assim, a função
> optmim me retorna a primeira, gostaria que retornasse todas as soluções
> possíveis, alguém saberia como posso fazer isso? Ou indicar outra função.
> Segue o código e o gráfico mostrando as duas soluções, onde a linha
> horizontal intersepta o perfil.
>
> Abraço
>
> Ho <- 12
> Hvar <- 0.09061577
> k <- 4.182488e-06
>
> Lmax_fun <- function(par,Ho,Hvar,So,k){
>     L <- par
>     ((Ho*Hvar/((-So-(k*L^1.75))*(1-Hvar)))-L)^2
> }
> So <- -0.03
> (Lmax <- optim(par=100,fn=Lmax_fun,Ho=Ho,Hvar=Hvar,k=k,So=So,method
> ="BFGS"))
>
> abs(So)/(k*Lmax^1.75) >= 1.75+1 #Condição para valer a escolha da função
>
> L <- 1:300
> DEN_L <- ((-So-(k*L^1.75))*(1-Hvar))*L
>
> plot(L,DEN_L,type = "l",ylim = c(0,max(DEN_L)*1.10))
> abline(h=Ho*Hvar)
> points(x=Lmax,Ho*Hvar)
> Lmax2 <- 129.3757
> points(x=Lmax2,Ho*Hvar)
>
>
>
>>
> _______________________________________________
> R-br mailing list
> R-br em listas.c3sl.ufpr.br
> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
> Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça
> código mínimo reproduzível.
>



-- 
###############################################################
##  Jônatan Dupont Tatsch
##  Professor do Departamento de Física
##  Coordenador Substituto do Programa de Pós-Graduação em Meteorologia
(PPGMET)
##  Centro de Ciências Exatas e Naturais (CCNE)
##  Universidade Federal de Santa Maria - UFSM
##  Faixa de Camobi, Prédio 13 - Campus UFSM - Santa Maria, RS, Brasil -
97105-900
##  Telefone: +55(55)33012083
##  www.ufsm.br/meteorologia
###############################################################
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20151002/4299c85e/attachment.html>
-------------- Próxima Parte ----------
Um anexo não-texto foi limpo...
Nome: grafico-perfil.png
Tipo: image/png
Tamanho: 18888 bytes
Descrição: não disponível
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20151002/4299c85e/attachment.png>


Mais detalhes sobre a lista de discussão R-br