0% ont trouvé ce document utile (0 vote)
4 vues2 pages

Boucles en R : Factorielle et Fibonacci

Le document présente un TP sur le langage R, axé sur l'utilisation des boucles à travers plusieurs exercices. Les exercices incluent le calcul de la factorielle d'un nombre, le tirage aléatoire jusqu'à un nombre donné, la génération de la suite de Fibonacci, et la création d'une matrice avec des statistiques descriptives. Chaque exercice est accompagné de corrections et d'exemples de code R.

Transféré par

nawrashassine280
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
4 vues2 pages

Boucles en R : Factorielle et Fibonacci

Le document présente un TP sur le langage R, axé sur l'utilisation des boucles à travers plusieurs exercices. Les exercices incluent le calcul de la factorielle d'un nombre, le tirage aléatoire jusqu'à un nombre donné, la génération de la suite de Fibonacci, et la création d'une matrice avec des statistiques descriptives. Chaque exercice est accompagné de corrections et d'exemples de code R.

Transféré par

nawrashassine280
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Enseignante: Matière: Langage R

Samah Yahia Année universitaire:


A.U. : 2020-2021
Section :LIRS2

Tp2 : Les boucles

Langage R

Exercice 1

1. Calculer la factorielle d’un nombre X À en utilisant la boucle while(), .

2. proposer une fonction qui lorsqu’on lui donne un nombre X, retourne sa factorielle. Rq :
Réutiliser la question précédente.

3. Comparer le résultat obtenu avec la fonction prédéfinie factorial().

Exercice 2

1. Choisir un nombre quelconque entre 1 et 200, et l’enregistrer dans un objet nommé nb.
Puis, créer une boucle qui permet d’effectuer un tirage aléatoire d’un entier compris
entre 1 et 200.
Cette boucle doit continuer tant que le nombre tiré est différent du nombre nb.
On déclare une variable que l’on appellera nbti qui va représenter le nombre de tirages
effectués pour obtenir le nombre nb à la sortie de la boucle.
2. Réutiliser le code de la question 1 pour programmer la fonction trouve_nb. Cette
dernière prend en parametre un nombre compris entre 1 et 200 et retourne le nombre
de tirages aléatoires d’entiers nécessaires avant de tirer le nombre nb.

Exercice 3

On souhaite reproduire la suite de Fibonacci jusqu’à son vingtième terme.

La suite de Fibonacci est définie par la relation Fib suivante : Fib = Fib−1 + Fib−2 ;
sachnant que les valeurs initiales sont : Fib0 = 0 et Fib1 = 1.

Exercice 4

1. Créer une matrice M1 de dimension 10 × 8 ou chaque vecteur colonne est composé de


tirages d’une loi Normale centrée réduite.
2. Donner la moyenne des valeurs de toutes les colonnes en appliquant la fonction
apply();
3. Donner l’écart-type des valeurs de toutes les colonnes en appliquant la fonction
apply();
Exercice 1 :
Correction des exercices : 1.
# Calcul de la factorielle d'un nombre X avec while
X <- 5 # Exemple avec 5
Exercice 1 : fact <- 1
i <- 1
1.
while(i <= X) {
X <- 5 # Exemple : calcul de 5! fact <- fact * i
fact <- 1 }
i <- i + 1
i <- 1
print(paste("La factorielle de", X, "est", fact))
while (i <= X) { 2.
fact <- fact * i # Fonction qui calcule la factorielle
calculer_factorielle <- function(X) {
i <- i + 1 if(X < 0) {
stop("La factorielle n'est pas définie pour les nombres négatifs")
} }
print(fact) fact <- 1
2. i <- 1
ma_factorielle <- function(X) { while(i <= X) {
fact <- 1 fact <- fact * i
i <- i + 1
i <- 1 }
while (i <= X) { return(fact)
fact <- fact * i }
i <- i + 1 # Test de la fonction
X <- 5
} resultat <- calculer_factorielle(X)
return(fact) print(paste("La factorielle de", X, "est", resultat))
3.
} # Comparaison avec la fonction prédéfinie
X <- 5
ma_factorielle(5) # Exemple resultat_fonction <- calculer_factorielle(X)
3. resultat_predefini <- factorial(X)
resultat_mafonction <- ma_factorielle(5) print(paste("Résultat de notre fonction:", resultat_fonction))
print(paste("Résultat de factorial():", resultat_predefini))
resultat_R <- factorial(5) print(paste("Les résultats sont identiques:", resultat_fonction == resultat_predefini))

Exercice 2 :
print(paste("Avec ma fonction :", resultat_mafonction)) 1.
# Choisir un nombre entre 1 et 200
print(paste("Avec la fonction R :", resultat_R)) [Link](123) # Pour la reproductibilité
nb <- sample(1:200, 1)
print(paste("Nombre choisi:", nb))
Exercice 2 : # Initialiser le compteur de tirages
1. nbti <- 0
tirage <- 0
[Link](123) # Pour la reproductibilité
nb <- sample(1:200, 1) # Choisir un nombre aléatoire entre 1 et 200 # Boucle de tirage aléatoire
while(tirage != nb) {
print(paste("Le nombre à trouver est :", nb)) tirage <- sample(1:200, 1)
nbti <- nbti + 1
}
nbti <- 0 # Nombre de tirages print(paste("Nombre de tirages nécessaires pour obtenir", nb, ":", nbti))
repeat { 2.
# Fonction trouve_nb
tirage <- sample(1:200, 1) trouve_nb <- function(nb) {
nbti <- nbti + 1 if(nb < 1 || nb > 200 || ![Link](nb) || nb != round(nb)) {
stop("Le nombre doit être un entier entre 1 et 200")
if (tirage == nb) { }
break nbti <- 0
} tirage <- 0

} while(tirage != nb) {
tirage <- sample(1:200, 1)
print(paste("Nombre de tirages nécessaires :", nbti)) nbti <- nbti + 1
2. }

trouve_nb <- function(nb) { return(nbti)


}
nbti <- 0
repeat { # Test de la fonction
[Link](456) # Pour la reproductibilité
tirage <- sample(1:200, 1) nombre_test <- 42
tirages_necessaires <- trouve_nb(nombre_test)
nbti <- nbti + 1 print(paste("Nombre de tirages nécessaires pour obtenir", nombre_test, ":", tirages_necessaires))
if (tirage == nb) { Exercice 3 :
# Suite de Fibonacci jusqu'au 20ème terme
break fibonacci <- numeric(20)
fibonacci[1] <- 0 # Fib0 = 0
} fibonacci[2] <- 1 # Fib1 = 1
} for(i in 3:20) {
return(nbti) fibonacci[i] <- fibonacci[i-1] + fibonacci[i-2]
}
}
# Affichage des 20 premiers termes
print("Les 20 premiers termes de la suite de Fibonacci sont:")
trouve_nb(100) # Exemple pour nb = 100 print(fibonacci)

# Affichage plus détaillé


for(i in 1:20) {
Exercice 3 : print(paste("Fib(", i-1, ") =", fibonacci[i]))
}
fib <- numeric(20) Exercice 4 :
fib[1] <- 0 # Fib0 1.
# Création d'une matrice 10×8 avec des valeurs de loi normale centrée réduite
fib[2] <- 1 # Fib1 [Link](789) # Pour la reproductibilité
M1 <- matrix(rnorm(10*8), nrow=10, ncol=8)

for (i in 3:20) { # Affichage de la matrice


print("Matrice M1:")
fib[i] <- fib[i - 1] + fib[i - 2] print(M1)
2.
} # Calcul de la moyenne de chaque colonne avec apply()
moyennes_colonnes <- apply(M1, 2, mean)

print(fib) print("Moyennes des colonnes:")


print(moyennes_colonnes)
3.
# Calcul de l'écart-type de chaque colonne avec apply()
Exercice 4 : ecart_types_colonnes <- apply(M1, 2, sd)
1. print("Écarts-types des colonnes:")
[Link](123) # Pour la reproductibilité print(ecart_types_colonnes)
M1 <- matrix(rnorm(10 * 8), nrow = 10, ncol = 8)
print(M1)
2.
moyennes <- apply(M1, 2, mean)
print(moyennes)
3.
ecarts_type <- apply(M1, 2, sd)
print(ecarts_type)

Vous aimerez peut-être aussi