• Aucun résultat trouvé

3. Moindres carrés linéaires

N/A
N/A
Protected

Academic year: 2022

Partager "3. Moindres carrés linéaires "

Copied!
7
0
0

Texte intégral

(1)

I.N.S.S.E.T. – Université de Picardie Licence Maths et SPI – 2ème année

Initiation à Matlab M. Marcoux

TP 10

Traitement de données

1. Introduction

Ce TP introduit la lecture et l’écriture de fichiers à partir de Matlab et la recherche de solutions linéaires approchées de résultats expérimentaux

Les points suivants seront abordés : Ø Fichiers textes et entrées-sorties Ø Ajustement linéaire de données Ø Régression orthogonale

2. Les fichiers textes : entrées et sorties formatées

Comme nous l’avons vu dans les précédents TP, un programme exécute des ordres de calcul à partir de données et fournit des résultats.

Cette partie permet de voir comment lire et écrire des données dans des fichiers externes.

Les données (resp. les résultats) proviennent généralement d’objets informatiques que l’on appelle fichiers d’entrée (resp. de sortie).

Par défaut, ces fichiers sont :

• L’entrée standard : en général le clavier

• La sortie standard : en général l’écran

• L’erreur standard : en général l’écran

A part ces trois fichiers qui sont ouverts automatiquement et jamais fermés (sauf par erreur

…), il est souvent nécessaire de rechercher ou stocker des informations sur le disque. Pour cela il faut lire des fichiers existant ou en écrire de nouveaux.

(2)

Matlab possède son propre format de fichiers permettant de sauver et de récupérer des variables numériques telles que les filtres ou des signaux générés dans l’environnement de travail.

Matlab propose aussi de nombreuses fonctions permettant de récupérer mais aussi d’écrire des fichiers de tous types : sons au format WAV ou AU, fichiers textes, feuilles de calcul Excel, vidéos au format AVI, ….

La liste des fonctions d’importation /exportation disponibles pour la version est donnée par :

>>help iofun (input/ouput functions)

De manière générale l’importation/exportation se fait soit par les commandes load et save, soit par les commandes fread et fwrite du langage C, suivant les fichiers :

• Les fichiers ayant l’extension ‘.mat’, correspondant au format Matlab, se chargent par la commande:

>>load nomfichier

Il se peut qu’un fichier Matlab contienne de nombreuses variables.

On vérifiera après chargement quelles ont été les variables importées dans l’espace de travail et leur taille par la commande whos.

Différentes variables se sauvent dans un fichier Matlab par la commande :

>> save nomfichier var1 var2 var3

• Les fichiers de type ASCII qui peuvent prendre n’importe quelle extension (‘.txt’ ou autre) car les données sont écrites sous forme de caractères.

C’est le format le plus universel.

Une option de la commande load permet de lire ce type de fichiers :

>> load nomfichier –ASCII

• Les autres fichiers, dont on connaît le format, c’est à dire la façon dont sont codés les nombres, sont lus comme en C par la fonction fread.

Elle s’utilise de la manière suivante :

>>fid=fopen(‘nomfichier’,’r’);

>>data=fread(fid,options);

>>fclose(fid);

(3)

Remarque :

L’échange de données entre Matlab et Excel se fait simplement par le biais de fichiers au format ASCII.

Il est alors commode d’utiliser l’option –TABS (à partir de la version 6) de la fonction save pour séparer chaque nombre par une tabulation, les données seront alors rangées sous forme de tableau. Il restera alors à remplacer le point séparateur par une virgule à l'aide de l’éditeur.

Exercice 1 :

Ø Réalisez un script "ecris.m" stockant à l’aide de la commande fwrite, dans un fichier spécifié par l’utilisateur, une chaîne de caractères entrée au clavier

Ø Vérifiez le contenu du fichier crée à l’aide d’un éditeur quelconque

Ø Ecrivez un second script "lis.m" lisant un fichier donné aide de la commande fread et affichant son contenu à l’écran.

Les fonctions fwrite et fread sont très pratiques mais permettent difficilement le formatage des données, c'est-à-dire la manière de les écrire dans un fichier texte.

Pour effectuer ces taches, Matlab a choisis d’emprunter (en les vectorisant) les routines standard de lecture et d’écriture formatée du langage C : fprintf et fscanf

Voici un exemple de tableau formaté :

x exp(x) exp(-x)

1.0000e-1 1.1051e+00 9.0484e-01

1.0000e-2 1.0100e+00 9.9005e-01

1.0000e-3 1.0010e+00 9.9900e-01

1.0000e-4 1.0001e+00 9.9990e-01

1.0000e-5 1.0000e+00 9.9999e-01

Exercice 2 :

Ø Ecrivez un script "angles.m" stockant dans un fichier "angles.txt", pour 10 valeurs d’un angle θ variant de 0 à 180°, l’angle, son sinus et son cosinus, sous la forme d’un tableau à 3 colonnes

Ø Ecrivez un script "produit.m" permettant de lire le fichier contenant le tableau, calculant le produit sinus*cosinus, affichant celui-ci à l’écran, et traçant la courbe correspondante.

(4)

3. Moindres carrés linéaires

Supposons que nous ayons réalisé m expériences (y1,...,ym), chacune d’elles fournissant n mesures (xi1,...,xin).

La théorie nous propose un modèle liant y aux xk, (k =1,...,n) sous la forme :

(

(aj),(xk)

)

f y = où les (aj)jp sont des coefficients inconnus.

Nous allons nous intéresser ici au cas où la fonction f est linéaire, c'est-à-dire :

( ) ∑ ( )

=

= p

j

k j j k

j x a g x

a f

1

) ( )

( ), (

Les (xk) et les gj étant connus on peut toujours se ramener au cas équivalent :

( )

=

= p

j j j k

j x a x

a f

1

) ( ), (

en remplaçant la donnée des (xk) par celle des gj((xk)).

Le problème est de calculer les coefficients inconnus aj qui définissent le modèle.

a) Méthode de base

Comme il n’existe pas de solution exacte à un tel problème dès que le nombre d’équations m dépasse le nombre p d’inconnues, il s’agit de minimiser un critère qui atteindrait un minimum de 0 en cas d’existence de solution exacte.

Le critère généralement utilisé, à la fois parce qu’il mène à des équations simples et qu’il se justifie en théorie des probabilités, s’écrit :

( ) [ ( ) ]

=

= N

i

i ik j

j f a x y

a S

1

) 2

( ), ( )

(

On cherche donc à minimiser une somme de carrés, c’est pourquoi cette méthode est connue sous le nom de "méthode des moindres carrés".

(5)

La résolution sous Matlab se déroule de manière très simple.

On écrit la matrice X ayant en ième colonne les coefficients (xik)k et le vecteur colonne Y correspondant des yi.

Le système s’écrit alors théoriquement : Y = X.A, où A est le vecteur contenant les inconnues.

La résolution au sens des moindres carrés est alors effectuée de la même manière qu’un système linéaire d’équations, à savoir, par la division matricielle gauche :

A=X\Y

Exercice 3 :

Suite à des manipulations expérimentales dans un laboratoire, on a mesuré les valeurs de la constante k d’une réaction chimique, à 5 températures différentes.

Les relevés donnent le tableau de résultats suivant:

Mesure 1 2 3 4 5

t, °C 0.00 25.0 39.9 60.0 80.0

105 k 3.59 30.4 91.8 340 1120

Ø Ecrivez ces valeurs expérimentales dans un fichier "data.txt" sous la forme de 2 colonnes

Ø Réalisez un script "trace.m" lisant le fichier "data.txt", et représentant graphiquement la fonction k = f(t)

Si on pose yi =ln(ki Ti) et xi =1Ti, où Ti est la température absolue en Kelvin, on sait théoriquement que dans ce cas la relation suivante est valide :

b x a y = +

Ø Complétez le script précédent pour calculer les valeurs yi et xi et représenter graphiquement la fonction y= f(x)

(6)

Ø Ecrivez un script "carres.m" calculant les coefficients a et b au sens des moindres carrés d’une série de points quelconque

Ø Ajoutez à ce script le tracé du graphique comportant les données sous forme de points et la courbe de l’approximation linéaire obtenue

Ø Insérez dans le script le calcul du critère S définit au a) permettant de connaître l’adéquation du modèle aux données

Ø Appliquez cette fonction aux points précédents

b) Régression linéaire

Dans le cas simple de l’exercice précédent consistant à déterminer une droite passant par des points expérimentaux (xi,yi), il existe plusieurs choix classiques possibles du critère qui conduisent à des solutions différentes.

On peut en effet recherche une droite sous deux formes : y=ax+b ou x=cy+d.

On voit facilement que les deux paramétrisations ne sont pas équivalentes et que dans le premier (resp. le second) cas la solution sera très dégradée si la droite est proche de la verticale (resp. l’horizontale).

On pourra toujours choisir à priori l’un ou l’autre cas en considérant quelques couples de points pris au hasard, il reste que la symétrie entre les xi et les yi n’est pas respectée.

On peut aussi régler le dilemme précédent en remplaçant le problème linéaire en (a,b) ou )

,

(c d par un problème non linéaire en deux autres variables (θ,δ) où θ est l’angle que fait la droite avec l’axe des x et δ la distance signée de la droite à l’origine.

L’équation d’une droite s’écrit alors :

0 cos

sin + + =

x θ y θ δ

On cherche alors à minimiser :

=

+ +

= n

i

i

i y

x S

1

)2

cos sin

( θ θ δ

(7)

Géométriquement, cela revient à chercher à rendre minimale la somme des carrés des distances orthogonales des points à la droite, plutôt que de considérer des distances en abscisses ou en ordonnées.

La résolution du système =0

θ

S et =0

δ

S revient alors à traiter : θ

θ

δ =xsin + ycos





= −

) var(

) var(

) , cov(

arctan 2 2 1

y x

y θ x

où la barre désigne la moyenne : x x n

n

i i) (

1

=

= ,

et cov et var sont respectivement la variance et la covariance définies par : )

)(

( ) ,

cov(x y = xx yy et var(x)=cov(x,x)

Ces grandeurs sont prédéfinies sous Matlab ; par les commandes mean et cov

Remarque :

Quelle que soit la régression utilisée, sa limitation principale est qu’elle suppose en fait que la distribution des erreurs sur les données est gaussienne, ce qui n’est pas toujours le cas.

Sur les figures qui suivent on voit un exemple de points expérimentaux visuellement alignés, mêlés à trois points aberrants et le résultat donné par la méthode précédente.

Il faut dans ce cas utiliser la méthode des moindres carrés médians consistant à choisir la plus petite médiane à partir d’un tirage aléatoire de points, ou filtrer les données.

Références

Documents relatifs

Comme arccos donne une valeur entre 0 et π, donc positive, elle donne la bonne valeur d’angle seulement dans le cas où l’image de z est située au dessus de l’axe des abscisses

estimateur, que les erreurs de prédiction ont les mêmes propriétés que celles de l’estimateur du gradient. Une solution simple du problème de poursuite d’une

[r]

Généralement, la variation des constantes à déterminer donnera lieu à une déformation et à un déplacement non parallèle aux ordonnées ; il est clair alors que la surface à

Toute uti- lisation commerciale ou impression systématique est constitutive d’une in- fraction pénale. Toute copie ou impression de ce fichier doit contenir la présente mention

Dans cet article nous nous intéressons à l’estimation par les moindres carrés et sous contraintes linéaires des paramètres d’un modèle d’association.. Nous

il est conseillé de faire des enregistrements périodiques pour éviter une éventuelle perte de données. 2) Appliquer la mise en forme utilisée dans le tableau ci-dessus. 8) Choisir

[r]