#***************************************************** # ROBOT TOM # ANTILLES GUYANE Septembre 2013 # L'algorithme de l'énoncé, exercice 4-1. robtom1 <- function(){ x <- 0 ; y <- 0 ; urne <- c(-1, 0, 1) while (y >= -1 & y <= 1 & x <= 9) { n <- sample(urne, 1) y <- y + n x <- x + 1 } # Affichage des résultats cat("La dernière position de TOM sur le pont : A(", x, ",", y, ")\n\n") } #----------------------------- # Exercice 4-2. Qualification de l'arrivée, traversé ou tombé robtom2 <- function(){ x <- 0 ; y <- 0 ; urne <- c(-1, 0, 1) while (y >= -1 & y <= 1 & x <= 9) { n <- sample(urne, 1) y <- y + n x <- x + 1 } # Affichage des résultats if (y == -2 | y == 2) { cat("TOM est tombé dans l'eau\n") cat("La dernière position de TOM est : A(", x, ",", y, ")\n\n") } else { cat("TOM a réussi la traversée du pont\n") cat("La dernière position de TOM sur le pont : A(", x, ",", y, ")\n\n") } } #-------------------------------- # REPRÉSENTATION GRAPHIQUE DE LA MARCHE DE TOM robtom3 <- function(){ x <- 0 ; y <- 0 ; urne <- c(-1, 0, 1) suiteX <- 0 ; suiteY <- 0 while (y >= -1 & y <= 1 & x <= 9) { n <- sample(urne, 1) y <- y + n x <- x + 1 suiteX <- c(suiteX, x) ; suiteY <- c(suiteY, y) } # print(suiteX) ; print(suiteY) # Représentation graphique du cheminement plot(c(0, 10), c(1, -1), type = "n", main = "Cheminement de TOM", xlab = "", ylab = "", xaxp = c(0, 10, 10), yaxp = c(-1, 1, 2)) lines(suiteX, suiteY, type = "o", pch = 19, col = "orange", lwd = 2) abline(h = c(-1, 1), lwd = 2) grid(col = "grey50") if (y == 2 | y == -2) { text(suiteX[x], suiteY[x], pos = 2, labels = "PLOUF", col = "blue", cex = 2) } else { text(suiteX[11], suiteY[11], pos = 2, labels = "TRAVERSE", col = "orange", cex = 2) } } #--------------------------------- # DE LA SIMULATION D'UNE MARCHE ALÉATOIRE AU CALCUL D'UNE ESTIMATION # DE LA PROBABILITÉ DE TRAVERSER LE PONT EN SIMULANT nbsim MARCHES ALÉATOIRES robtom4 <- function(nbsim = 2000){ urne <- c(-1, 0, 1) statPont <- 0 ; statY <- NULL ; statX <- NULL for (k in 1:nbsim) { x <- 0 ; y <- 0 suiteX <- 0 ; suiteY <- 0 while (y >= -1 & y <= 1 & x <= 9) { n <- sample(urne, 1) y <- y + n x <- x + 1 suiteX <- c(suiteX, x) ; suiteY <- c(suiteY, y) } # Pont <- ((x == 10 & y == -1) | (x == 10 & y == 1) | (x == 10 & y == 0)) Pont <- (y != -2 & y != 2) statPont <- statPont + Pont statX <- c(statX, x) ; statY <- c(statY, y) } PCPont <- statPont / nbsim # Affichage des résultats et des graphiques cat("Une estimation de la probabilité de passer le pont :", PCPont, "\n\n") # Représentation graphique des distributions des séries # simulées des abscisses et des ordonnées des positions # de la fin de la marche du robot sur le pont. plot(table(statX) / nbsim, main = "Distribution des abscisses d'arrivée", lwd = 3) grid(col = "grey50") plot(table(statY) / nbsim, main = "Distribution des ordonnées d'arrivée", lwd = 3) grid(col = "grey50") # Représentation graphique du dernier cheminement plot(c(0, 10), c(1, -1), type = "n", main = "Dernière simulation du cheminement de TOM", xlab = "", ylab = "", xaxp = c(0, 10, 10), yaxp = c(-1, 1, 2)) lines(suiteX, suiteY, type = "o", pch = 19, col = "orange", lwd = 2) abline(h = c(-1, 1), lwd = 2) grid(col = "grey50") if (y == 2 | y == -2) { text(suiteX[x], suiteY[x], pos = 2, labels = "PLOUF", col = "blue", cex = 2) } else { text(suiteX[11], suiteY[11], pos = 2, labels = "TRAVERSE", col = "orange", cex = 2) } }