[R-br] Retornar duas soluções do comando optmim
Wagner Wolff
wwolff em usp.br
Domingo Outubro 4 09:23:30 BRT 2015
Olá pessoal obrigado pelas dicas, problema solucionado.
Abraço
Em 02/10/2015 17:58, "Jônatan" <jdtatsch em gmail.com> escreveu:
> 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
> ###############################################################
>
> _______________________________________________
> 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.
>
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20151004/339398cb/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/20151004/339398cb/attachment.png>
Mais detalhes sobre a lista de discussão R-br