Erro na função integrate
Caro Colegas, Boa noite. Eu estou tentando solução a integral dessa equação dvg com a função integrate, mas o resultado é muito superior ao esperado, algum colega poderia me ajudar apontando possíveis erros? Obrigado.
dvg <- function(x, ts, tr, a, n){+ tr+(ts-tr)/((1+(a*x)^n)^(1-1/n))+ }> dvg <- function(x){+ 0.23+(0.64-0.23)/((1+(1.22*x)^1.34)^(1-1/1.34))+ }> dvg(10) - dvg(1500)[1] 0.1417496> integrate(dvg, lower = 10, upper = 1500)412.4841 with absolute error < 0.0011
-- Alisson Lucrecio da Costa
Supondo que a função enviada no email anterior esteja correta, o
WolframAlpha dá o mesmo resultado que tu obteve:
http://www.wolframalpha.com/input/?i=integrate%28+0.23%2B%280.64-0.23%29%2F%28%281%2B%281.22*x%29%5E1.34%29%5E%281-1%2F1.34%29%29%2C+x%3D10+to+1500%29
2014-05-23 18:18 GMT-03:00 Alisson Lucrecio <alissonluc@gmail.com>:
> Caro Colegas,
>
> Boa noite.
>
> Eu estou tentando solução a integral dessa equação dvg com a função
> integrate, mas o resultado é muito superior ao esperado, algum colega
> poderia me ajudar apontando possíveis erros?
>
> Obrigado.
>
>> dvg <- function(x, ts, tr, a, n){
> + tr+(ts-tr)/((1+(a*x)^n)^(1-1/n))
> + }
>> dvg <- function(x){
> + 0.23+(0.64-0.23)/((1+(1.22*x)^1.34)^(1-1/1.34))
> + }
>> dvg(10) - dvg(1500)
> [1] 0.1417496
>> integrate(dvg, lower = 10, upper = 1500)
> 412.4841 with absolute error < 0.0011
>
>
>
> --
>
> Alisson Lucrecio da Costa
>
> _______________________________________________
> R-br mailing list
> R-br@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.
--
Marcus Nunes
http://marcusnunes.me/
Se dvg = f(x)
f(1500)-f10) não é igual à integral de f entre 10 e 1500 pois a primeira diferença corresponde à distância entre f(10) e f(1500) e a integral corresponde à área sob a curva f e o eixo x entre x =10 e x = 1500.
At.
Jobenil
Enviada do meu iPad
> Em 23/05/2014, às 18:22, Marcus Nunes <marcus.nunes@gmail.com> escreveu:
>
> Supondo que a função enviada no email anterior esteja correta, o
> WolframAlpha dá o mesmo resultado que tu obteve:
>
> http://www.wolframalpha.com/input/?i=integrate%28+0.23%2B%280.64-0.23%29%2F%28%281%2B%281.22*x%29%5E1.34%29%5E%281-1%2F1.34%29%29%2C+x%3D10+to+1500%29
>
> 2014-05-23 18:18 GMT-03:00 Alisson Lucrecio <alissonluc@gmail.com>:
>> Caro Colegas,
>>
>> Boa noite.
>>
>> Eu estou tentando solução a integral dessa equação dvg com a função
>> integrate, mas o resultado é muito superior ao esperado, algum colega
>> poderia me ajudar apontando possíveis erros?
>>
>> Obrigado.
>>
>>> dvg <- function(x, ts, tr, a, n){
>> + tr+(ts-tr)/((1+(a*x)^n)^(1-1/n))
>> + }
>>> dvg <- function(x){
>> + 0.23+(0.64-0.23)/((1+(1.22*x)^1.34)^(1-1/1.34))
>> + }
>>> dvg(10) - dvg(1500)
>> [1] 0.1417496
>>> integrate(dvg, lower = 10, upper = 1500)
>> 412.4841 with absolute error < 0.0011
>>
>>
>>
>> --
>>
>> Alisson Lucrecio da Costa
>>
>> _______________________________________________
>> R-br mailing list
>> R-br@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.
>
>
>
> --
> Marcus Nunes
> http://marcusnunes.me/
> _______________________________________________
> R-br mailing list
> R-br@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.
Alisson, bom dia! Com base na dica dada por Jobenil Júnior, pensei em comparar o procedimento utilizando uma função para cálculo aproximado da área abaixo da curva já postada aqui no fórum. ### <code r> # dvg <- function(x, ts, tr, a, n) {tr+(ts-tr)/((1+(a*x)^n)^(1-1/n))} dvg <- function(x){0.23+(0.64-0.23)/((1+(1.22*x)^1.34)^(1-1/1.34))} dvg(10) - dvg(1500) # [1] 0.1417496 integrate(dvg, lower = 10, upper = 1500) # 412.4841 with absolute error < 0.0011 # emprestando a função para cálculo da área abaixo da curva já postada por Walmes Zeviani browseURL(" http://r-br.2285057.n4.nabble.com/R-br-funcao-para-calculo-da-area-abaixo-da... ") aac <- function(x, y){ ox <- order(x) x <- x[ox] y <- y[ox] alt <- diff(x) bas <- y[-length(y)]+diff(y)/2 a <- sum(alt*bas) return(a) } x=seq(10,1500, by=10); y=dvg(x); aac(x, y) #[1] 412.5297 x=seq(10,1500, by=1); y=dvg(x); aac(x, y) #[1] 412.4846 x=seq(10,1500, by=.1); y=dvg(x); aac(x, y) #[1] 412.4841 integrate(dvg, lower = 10, upper = 1500) # 412.4841 with absolute error < 0.0011 ### visualização plot(x, y, ylim=c(0,.5), type='n') polygon(c(x[1],x,x[length(x)]),c(0,y,0), col=5) points(c(10,1500), c(dvg(10), dvg(1500)), col=2, pch=20) text(c(10,1500), c(dvg(10), dvg(1500)), round(c(dvg(10), dvg(1500)),4), cex=.5, pos=3) ### </code> Éder Comunello <c <comunello.eder@gmail.com>omunello.eder@gmail.com> Dourados, MS - [22 16.5'S, 54 49'W]
Caro Colegas, muito obrigado por todas suas dicas. On Sat, May 24, 2014 at 7:26 AM, Éder Comunello <comunello.eder@gmail.com>wrote:
Alisson, bom dia!
Com base na dica dada por Jobenil Júnior, pensei em comparar o procedimento utilizando uma função para cálculo aproximado da área abaixo da curva já postada aqui no fórum.
### <code r> # dvg <- function(x, ts, tr, a, n) {tr+(ts-tr)/((1+(a*x)^n)^(1-1/n))} dvg <- function(x){0.23+(0.64-0.23)/((1+(1.22*x)^1.34)^(1-1/1.34))}
dvg(10) - dvg(1500) # [1] 0.1417496
integrate(dvg, lower = 10, upper = 1500) # 412.4841 with absolute error < 0.0011
# emprestando a função para cálculo da área abaixo da curva já postada por Walmes Zeviani browseURL(" http://r-br.2285057.n4.nabble.com/R-br-funcao-para-calculo-da-area-abaixo-da... ")
aac <- function(x, y){ ox <- order(x) x <- x[ox] y <- y[ox] alt <- diff(x) bas <- y[-length(y)]+diff(y)/2 a <- sum(alt*bas) return(a) }
x=seq(10,1500, by=10); y=dvg(x); aac(x, y) #[1] 412.5297 x=seq(10,1500, by=1); y=dvg(x); aac(x, y) #[1] 412.4846 x=seq(10,1500, by=.1); y=dvg(x); aac(x, y) #[1] 412.4841
integrate(dvg, lower = 10, upper = 1500) # 412.4841 with absolute error < 0.0011
### visualização plot(x, y, ylim=c(0,.5), type='n') polygon(c(x[1],x,x[length(x)]),c(0,y,0), col=5) points(c(10,1500), c(dvg(10), dvg(1500)), col=2, pch=20) text(c(10,1500), c(dvg(10), dvg(1500)), round(c(dvg(10), dvg(1500)),4), cex=.5, pos=3)
### </code>
Éder Comunello <c <comunello.eder@gmail.com>omunello.eder@gmail.com> Dourados, MS - [22 16.5'S, 54 49'W]
_______________________________________________ R-br mailing list R-br@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.
-- Alisson Lucrecio da Costa
participantes (4)
-
Alisson Lucrecio -
Jobenil Luiz Magalhães Júnior -
Marcus Nunes -
Éder Comunello