feat: add exercises and calculations for statistical analysis in R

This commit is contained in:
2025-03-06 09:05:55 +01:00
parent cd0a3a84fa
commit 9824061e47
18 changed files with 796 additions and 9 deletions

View File

@@ -0,0 +1,29 @@
# Exemple 1
# Définir l'ensemble
ensemble <- c(1, 2, 3, 4, 5)
# Calculer la cardinalité de l'ensemble
cardinalite <- length(ensemble)
# Afficher le résultat
print(paste("La cardinalité de l'ensemble est:", cardinalite))
# Exemple 2
# Définir l'ensemble avec des éléments répétés
ensemble <- c(1, 2, 2, 3, 4, 4, 5)
# Calculer la cardinalité de l'ensemble avec des éléments uniques
cardinalite_unique <- length(unique(ensemble))
# Afficher le résultat
print(paste("La cardinalité de l'ensemble avec des éléments uniques est:", cardinalite_unique))
# Exemple 3
# Définir un ensemble vide
ensemble_vide <- c()
# Calculer la cardinalité de l'ensemble vide
cardinalite_vide <- length(ensemble_vide)
# Afficher le résultat
print(paste("La cardinalité de l'ensemble vide est:", cardinalite_vide))

View File

@@ -0,0 +1,71 @@
# Exemple 1
# Définir la fonction à intégrer
f <- function(x) {
return(x^2)
}
# Définir les bornes de l'intégration
a <- 0
b <- 1
# Définir le nombre de rectangles
n <- 1000
# Calculer la largeur de chaque rectangle
dx <- (b - a) / n
# Calculer les abscisses des points intermédiaires
x_vals <- seq(a, b, length.out = n+1)
# Calculer les ordonnées des points intermédiaires
y_vals <- f(x_vals)
# Calculer l'intégrale en utilisant la méthode des rectangles
integrale_rect <- sum(y_vals[-(n+1)] * dx)
# Afficher le résultat
print(paste("L'intégrale de x^2 sur [0, 1] est environ:", integrale_rect))
# Exemple 2
# Définir la fonction à intégrer
f <- function(x) {
return(exp(x))
}
# Définir les bornes de l'intégration
a <- 0
b <- 1
# Définir le nombre de subdivisions (doit être pair)
n <- 1000
# Calculer la largeur de chaque subdivision
h <- (b - a) / n
# Calculer les abscisses des points intermédiaires
x_vals <- seq(a, b, length.out = n+1)
# Calculer les ordonnées des points intermédiaires
y_vals <- f(x_vals)
# Calculer l'intégrale en utilisant la méthode de Simpson
integrale_simpson <- (h/3) * (y_vals[1] + y_vals[n+1] + 4 * sum(y_vals[seq(2, n, by=2)]) + 2 * sum(y_vals[seq(3, n-1, by=2)]))
# Afficher le résultat
print(paste("L'intégrale de e^x sur [0, 1] est environ:", integrale_simpson))
# Exemple 3
# Définir la fonction à intégrer
f <- function(x) {
return(sin(x))
}
# Définir les bornes de l'intégration
a <- 0
b <- pi
# Calculer l'intégrale en utilisant la fonction integrate
result <- integrate(f, a, b)
# Afficher le résultat
print(paste("L'intégrale de sin(x) sur [0, pi] est environ:", result$value))

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,47 @@
/* Contient toutes les fonctions nécessaires pour ajouter un exo dans la feuille courante de la base de données */
var xhr = null; // Variable globale qui contient la requête. Globale pour éviter deux requêtes simultanées, pour ne pas surcharger le serveur...
function ajouteexo(id,numerocadre,punid,punisguest)
{
if (xhr && xhr.readyState != 0) {
// On doit attendre que la requête ait aboutie avant d'en envoyer une deuxième....
return;
}
xhr=getXMLHttpRequest(); // On crée la requête
xhr.open("GET", "lib/ajouteexofeuille.php?id=" +id+"&punid="+punid+"&punisguest="+punisguest, true); // Requête asynchrone...
// On modifie le texte affiché...
document.getElementById("exo"+numerocadre).disable="true";
document.getElementById("exo"+numerocadre).innerHTML=" [Ajout en cours...] ";
// On prépare la réponse quand la requête est terminée : affichage intermittent de Ajout Effectué...
xhr.onreadystatechange = function()
{
if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0))
{
document.getElementById("exo"+numerocadre).innerHTML = " [Ajout effectué] ";
xhr.abort(); // On peut mettre fin à la requête.
setTimeout (function( )
{
document.getElementById("exo"+numerocadre).innerHTML= " [Ajouter à ma feuille d'exos] ";
document.getElementById("exo"+numerocadre).disable="false";
}, 4000);
}
else if (xhr.readyState == 4)
{
document.getElementById("exo"+numerocadre).disable="false";
document.getElementById("exo"+numerocadre).innerHTML=" [Ajouter à ma feuille d'exos] ";
xhr.abort();
}
};
// On lance la requête.
xhr.send(null);
}

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,134 @@
// Affiche le sous-menu quand on clique sur le menu...
function affiche_sousmenu(num)
{
// On remet tout à zéro
for (i=1;i<6;i++) document.getElementById("sousmenu_" + i).style.display = "none";
// On affiche ce qui nous intéresse...
document.getElementById("sousmenu_" + num).style.display = "flex";
}
// Ouvre le menu mobile
function ouvremenumobile()
{
scrollLent();
document.getElementById("iconeouvremenu").style.display="none";
document.getElementById("iconefermemenu").style.display="flex";
document.getElementById("menumobile").style.display="block";
}
function fermemenumobile()
{
document.getElementById("iconeouvremenu").style.display="flex";
document.getElementById("iconefermemenu").style.display="none";
document.getElementById("menumobile").style.display="none";
}
// Affiche ou ferme le sousmenumobile
function affiche_sousmenumobile(num)
{
sousmenu=document.getElementById("sousmenumobile"+num);
sousimageferme=document.getElementById("sousmenumobileimageferme"+num);
sousimageouvert=document.getElementById("sousmenumobileimageouvert"+num);
if (sousmenu.style.display!="block")
{
// On doit remonter tout en haut...
// Le sous menu n'était pas affiché, on l'affiche
sousmenu.style.display="block";
sousimageouvert.style.display="inline";
sousimageferme.style.display="none";
}
else
{
sousmenu.style.display="none";
sousimageouvert.style.display="none";
sousimageferme.style.display="inline";
}
}
// Remonte la page doucement...
function scrollLent()
{
var scrollTop = document.body.scrollTop || document.documentElement.scrollTop;
scrollBy(0, -scrollTop);
}
// Ouvre et ferme la fenêtre de recherche mobile
function ouvrerecherchemobile()
{
scrollLent();
document.getElementById("iconeouvrerecherche").style.display="none";
document.getElementById("iconefermerecherche").style.display="flex";
document.getElementById("recherchemobile").style.display="block";
}
function fermerecherchemobile()
{
document.getElementById("iconeouvrerecherche").style.display="flex";
document.getElementById("iconefermerecherche").style.display="none";
document.getElementById("recherchemobile").style.display="none";
}
// Le spoiler "de base"
function showSpoiler(obj)
{
var inner = obj.parentNode.getElementsByTagName("div")[0];
if (inner.style.display == "none")
inner.style.display = "";
else
inner.style.display = "none";
}
// Le spoiler pour les Quizz
function showQuestion(idinner)
{
var inner = document.getElementById(idinner); // On affiche, ou pas, le contenu
if (inner.style.display == "none")
{
inner.style.display = "";
}
else
{
inner.style.display = "none";
}
}
// Le spoiler spécifique aux exercices
function showAll(idinner,idimage)
{
var inner = document.getElementById(idinner); // On affiche, ou pas, le contenu
var image = document.getElementById(idimage);
if (inner.style.display == "none")
{
inner.style.display = "";
image.setAttribute("src","https://www.bibmath.net/lib/bas.png");
}
else
{
inner.style.display = "none";
image.setAttribute("src","https://www.bibmath.net/lib/droite.png");
}
}
// Ouvre le menu forum en mode responsive
/* Toggle between adding and removing the "responsive" class to topnav when the user clicks on the icon */
function ouvremenuforum() {
var x = document.getElementById("mytopnav");
if (x.className === "topnav") {
x.className += " responsive";
} else {
x.className = "topnav";
}
}

View File

@@ -0,0 +1,22 @@
/* Fonction qui crée une requête de type XMLHttpRequest */
function getXMLHttpRequest() {
var xhr = null;
if (window.XMLHttpRequest || window.ActiveXObject) {
if (window.ActiveXObject) {
try {
xhr = new ActiveXObject("Msxml2.XMLHTTP");
} catch(e) {
xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
} else {
xhr = new XMLHttpRequest();
}
} else {
alert("Votre navigateur ne gère par l'ajout dans une feuille d'exercices");
return null;
}
return xhr;
}

View File

@@ -0,0 +1,59 @@
// Essaie de fixer la div de menu lors d'un scrolling...
var afixer = document.getElementById("menuetsousmenu");
var adecaler = document.getElementById("main");
var position=afixer.offsetTop;
var afixerpub = document.getElementById("pubdroite");
var positionpub= afixerpub.offsetTop;
console.log(positionpub);
function scrolled(){
var windowHeight = window.innerHeight,
currentScroll = document.body.scrollTop || document.documentElement.scrollTop;
if (currentScroll>=position)
{
afixer.className = "fixed";
adecaler.className = "decale";
}
else
{
afixer.className="";
adecaler.className="";
}
// Ne fixer la pub que si la taille de l'écran est suffisante....
console.log(windowHeight);
if ( (currentScroll>=positionpub-100) && (windowHeight>=800) )
{
afixerpub.className="fixedpub";
}
else
{
afixerpub.className="";
}
}
addEventListener("scroll", scrolled, false);
/*
<script>
var positionElementInPage = $('#menu').offset().top;
$( window ).resize(function() {
positionElementInPage = $('#menu').offset().top;
});
$(window).scroll(
function() {
if ($(window).scrollTop() > positionElementInPage) {
// fixed
$('#menu').addClass("fixedTop");
} else {
// unfixed
$('#menu').removeClass("fixedTop");
}
}
);
</script>*/

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,47 @@
/* Contient toutes les fonctions nécessaires pour ajouter un exo dans la feuille courante de la base de données */
var xhr = null; // Variable globale qui contient la requête. Globale pour éviter deux requêtes simultanées, pour ne pas surcharger le serveur...
function ajouteexo(id,numerocadre,punid,punisguest)
{
if (xhr && xhr.readyState != 0) {
// On doit attendre que la requête ait aboutie avant d'en envoyer une deuxième....
return;
}
xhr=getXMLHttpRequest(); // On crée la requête
xhr.open("GET", "lib/ajouteexofeuille.php?id=" +id+"&punid="+punid+"&punisguest="+punisguest, true); // Requête asynchrone...
// On modifie le texte affiché...
document.getElementById("exo"+numerocadre).disable="true";
document.getElementById("exo"+numerocadre).innerHTML=" [Ajout en cours...] ";
// On prépare la réponse quand la requête est terminée : affichage intermittent de Ajout Effectué...
xhr.onreadystatechange = function()
{
if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0))
{
document.getElementById("exo"+numerocadre).innerHTML = " [Ajout effectué] ";
xhr.abort(); // On peut mettre fin à la requête.
setTimeout (function( )
{
document.getElementById("exo"+numerocadre).innerHTML= " [Ajouter à ma feuille d'exos] ";
document.getElementById("exo"+numerocadre).disable="false";
}, 4000);
}
else if (xhr.readyState == 4)
{
document.getElementById("exo"+numerocadre).disable="false";
document.getElementById("exo"+numerocadre).innerHTML=" [Ajouter à ma feuille d'exos] ";
xhr.abort();
}
};
// On lance la requête.
xhr.send(null);
}

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,134 @@
// Affiche le sous-menu quand on clique sur le menu...
function affiche_sousmenu(num)
{
// On remet tout à zéro
for (i=1;i<6;i++) document.getElementById("sousmenu_" + i).style.display = "none";
// On affiche ce qui nous intéresse...
document.getElementById("sousmenu_" + num).style.display = "flex";
}
// Ouvre le menu mobile
function ouvremenumobile()
{
scrollLent();
document.getElementById("iconeouvremenu").style.display="none";
document.getElementById("iconefermemenu").style.display="flex";
document.getElementById("menumobile").style.display="block";
}
function fermemenumobile()
{
document.getElementById("iconeouvremenu").style.display="flex";
document.getElementById("iconefermemenu").style.display="none";
document.getElementById("menumobile").style.display="none";
}
// Affiche ou ferme le sousmenumobile
function affiche_sousmenumobile(num)
{
sousmenu=document.getElementById("sousmenumobile"+num);
sousimageferme=document.getElementById("sousmenumobileimageferme"+num);
sousimageouvert=document.getElementById("sousmenumobileimageouvert"+num);
if (sousmenu.style.display!="block")
{
// On doit remonter tout en haut...
// Le sous menu n'était pas affiché, on l'affiche
sousmenu.style.display="block";
sousimageouvert.style.display="inline";
sousimageferme.style.display="none";
}
else
{
sousmenu.style.display="none";
sousimageouvert.style.display="none";
sousimageferme.style.display="inline";
}
}
// Remonte la page doucement...
function scrollLent()
{
var scrollTop = document.body.scrollTop || document.documentElement.scrollTop;
scrollBy(0, -scrollTop);
}
// Ouvre et ferme la fenêtre de recherche mobile
function ouvrerecherchemobile()
{
scrollLent();
document.getElementById("iconeouvrerecherche").style.display="none";
document.getElementById("iconefermerecherche").style.display="flex";
document.getElementById("recherchemobile").style.display="block";
}
function fermerecherchemobile()
{
document.getElementById("iconeouvrerecherche").style.display="flex";
document.getElementById("iconefermerecherche").style.display="none";
document.getElementById("recherchemobile").style.display="none";
}
// Le spoiler "de base"
function showSpoiler(obj)
{
var inner = obj.parentNode.getElementsByTagName("div")[0];
if (inner.style.display == "none")
inner.style.display = "";
else
inner.style.display = "none";
}
// Le spoiler pour les Quizz
function showQuestion(idinner)
{
var inner = document.getElementById(idinner); // On affiche, ou pas, le contenu
if (inner.style.display == "none")
{
inner.style.display = "";
}
else
{
inner.style.display = "none";
}
}
// Le spoiler spécifique aux exercices
function showAll(idinner,idimage)
{
var inner = document.getElementById(idinner); // On affiche, ou pas, le contenu
var image = document.getElementById(idimage);
if (inner.style.display == "none")
{
inner.style.display = "";
image.setAttribute("src","https://www.bibmath.net/lib/bas.png");
}
else
{
inner.style.display = "none";
image.setAttribute("src","https://www.bibmath.net/lib/droite.png");
}
}
// Ouvre le menu forum en mode responsive
/* Toggle between adding and removing the "responsive" class to topnav when the user clicks on the icon */
function ouvremenuforum() {
var x = document.getElementById("mytopnav");
if (x.className === "topnav") {
x.className += " responsive";
} else {
x.className = "topnav";
}
}

View File

@@ -0,0 +1,22 @@
/* Fonction qui crée une requête de type XMLHttpRequest */
function getXMLHttpRequest() {
var xhr = null;
if (window.XMLHttpRequest || window.ActiveXObject) {
if (window.ActiveXObject) {
try {
xhr = new ActiveXObject("Msxml2.XMLHTTP");
} catch(e) {
xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
} else {
xhr = new XMLHttpRequest();
}
} else {
alert("Votre navigateur ne gère par l'ajout dans une feuille d'exercices");
return null;
}
return xhr;
}

View File

@@ -0,0 +1,59 @@
// Essaie de fixer la div de menu lors d'un scrolling...
var afixer = document.getElementById("menuetsousmenu");
var adecaler = document.getElementById("main");
var position=afixer.offsetTop;
var afixerpub = document.getElementById("pubdroite");
var positionpub= afixerpub.offsetTop;
console.log(positionpub);
function scrolled(){
var windowHeight = window.innerHeight,
currentScroll = document.body.scrollTop || document.documentElement.scrollTop;
if (currentScroll>=position)
{
afixer.className = "fixed";
adecaler.className = "decale";
}
else
{
afixer.className="";
adecaler.className="";
}
// Ne fixer la pub que si la taille de l'écran est suffisante....
console.log(windowHeight);
if ( (currentScroll>=positionpub-100) && (windowHeight>=800) )
{
afixerpub.className="fixedpub";
}
else
{
afixerpub.className="";
}
}
addEventListener("scroll", scrolled, false);
/*
<script>
var positionElementInPage = $('#menu').offset().top;
$( window ).resize(function() {
positionElementInPage = $('#menu').offset().top;
});
$(window).scroll(
function() {
if ($(window).scrollTop() > positionElementInPage) {
// fixed
$('#menu').addClass("fixedTop");
} else {
// unfixed
$('#menu').removeClass("fixedTop");
}
}
);
</script>*/

View File

@@ -43,3 +43,95 @@ rep(z, 3)
vector1 <- c(1, 2, 3)
vector2 <- c(4, 5, 6)
vector3 <- c(vector1[1:2], vector2, vector1[3:length(vector1)])
print("DS Félix MARQUET début (DS_Felix_MARQUET.R)")
# Exercice 1
print("Début exercice 1")
# 5/
print("Question 5:")
sum(dbinom(x=0,size=3600,prob=0.166)) # Ici je fais la loi binomial pour X=0, 3600 lancé et une probabilité de 1/6
# 6/
print("Question 6:")
i <- 0 # On défini i à 0 pour avoir une probabilité null au début
x <- 480 # On défini j à 480 car on veux x superieur a 480 sinon ça n'a pas de sense
while (i < 0.96) { # On boucle tant que la probabilité est inferieur a 96%
i <- sum(dbinom(x=480:x, size=3600, prob=0.166)) # On calcule la probabilité
x <- x + 1 # On augmente x de 1
}
print(x - 1)
print("Fin exercice 1")
# Exercice 2
print("Début exercice 2")
# Définition des fonction f(t), g(t) et h(t) dans [0 ; 2] (impossible de mettre dans if dans une function(t)
f <- function(t) {
(3 / 4 * t) * (2 - t) # On défini la fonction f
}
g <- function(t) {
1 / (sqrt(2 * 3.14 * (1 / 2)^2)) * exp(-(t - 1)^2 / 2 * (1 / 2)^2) # On défini la fonction g
}
h <- function(t) {
(1/2) + (t*0) # Ici t*0 car sinon le compilateur faire un erreur car une fonction en fonction t ne possède pas de t
}
# 3/
print("Question 3:")
maxXf <- 0
maxXf_t <- 0
maxXg <- 0
maxXg_t <- 0
maxXh <- 0
maxXh_t <- 0
t <- 0
while (t < 2) { # Tant que t < 2 on continue la boucle
Xf_t <- (3 / 4 * t) * (2 - t) # On calcul Xf(t)
Xg_t <- 1 / (sqrt(2 * 3.14 * (1 / 2)^2)) * exp(-(t - 1)^2 / 2 * (1 / 2)^2) # On calcul Xg(t)
Xh_t <- 1/2 # On calcul Xh(t)
if (Xf_t > maxXf) { # Si Xf(t) est superieur au Xf maximum trouvé jusqu'a présent on le remplace par Xf(t)
maxXf <- Xf_t
maxXf_t <- t
}
if (Xg_t > maxXg) { # Si Xg(t) est superieur au Xg maximum trouvé jusqu'a présent on le remplace par Xg(t)
maxXg <- Xg_t
maxXg_t <- t
}
if (Xh_t > maxXh) { # Si Xh(t) est superieur au Xh maximum trouvé jusqu'a présent on le remplace par Xh(t)
maxXh <- Xh_t
maxXh_t <- t
}
t <- t + 0.01 # On augmente t de 0.01 pour avoir des mesures précises
}
# On affiche les résultats obtenu
print("maxXf :")
print(maxXf)
print("maxXf_t :")
print(maxXf_t)
print("maxXg :")
print(maxXg)
print("maxXg_t :")
print(maxXg_t)
print("maxXh :")
print(maxXh)
print("maxXh_t :")
print(maxXh_t)
# 4/
print("Question 4:")
result_q4 <- integrate(f, lower = 0, upper = 2) # Calcul de l'intégrale de f entre 0 et 2
print(result_q4)
# 5/
print("Question 5:")
he <- function(t) {
t * (1/2) # On défini t*h(t) pour pouvoir calculer l'espérence de h(t)
}
result_q5 <- integrate(he, lower = 0, upper = 2) # On se place entre 0 et 2 car le reste vaut 0
print(result_q5)
# 6/
print("Question 6:")
f_entre_0.5_0.75 <- integrate(f, lower = 0.5, upper = 0.75) # Calcul de l'intégrale de f entre 0.5 (00h30) et 0.75 (00h45)
g_entre_0.5_0.75 <- integrate(g, lower = 0.5, upper = 0.75)
h_entre_0.5_0.75 <- integrate(h, lower = 0.5, upper = 0.75)
print("f entre 0.5 et 0.75 :")
print(f_entre_0.5_0.75)
print("g entre 0.5 et 0.75 :")
print(g_entre_0.5_0.75)
print("h entre 0.5 et 0.75 :")
print(h_entre_0.5_0.75)
print("Fin exercice 2")
print("DS Félix MARQUET fin (DS_Felix_MARQUET.R)")

View File

@@ -3,24 +3,24 @@
"path": "C:/Users/BreizhHardware/Nextcloud/Programation/R/TD/Exo3.R",
"project_path": "Exo3.R",
"type": "r_source",
"hash": "340809373",
"hash": "1696507348",
"contents": "",
"dirty": false,
"dirty": true,
"created": 1733479137294.0,
"source_on_save": false,
"relative_order": 3,
"properties": {
"source_window_id": "",
"Source": "Source",
"cursorPosition": "0,0",
"scrollLine": "0"
"cursorPosition": "38,8",
"scrollLine": "9"
},
"folds": "",
"lastKnownWriteTime": 1733479598,
"lastKnownWriteTime": 1733482451,
"encoding": "UTF-8",
"collab_server": "",
"source_window": "",
"last_content_update": 1733479598,
"last_content_update": 1734687486296,
"read_only": false,
"read_only_alternatives": []
}

View File

@@ -10,5 +10,30 @@ y3 <- runif(20, 0, 10)
# Extraire de y3
# le troisième élément
y33 <- y3[2]
y33 <- y3[3]
# tous les éléments sauf le troisième
y34 <- y3[-3]
# Comparer les commandes suivantes
matrix(y3, nrow = 2)
matrix(y3, byrow = TRUE)
# Construire une matrice A comportant quatre lignes et trois colonnes remplies par lignes
# successives avec les éléments du vecteur 1:12
A <- matrix(1:12, nrow = 4, byrow = TRUE)
# Construire une matrice B comportant quatre lignes et trois colonnes remplies par
# colonnes successives avec les éléments du vecteur 1:12
B <- matrix(1:12, nrow = 4, byrow = FALSE)
# Extraire lélément situé en deuxième ligne et troisième colonne de A
A[2, 3]
# Extraire la première colonne de A, puis la deuxième ligne de A.
A[, 1]
A[2, ]
# Construire une matrice C constituée des lignes 1 et 4 de A.
C <- A[c(1, 4), ]
print(A)
print(C)

View File

@@ -1,6 +1,6 @@
{
"source_window_id": "",
"Source": "Source",
"cursorPosition": "0,0",
"scrollLine": "0"
"cursorPosition": "38,8",
"scrollLine": "9"
}