• Aucun résultat trouvé

TD : Fonctions - Acquisition Approximation de fonction (pdf 18 Ko)

N/A
N/A
Protected

Academic year: 2022

Partager "TD : Fonctions - Acquisition Approximation de fonction (pdf 18 Ko)"

Copied!
5
0
0

Texte intégral

(1)

Etude d’un système d’acquisition de température

Le système réalise l’acquisition d’un lot de 10 mesures de température. Entre chaque mesure, il s’écoule un temps de 4 secondes.

A partir des mesures, on souhaite représenter l’évolution de la température en fonction du temps par une fonction affine : Température = A.Temps+B.

Le traitement pour déterminer les coefficients A et B est effectué si le lot de mesures est valide. Un lot est valide si chacun des écarts entre 2 températures sont compris entre 1°C et 10°C

Les valeurs de température sont comprises entre -30 et 200 °C.

Une fonction acquerirTemperature() effectue une acquisition de température toute les 4 secondes, voir librairie.

On définit que la première mesure s’effectue à t = 4secondes (t est le temps).

Principe pour effectuer une régression linaire et calculer les coefficients de la fonction affine

Soit un ensemble de N points de coordonnées x,y. On souhaite trouver la fonction affine y=A*x+B . La droite passe au plus près entre tous les points de telle manière que la somme des carrés des distances des points à la droite soit minimale. (La méthode est dite des moindres carrés).

Le coefficient de corrélation «cfCor» permet d’apprécier dans quelle mesure les points sont alignés.

Si tous les points sont alignés, ils se trouvent sur la droite. La corrélation est dite parfaite et «cfCor»

vaut alors 1.

On démontre que les coefficients de la fonction affine A et B valent :

N . P - (sommeX . sommeY) A = --- N . sommeX2 – (sommeX) ²

sommeY – A . sommeX B = --- N

On démontre que le coefficient de corrélation vaut : Num

(cfCor)² = --- avec Den

sommeX .sommeY Num = A . (P - --- )

N

(sommeY)² Den = sommeY2 . ---

N

Avec :

N : nombre de points de coordonné x,y sommeX : somme des x

sommeY : somme des y

sommeX2 : somme des carrés des x

sommeY2 : somme des carrés des y

P : somme des produits x*y

(2)

Exemple de régression linaire :

x y x*y

2 1,8 4 3,24 3,6

4 2 16 4 8

6 3,2 36 10,24 19,2 8 3,4 64 11,56 27,2 20 10,4 120 29,04 58

N vaut 4

sommeX vaut 20 sommeY vaut 10,4 sommeX2 vaut 120 sommeY2 vaut 29,04

P vaut 58

Après calcul : A vaut 0,3 B vaut 1,1

Les librairies de fonctions C++ disponibles

Fichier traitement.h

// Vérifie que l'écart entre 2 valeurs du tableau tab est compris // entre ECART_MAX et ECART_MIN. Retourne true si valide

// tab[] Tableau des valeurs à vérifier // nbre Nombre de valeurs du tableau

// ECART_MAX Ecart maximum entre tab[n+1] et tab[n]

// ECART_MIN Ecart minimum entre tab[n+1] et tab[n]

bool verifierValidite(const int tab[], int nbre,

const int ECART_MAX, const int ECART_MIN);

// Calcule le coefficient A de la fonction affine y=Ax+B // tabY[] Tableau des valeurs des ordonnées

// nbre Nombre de valeurs du tableau // valX0 Valeur de départ de l'abscisse

// pasX Ecart entre 2 valeurs consécutives de l'abscisse

float calculerCoefA(const int tabY[], int nbre, int valX0, int pasX);

// Calcule le coefficient B de la fonction affine y=Ax+B // tabY[] tableau des valeurs des ordonnées

// nbre Nombre de valeurs du tableau // valX0 Valeur de départ de l'abscisse

// pasX Ecart entre 2 valeurs consécutives de l'abscisse

float calculerCoefB(float valA, const int tabY[], int nbre, int valX0, int pasX);

// Calcule la somme des éléments du tableau int calculerSomme( const int tab[], int nbre);

Fichier aquisition.h

// Effectue une acquisition de température au bout de 4 secondes

// et retour la valeur. Les valeurs sont comprises entre -30 et 200 °C int acquerirTemperature(void);

1,4 1,8 2,2 2,6 3 3,4 3,8

2 4 6 8

Points x,y y=A*x+B

(3)

Complétez l’extrait du programme du système d’acquisition

#include ______________________

________________________________

//=== Déclarations des Constantes ===========================================

const int NBRE_MESURES=_________ ; // Nombre d'acquisitions

const int ECART_MAX= ___________ ; // Maxi d'un écart de température const int ECART_MIN=____________ ; // Mini d'un écart de température

//=== Déclarations des variables ============================================

int acquisition[______________]={0}; // Tableau des acquisition de température float coefA=0; // Coefficient A de la fonction affine float coefB=0; // Coefficient B de la fonction affine

//=== Faire l’acquisition du lot de mesures =================================

//=== Calcul des coefficients de la fonction affine =========================

// temperature=A.temps+B Pour que le calcul s'effectue,

// il faut que les valeurs de température du tableau acquisition soient valides

(4)

Complétez l’extrait du programme source de la librairie Traiter

// Calcule la somme des éléments du tableau

int calculerSomme(const int tab[], int nbre){

int somme =0; // Valeur de la somme

}

bool verifierValidite(const int tab[],int nbre,

const int ECART_MAX, const int ECART_MIN){

valide // Valeur de tab[] valide

int i // Variable de boucle

ecart // Ecart entre tab[n+1] et tab[n]

precedent // Valeur précédente de tab[]

}

(5)

//Pour obtenir sommeY, il est recommandé d’utiliser une fonction de la librairie

float calculerCoefA(const int tabY[], int nbre, int valX0, int pasX){

int numerateur=0; // Numérateur du calcul du coefficient A int denominateur=1; // Dénominateur du calcul du coefficient A

X // Valeur de l’abscisse

sommeX // Somme des valeurs des abscisses sommeY // Somme des valeurs des ordonnées

sommeX2 // Somme du carré des valeurs de l’abscisse sommeXY // Somme des valeurs des produits XY

// Calcule sommeX, sommeX2, sommeXY

// Calcule le numérateur et le dénominateur pour déterminer le coefficient A

return (static_cast<float>(numerateur)/static_cast<float>(denominateur));

}

Références

Documents relatifs

- Déterminer l'expression algébrique d'une fonction affine à partir de la donnée de deux nombres et de leurs images.. - Représenter graphiquement une

On cherche 0 sur la 1 re ligne du tableau et on lit son image sur la 2 de ligne.. Donne un encadrement de l’antécédent

Exercice 2 Une entreprise fabrique chaque mois x tonnes d’un certain produit, avec x appartenant à l’intervalle ]0 ; 6].. À l’aide de la

Toute utilisation commerciale ou impression sys- tématique est constitutive d’une infraction pénale.. Toute copie ou impression de ce fi- chier doit contenir la présente mention

COROLLAIRE 4: Soient tl, t2 deux nombres complexes dont les logarithmes sont linéairement indépendants sur Q.. On suppose

Instruction Y ( Touche F1 ) suivie du numéro de la fonction à utiliser (pour notre exemple Y1 ).. Valider avec

Puis instruction Y ( touche F1 ) suivie du numéro de la fonction à utiliser (pour notre exemple Y1 ).Valider avec EXE.. → Pour obtenir .Y : touche VARS puis instruction

[r]