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
Última revisão Ambos lados da revisão seguinte
cursos:mct:exemplo5 [2011/05/09 10:59]
paulojus
cursos:mct:exemplo5 [2011/05/27 18:58]
paulojus
Linha 55: Linha 55:
 </​code>​ </​code>​
  
 +<fs medium>​Precisão numérica/​ponto flutuante</​fs>​
 +
 +Encontrando dados replicados, e não replicados
 +<code R>
 +x <- rpois(25, lam=5)
 +x
 +unique(x)
 +
 +duplicated(x)
 +x[!duplicated(x)]
 +x[duplicated(x)]
 +</​code>​
 +
 +Representação de números e ponto flutuante.\\
 +''​isTRUE''​ deve se usado para testar condições dentro de funções.
 +<code R>
 +.1 == .3/3
 +all.equal(.1,​ .3/3)
 +isTRUE(all.equal(0.1,​ .3/3))
 +identical(.1,​ .3/3)
 +</​code>​
 +
 +Mais coisas que deveriam ser iguais... mas não exatamente são ...
 +<code R>
 +seq(0, 1, by=0.1) == 0.3
 +
 +x <- c(.3, 0.4 - 0.1, 0.5 - 0.2, 0.6 - 0.3, 0.7 - 0.4)
 +x
 +unique(x)
 +</​code>​
 +
 +Um exemplo com uma função para resolver equação do 2o grau:
 +<code R>
 +eq2g <- function(a, b, c){
 + delta <- b^2 - 4 * a * c
 + if(is.complex(delta) || all(delta > 0))
 +    delta <- sqrt(delta)
 + else
 +    delta <- sqrt(as.complex(delta))
 + return(cbind(-b + c(-1,1) * delta)/​(2*a))
 +}
 +
 +print(eq2g(1,​ -5, 6), dig=16)
 +
 +eq2g(1, c(-5, 1), 6)
 +
 +eq2g(1, -5, 6) - c(2, 3)
 +
 +eq2g(1/3, -5/3, 6/3)
 +
 +print(eq2g(1/​3,​ -5/3, 6/3), dig=16)
 +
 +eq2g(1/3, -5/3, 6/3) - c(2, 3)
 +</​code>​
 +
 +
 +<fs medium>​Objetos crescentes, substituição der valores e criação direta de vetores</​fs>​
 +
 +Os tempos de execução podem ser substancialmetne diferentes!!
 +<code R>
 +n<- 50000
 +
 +system.time({
 +vec <- numeric(0)
 +for(i in 1:n) vec <- c(vec, i)
 +})
 +
 +system.time({
 +vec <- numeric(n)
 +for(i in 1:n) vec[i] <- i
 +})
 +
 +system.time({
 +vec <- 1:n
 +})
 +</​code>​
 +
 +Onderm de operações
 +<code R>
 +x <- rnorm(10000,​ m=100, sd=10)
 +
 +system.time({
 + lsum <- 0
 + for(i in 1:​length(x)){
 +   lsum <- lsum + log(x[i])
 +  }
 + })
 +
 +system.time(lsum <- sum(log(x)))
 +
 +c(log(12.3),​ log(16.7), log(18.3))
 +log(c(12.3, 16.7, 18.3))
 +</​code>​

QR Code
QR Code cursos:mct:exemplo5 (generated for current page)