LSM 3.053 Informatique : TP n°4
Transcription
LSM 3.053 Informatique : TP n°4
LSM 3.053 Informatique : TP n°4 Exercice 1 : Régression linéaire sur des données provenant d'un fichier à accès séquentiel Contrairement à l'exercice 2, on accède au fichier de façon séquentielle. Les champs de données sont séparés par un séparateur de type "TAB". Copiez dans votre répertoire le fichier à accès séquentiel TP4_TAB.txt. Ouvrez le fichier avec un éditeur de texte et regardez sa structure : • Le fichier comprend 2 colonnes de nombres, séparées par le caractère TAB (code ASCII hexadécimal : 09). • La première ligne du fichier donne l'intitulé des 2 colonnes. • Le passage d'une ligne à la suivante se fait à l'aide des caractères "CARRIAGE RETURN" (ASCII : 0D) et "LINE FEED" (ASCII : 0A) • 1) Importez le fichier dans Excel avec la commande "Ouvrir". a) Tracez la courbe f(X) en fonction de X. b) Ajoutez au graphe la droite de régression linéaire aX+b s'ajustant le mieux aux données (Clic gauche sur les points de la série de données, puis clic droit "Ajoutez une courbe de tendance"). Affichez l'équation et le facteur d'accord R sur le graphe. 2) Réalisez un programme qui réalise les mêmes opérations : a) Réalisez une macro qui lise les données directement à partir du fichier TP4_TAB.txt, et les inscrive en colonnes A et B. b) Ajoutez une partie à la macro de façon à calculer par moindres carrés les coefficients a et b de la droite de régression linéaire à partir des données (Voir annexe). Pour réaliser ce calcul, il peut être utile d'introduire des variables intermédiaires correspondant à N*E(X), N*E(XY), N*E(X2). __________________________________________________________________________________ ANNEXE : REGRESSION LINEAIRE PAR LA METHODE DES MOINDRES CARRES Lorsque deux grandeurs X et Y mesurées conjointement ont une interdépendance linéaire, le tracé d’un graphe type ‘nuage de points’ Y = f(X) montre que les points expérimentaux se placent à proximité d’une droite (dite ‘de régression’) d’équation Y = aX +b . La méthode des moindres carrés consiste à calculer les coefficients a et b d’une telle droite en minimisant les écarts entre les valeurs théoriques et expérimentales. a et b vérifient les équations suivantes : E ( XY ) − E ( X ) * E (Y ) E ( X 2 ) − E ( X )2 1 N E ( X ) = ∑ xi avec N i =1 a= b = E (Y ) − a * E ( X ) E ( XY ) = 1 N ∑ xi yi et N i =1 E( X 2 ) = 1 N 2 ∑ xi N i =1 Exercice 2 : Calculs statistiques à partir d'un fichier à accès direct Cet exercice reprend une partie des calculs déja effectués au cours du TP_1+2. Contrairement à l'exercice 1, on accède au fichier de façon directe. Les champs de données ont une largeur (nombre de caractères) fixe. Copiez dans votre répertoire le fichier à accès direct "donnees.txt". Ouvrez le fichier avec un éditeur de texte ou, mieux un éditeur hexadecimal, et regardez sa structure : Le fichier comprend 6 colonnes de nombres, séparées par le caractère TAB (code ASCII hexadécimal : 09). Les 3 premières colonnes correspondent aux indices de Miller h, k et l d'un plan de diffraction, la 4ème colonne à l'intensité I_hkl diffractée par ces plans, la 5ème colonne à l'incertitude sig_I_hkl sur la mesure de I_hkl, la 6ème colonne contient un chiffre num numérotant l'expérience de diffraction. Chaque ligne comprend également une 7ème colonne (non affichable) contenant la chaîne fin_ligne de 2 caractères ("CARRIAGE RETURN" (0D) et "LINE FEED" (0A)) marquant la fin de la ligne. 1) Déclaration du type d'enregistrement : a) Regardez combien de caractères comprennent les variables h, k,l, I_hkl, sig_I_hkl et num (on compte également les espaces situés à gauche des chiffres et les points (séparateur décimal anglosaxon). La variable fin_ligne comprend 2 caractères. b) Déclarer le type "Enregistrement" formé des variables h, k,l, I_hkl, sig_I_hkl et num et fin_ligne (voir cours) elles-mêmes déclarées comme "chaines de caractères" de longueur la longueur que vous aurez déterminée au a). c) Vérifiez que la lecture du fichier à accès direct se fait correctement en réalisant une petite macro qui lise dans le fichier "donnees.txt" les 20 premières valeurs de I_hkl et les affiche à l'aide d'une boite de message. REMARQUE : Lecture de la variable var de type "Enregistrement" : get var Lecture du champ I_hkl de la variable var : get var.I_hkl 2) Calculs statistiques élémentaires a) Réalisez une macro qui lise dans le fichier "donnees.txt" les N =110 valeurs de h, k,l, I_hkl, sig_I_hkl et num et inscrive ces nombres dans la feuille de calcul active dans les colonnes A à F. b) Ajoutez à la macro une partie qui calcule, au fur et à mesure que les données sont lues, les variables : somme_I = Σ I_hkl somme_I2 = Σ (I_hkl)2 somme_sigI = Σ sigI_hkl somme_sigI2 = Σ (sigI_hkl)2 somme_IsigI : Σ I_hkl * sigI_hkl et utilisez ces variables pour calculer la moyenne : moy_I = 1/N * somme_I la variance : var_I = 1/(N-1) * (somme_I2 - 1/N*(somme_I)2 ) cf. cours l'écart-type : esd_I = (var_I)1/2 3) Exportation de données pour la réalisation d'un histogramme a) Rajoutez une partie au programme qui repère les valeurs mimimum min_I et maximum max_I de I_hkl lors de la lecture des 110 lignes de données. b) Calculez les 15 valeurs du tableau limite(num_classe) contenant les 15 limites inférieures des classes d'intensité de I_hkl, numérotées par l'indice num_classe (num_classe = 1, 15). c) A l'aide d'une nouvelle boucle sur les 110 lignes du fichier, calculez les 15 valeurs du tableau fréquence(num_classe) des fréquences partielles de I_hkl. d) Ecrivez dans le fichier "histo.txt" les variables num_classe, limite(num_classe) et frequence(num_classe) pour les 15 valeurs de num_classe. Les différents champs seront séparés par le caractère "TAB" et la ligne terminée par "CARRIAGE RETURN" et "LINE FEED".