[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