Não foi possível enviar o arquivo. Será algum problema com as permissões?
Diferenças

Diferenças

Aqui você vê as diferenças entre duas revisões dessa página.

Link para esta página de comparações

Ambos lados da revisão anterior Revisão anterior
disciplinas:ce718:atividades2011:pi [2011/06/20 22:08]
fernandomayer [section 3]
disciplinas:ce718:atividades2011:pi [2011/06/21 00:56] (atual)
fernandomayer [section 4]
Linha 164: Linha 164:
  
 ==== Comparação dos algorítmos ==== ==== Comparação dos algorítmos ====
 +
 +=== Executando e armazenando tempos e resultados ===
 +
 +<code R>
 +## Define um n comum
 +n1 <- 1:1e+4
 +n2 <- seq(0, 1e+6, 1000)[-1]
 +
 +##​----------------------------------------------------------------------
 +## Tempo Eder com n1
 +res.eder.n1 <- matrix(NA, ncol=2, nrow=length(n1))
 +con <- 1
 +eder.n1 <- system.time(
 +                       for (i in n1){
 +                           ​res.eder.n1[con,​] <- buffon.eder(i)
 +                           con <- con+1
 +                       }
 +                       )
 +
 +## Tempo Walmes com n1
 +walmes.n1 <- system.time(
 +                         bf <- buffon.walmes(max(n1))
 +                         )
 +res.walmes.n1 <- bf$rho/​(cumsum(bf$R)/​c(1:​length(bf$R)))
 +
 +
 +## Tempo Fernando com n1
 +fernando.n1 <- system.time(
 +                           ​res.fernando.n1 <- buffon.fernando(n1)
 +                           )
 +
 +## Tempo Stuart com n1
 +stuart.n1 <- system.time(
 +                         ​res.stuart.n1 <- buffon.stuart(max(n1))
 +                         )
 +##​----------------------------------------------------------------------
 +
 +## Tempo Eder com n2
 +res.eder.n2 <- matrix(NA, ncol=2, nrow=length(n2))
 +con <- 1
 +eder.n2 <- system.time(
 +                       for (i in n2){
 +                           ​res.eder.n2[con,​] <- buffon.eder(i)
 +                           con <- con+1
 +                       }
 +                       )
 +
 +## Tempo Walmes com n2
 +walmes.n2 <- system.time(
 +                         bf <- buffon.walmes(max(n2))
 +                         )
 +res.walmes.n2 <- bf$rho/​(cumsum(bf$R)/​c(1:​length(bf$R)))
 +
 +
 +## Tempo Fernando com n2
 +fernando.n2 <- system.time(
 +                           ​res.fernando.n2 <- buffon.fernando(n2)
 +                           )
 +
 +## Tempo Stuart com n2
 +stuart.n2 <- system.time(
 +                         ​res.stuart.n2 <- buffon.stuart(max(n2))
 +                         )
 +#### Parei em 3261 seg. ~ 55 min.
 +</​code>​
 +
 +=== Comparando performances ===
 +
 +<code R>
 +## Usando n1 = 1:1e4
 +##​----------------------------------------------------------------------
 +
 +## Comparacao de tempos de execucao
 +tempo.n1 <- c(eder.n1[3],​ walmes.n1[3],​ fernando.n1[3],​ stuart.n1[3])
 +names(tempo.n1) <- c("​eder",​ "​walmes",​ "​fernando",​ "​stuart"​)
 +tempo.n1 <- sort(tempo.n1)
 +## barchart
 +require(lattice)
 +barchart(tempo.n1,​ xlab = "Tempo (s)",
 +         panel = function(...){
 +             ​panel.barchart(...)
 +             ​panel.text(x = tempo.n1, y = 1:4,
 +                        labels = do.call(as.character,​
 +                        list(round(tempo.n1,​ 2))), pos = 2)
 +         })
 +
 +## Cria um data.frame com todos os resultados
 +res.n1 <- data.frame(n = n1,
 +                     eder = res.eder.n1[,​2],​
 +                     ​walmes = res.walmes.n1,​
 +                     ​fernando = res.fernando.n1$pi.est,​
 +                     ​stuart = res.stuart.n1)
 +
 +## modifica o data.frame para o lattice
 +require(reshape)
 +res.n1 <- melt(res.n1,​ id = 1)
 +
 +## Comparacao grafica
 +xyplot(value ~ n | variable, data = res.n1, type = "​l",​ as.table = TRUE,
 +       xlab = "​Número de jogadas da agulha",​
 +       ylab = expression(paste("​Estimativa de ", pi)),
 +       panel = function(...){
 +           ​panel.xyplot(...)
 +           ​panel.abline(h = pi, lty = 2)
 +       }, scales = list(relation = "​free"​))
 +
 +## Usando n2 = seq(0, 1e+6, 1000)[-1]
 +##​----------------------------------------------------------------------
 +
 +## Comparacao de tempos de execucao
 +tempo.n2 <- c(eder.n2[3],​ walmes.n2[3],​ fernando.n2[3])
 +names(tempo.n2) <- c("​eder",​ "​walmes",​ "​fernando"​)
 +tempo.n2 <- sort(tempo.n2)
 +## barchart
 +barchart(tempo.n2,​ xlab = "Tempo (s)",
 +         panel = function(...){
 +             ​panel.barchart(...)
 +             ​panel.text(x = tempo.n2, y = 1:4,
 +                        labels = do.call(as.character,​
 +                        list(round(tempo.n2,​ 2))), pos = 2)
 +         })
 +
 +## Cria um data.frame com todos os resultados
 +## Stuart nao entra pq nao terminou a execução
 +## Walmes fica de fora pq vai ate 1e6
 +res.n2 <- data.frame(n = n2,
 +                     eder = res.eder.n2[,​2],​
 +                     ​fernando = res.fernando.n2$pi.est)
 +
 +## modifica o data.frame para o lattice
 +res.n2 <- melt(res.n2,​ id = 1)
 +
 +## Comparacao grafica
 +xyplot(value ~ n | variable, data = res.n2, type = "​l",​ as.table = TRUE,
 +       xlab = "​Número de jogadas da agulha",​
 +       ylab = expression(paste("​Estimativa de ", pi)),
 +       panel = function(...){
 +           ​panel.xyplot(...)
 +           ​panel.abline(h = pi, lty = 2)
 +       })#, scales = list(relation = "​free"​))
 +
 +## Plot separado do Walmes
 +xyplot(res.walmes.n2 ~ 1:max(n2), type = "​l",​
 +       xlab = "​Número de jogadas da agulha",​
 +       ylab = expression(paste("​Estimativa de ", pi)),
 +       panel = function(...){
 +           ​panel.xyplot(...)
 +           ​panel.abline(h = pi, lty = 2)
 +       })
 +</​code>​
 +
  

QR Code
QR Code disciplinas:ce718:atividades2011:pi (generated for current page)