INTRODUCTION. Introduction (2) Espace de travail. Fonctionnement. le Workspace (1) Mode interactif : Mode programme : Type de variables :



Documents pareils
Introduction à MATLAB R

MATLAB : COMMANDES DE BASE. Note : lorsqu applicable, l équivalent en langage C est indiqué entre les délimiteurs /* */.

Calcul Formel et Numérique, Partie I

Calcul Formel et Numérique, Partie I

3.2. Matlab/Simulink Généralités

MÉTHODES NUMERIQUES. Cours. Licence de Physique Année Universitaire : Licence Chimie, parcours Physique. Semestre S3

TP 0 : INTRODUCTION À MATLAB

TP 1 Introduction à Matlab Février 2009

URECA Initiation Matlab 2 Laurent Ott. Initiation Matlab 2

Cours 7 : Utilisation de modules sous python

Présentation du langage et premières fonctions

Une chaîne de caractères est toute suite de caractères placés entre guillemets.

Bases de programmation. Cours 5. Structurer les données

Gnuplot. Chapitre Lancer Gnuplot. 3.2 Options des graphes

Algorithmique et Programmation, IMA

Séance 0 : Linux + Octave : le compromis idéal


STAGE IREM 0- Premiers pas en Python

LES TYPES DE DONNÉES DU LANGAGE PASCAL

Aide - mémoire gnuplot 4.0

Cours d initiation à la programmation en C++ Johann Cuenin

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

Automatique des systèmes linéaires continus

Introduction à MATLAB Simulink Control toolbox

Rappels sur les suites - Algorithme

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples

Initiation à LabView : Les exemples d applications :


Note de cours. Introduction à Excel 2007

Introduction à R. Florence Yerly. Dept. de mathématiques, Université de Fribourg (CH) SP 2011

Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

MANUEL. Départements GEI & Mécanique. Yassine Ariba - Jérome Cadieux. Version 0.1

1. Structure d'un programme FORTRAN 95

Corrigé des TD 1 à 5

Projet Matlab/Octave : segmentation d'un ballon de couleur dans une image couleur et insertion d'un logo

Algorithmique et programmation : les bases (VBA) Corrigé

Python - introduction à la programmation et calcul scientifique

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Vision industrielle et télédétection - Détection d ellipses. Guillaume Martinez 17 décembre 2007

EXCEL TUTORIEL 2012/2013

EXCEL PERFECTIONNEMENT SERVICE INFORMATIQUE. Version /11/05

Introduction à la présentation graphique avec xmgrace

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

Programmation impérative

Le langage C. Séance n 4

Découverte du logiciel ordinateur TI-n spire / TI-n spire CAS

1 Démarrer L écran Isis La boite à outils Mode principal Mode gadget Mode graphique...

Licence Sciences et Technologies Examen janvier 2010

SHERLOCK 7. Version du 01/09/09 JAVASCRIPT 1.5

Projet Matlab : un logiciel de cryptage

Plan du cours Cours théoriques. 29 septembre 2014

Maple: premiers calculs et premières applications

Le Langage C Version 1.2 c 2002 Florence HENRY Observatoire de Paris Université de Versailles florence.henry@obspm.fr

Initiation à la programmation en Python

SPHINX Logiciel de dépouillement d enquêtes

Compléments de documentation Scilab : affichage de texte et formatage de nombres

SINE QUA NON. Découverte et Prise en main du logiciel Utilisation de bases

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application

Chap III : Les tableaux

Cours Informatique Master STEP

I. Polynômes de Tchebychev

Premiers pas avec Mathematica

Exercices - Fonctions de plusieurs variables : corrigé. Pour commencer

1 Recherche en table par balayage

Cours d Analyse. Fonctions de plusieurs variables

Rappels Entrées -Sorties

Chapitre 10 Arithmétique réelle

Access et Org.Base : mêmes objectifs? Description du thème : Création de grilles d écran pour une école de conduite.

Représentation des Nombres

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

TP: Représentation des signaux binaires. 1 Simulation d un message binaire - Codage en ligne

Optimisation, traitement d image et éclipse de Soleil

Mini_guide_Isis_v6.doc le 10/02/2005 Page 1/15

Notes introductives à Matlab

Traceur de courbes planes

Dans le chapitre 1, nous associions aux fichiers ouverts des descripteurs de fichiers par lesquels nous accédions aux fichiers.

Complément d information concernant la fiche de concordance

TP : Gestion d une image au format PGM

Parcours FOAD Formation EXCEL 2010

Problème 1 : applications du plan affine

INF 321 : mémento de la syntaxe de Java

Travaux pratiques. Compression en codage de Huffman Organisation d un projet de programmation

Représentation d un entier en base b

TD3: tableaux avancées, première classe et chaînes

Résolution d équations non linéaires

Les algorithmes de base du graphisme

I. Programmation I. 1 Ecrire un programme en Scilab traduisant l organigramme montré ci-après (on pourra utiliser les annexes):

Manuel d utilisation 26 juin Tâche à effectuer : écrire un algorithme 2

Annexe commune aux séries ES, L et S : boîtes et quantiles

L ALGORITHMIQUE. Algorithme

Programmation système I Les entrées/sorties

Baccalauréat S Antilles-Guyane 11 septembre 2014 Corrigé

Petit Guide de Survie en Scilab

Méthodes de quadrature. Polytech Paris-UPMC. - p. 1/48

Correction de l examen de la première session

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

Transcription:

INTRODUCTION Introduction (2) MATrix LABoratory Logiciel qui permet, de manière interactive : de faire des calculs matriciels ; d analyser les données ; de visualiser les résultats en 2D et 3D... Langage de programmation Toolboxes : ensemble de fonctions (fichiers.m) développées pour des domaines d applications spécifiques SIMULINK : interface graphique interactive de MATLAB Fonctionnement Mode interactif : Les instructions sont exécutées au fur et à mesure qu elles sont entrées par l utilisateur L espace de travail : le Workspace (1) Données Espace de travail Mode programme : MATLAB exécute, ligne par ligne, les instructions d un fichier.m Type de variables : unique : la matrice Historique 1

L espace de travail (2) Déclarer des variables : >> x =12.5 ; y = [1-5 2] ; définies et dimensionnées automatiquement au fur et à mesure de leur déclaration stockées dans l espace de travail S informer sur les variables : >> who Your variables are: x y >> whos Name Size Bytes Class x 1x1 8 double array y 1x4 32 double array Grand total is 5 elements using 4 bytes L espace de travail (3) Supprimer une (ou toutes les) variable(s) : >> clear x >> clear all Entrer une valeur au clavier : >> x = input( Valeur de x = ) Valeur de x =12 x = 12 Afficher un texte à l écran : >> disp( Ceci est un test ) Ceci est un test >> disp([ x vaut, num2str(x)]) x vaut 12 L espace de travail (4) L aide sous MATLAB >> helpdesk Gérer les accès aux répertoires / fichiers >> pathtool Editer les commandes : ou lettre + (ou double clic dans l historique) >> help nom de commande fournit de l aide sur l utilisation de la commande (et les rubriques connexes). >> lookfor mot-clé fournit la liste des fonctions contenant le mot-clé. 2

Plan 1. Vecteurs et matrices 2. La programmation MATLAB 3. Les graphiques 4. Les polynômes et l analyse numérique 5. L import/export de données 3

VECTEURS ET MATRICES Scalaires et opérations scalaires Vecteurs et opérations vectorielles Matrices et opérations matricielles Tableaux multidimensionnels Structures Les scalaires (1) Le scalaire : une matrice 1x1 >> s =2.5 ; >> size(s) 1 1 ou >> [i,j] = size(s) i = 1 j = 1 Les format d affichage format short.333 format long.33333333333 format short e 3.3333E-2 format long e 3.333333333334E-2 format rat 1/3 format bank.3 Les scalaires (2) Les complexes : >> x=1+j x = 1. + 1.i Les constantes prédéfinies : >> pi 3.1416 >> eps 2.224e-16 >> 1/ Warning : Divide by zero Inf >> / Warning : Divide by zero NaN Les scalaires (3) Les opérations arithmétiques >> 3 +7-2 * 9-8 divisions droite (/) et gauche (\) élévation à une puissance (^) Quelques fonctions fonctions trigo : cos acos cosh exponentielle : exp log népérien : log log décimal : log1 racine: sqrt x ou x : abs Re& Im : real imag arrondis : round ceil floor fix 4

Créer un vecteur (1) Créer un vecteur (2) Vecteur ligne >> v1= [1 2-5] ; ou >> v1(1) =1; v1(2) =2;v1(3)=-5; ou >> v1(1) = [1, 2,-5] ; Vecteur colonne >> v2=[-7;3]; Transposition : >> v3=v2 v3 = -7 3 Le vecteur : une matrice 1xn >> size(v1) 1 3 longueur d un vecteur >> long_v1 = length(v1) long_v1 = 3 Concaténation >> v4 =[v1 v3] v4 = 1 2-5 -7 3 Vecteur vide >> v =[ ] ; Créer un vecteur (3) Génération automatique composantes espacées d un pas constant syntaxe : v =debut : pas : fin >> v5=1:.5:3 v5= 1. 1.5 2. 2.5 3. v =linspace(1, 3, 5) par défaut (pas = 1) v =debut : fin espacement logarithmique de 1 debut à 1 fin syntaxe : v =logspace(debut, fin, N) Extraction >> v4(3) -5 >> v4(2:4) 2-5 -7 Extraction selon un critère >> i =find(v4 <) i = 3 4 >> v4(i) -5-7! Opérations vectorielles (1) Sous MATLAB, le premier indice d un tableau est 1 5

Opérations vectorielles (2) opérations élémentaires somme de vecteurs de même dimensions >> s = [2 1-1]+ [1-3 5] s = 3-2 4 ajout d un scalaire >> s + 2 5 6 produit de vecteurs de même dimensions >> p = [2 1-1] * [1-3 5] p = -6 produit élément par élément >> [2 1-1].* [1-3 5] 2-3 -5 Opérations vectorielles (3) >> v = [1 2-5 -7 3] somme des éléments d un vecteur >> sum(v) -6 produit des éléments d un vecteur >> prod(v) 21 moyenne : mean(v) médiane : median(v) écart-type : std(v) minimum : min(v) maximum : max(v) Créer une matrice (1) Saisie d une matrice lignes séparées par un point virgule >> M1=[1 3;2 5 1] M1 = 1 3 2 5 1 lignes séparées par un retour chariot >> M1=[1 3 2 5 1] M1 = 1 3 2 5 1 Dimensions >> size(m1) 2 3 Créer une matrice (2) par concaténation >> M2= [ 7 12]; >> M3 = [M1 ; M2] M3 = 1 3 2 5 1 7 12 par transformation >> reshape(m3, 1,9) 1 2 5 7 3 1 12 par extraction : triu tril matrices triangulaires supérieures et inférieures 6

Les matrices spéciales (1) Les matrices spéciales (2) Matrices identité, nulle et unité >> IDENTITE = eye( 2,3) IDENTITE = 1 1 ones (m,n) : matrice m x n dont tous les éléments valent 1 zeros(m,n) : matrice m x n dont tous les éléments valent Si m=n, spécifier une seule dimension >> UNITE = ones( 2) UNITE = 1 1 1 1 Matrices aléatoires Distribution normale (m =, σ = 1) : >> y = randn(1,1) ; Distribution uniforme (m = 1/2, σ = 1/12) : >> y = rand(1,1) ; 8 6 4 2 25 2 15 1 5-4 -3-2 -1 1 2 3 4.2.4.6.8 1 Opérations matricielles (1) Extraction d un élément : >> M3(3,2) >> M3(6) 7 7 d une ligne : >> M3(2, : ) 2 5 1 d une colonne : >> M3( :,2) 5 d une sous-matrice :?? Opérations matricielles (2) Comparaison >> M3 = [1 3 ; 2 5 1 ; 7 12] ; >> M4 = ones(3) ; >> M3 > M4 %find(m3 > 1) 1 1 1 1 1 Extension des instruction min, max... >> max(m3) %maximum par colonnes 2 7 12 >> max(m3(:)) %max(max(m3)) 12 7

Opérations matricielles (3) Produit classique Rappel : le produit de A(mxn) par B(pxq) n est possible que si n = p et le résultat est de dimension mxq Produit de Hadamard ou produit élément par élément de deux matrices de mêmes dimensions >> A = [1 2 ; 3 4] >> A * A >> A.* A 7 1 1 4 15 22 9 16 Opérations matricielles (4) Transformations >> M = [1 2 ; 3 4] >> fliplr(m) %retournement gauche/droite 2 1 4 3 >> flipud(m) %retournement haut/bas 3 4 1 2 >> rot9(m) %transposition + flipud 2 4 1 3 Opérations matricielles (5) Vecteurs et valeurs propres Fonctions diverses déterminant : >> det(m) norme >> norm(m) rang >> rank(m) inverse (et pseudo-inverse) >> inv(m) >> pinv(m) conditionnement >> cond(m) exponentielle expm : vecteurs et valeurs propres expm1 : approximation de Padé expm2 : série de Taylor >> M = [2 1 ; 1 2] ; Polynôme caractéristique : λi - M = >> poly(m) 1-4 3 Vecteurs et valeurs propres >> [vec val] = eig(m) vec =.771.771 -.771.771 val = 1 3 8

Les tableaux multidimensionnels Extension à n dimensions : vecteur (1D) : 1 indice matrice (2D) : 2 indices, ligne et colonne tableau tridimensionnel : 3 indices, ligne, colonne et page... exemple : >> M1 =ones(3) ; >> M2 =zeros(3) ; >> M3 =cat(3,m1,m2) ; M3( :, :, 1) = 1 1 1 1 1 1 1 1 1 M3( :, :, 2) = Les structures (1) Structure = regroupement de variables (champs) de type différents (chaînes, entiers...) dans une même variable. exemple : fichier des élèves d un établissement scolaire : nom notes adresse... nom=struct( ch1,{v1,v2...}, ch2,{v1,v2...}) >>eleve=struct( nom,{ paul, eve, jean }, {12,8,11}, note2,{14,15,3}) eleve = 1x3 struct array with fields : nom note1 note2 note1, Les structures (2) Liste des champs >> fieldnames(eleve) nom note1 note2 Extraction : on utilise l opérateur. >> eleve(2).nom eve Affectation directe >> eleve(4).nom = toto ; eleve = 1x4 struct array with fields :... Les structures (3) Manipulation indirecte nécessite de créer des vecteurs de données tampons >> liste1 = cat(1,eleve.note1) liste1 = 12 5 17 >> liste2 = cat(1,eleve.note2) ; >> moy=mean(mean([ liste1 liste2 ]) moy = 13.125 9

LA PROGRAMMATION MATLAB Les opérateurs logiques Les chaînes de caractères Les commandes structurées Les scripts et les fonctions La programmation Opérateurs logiques == égalité ~ = différence <( <=) inférieur (ou égal) >( >=) supérieur (ou égal) & ET logique (AND) ~ NON logique (NOT) OU logique (OR) xor OU exclusif (XOR) Exemple : >> a = [1 1] ; >> b = [1 1 1] ; >> a b 1 1 1 Chaînes de caractères (1) Généralités chaîne = vecteur ligne nombre de composantes = longueur de la chaîne Affectation >> ch = bonjour monsieur >> size(ch) 1 16 Conversions num2str : nombre chaîne mat2str : matrice chaîne str2num : chaîne nombre Chaînes de caractères (2) Ecriture de chaînes formatées syntaxe : text=sprintf( format1 format2..., data1, data2...) exemple : >> pi2 = pi^2 pi2 = 9.8696 >> text = sprintf( le carré de pi vaut %3.2f, pi2) text = le carré de pi vaut 9.87 Exécution d une chaîne : exemple : >> name = c:/bin/data >> eval([ load, name]); %load(name) 1

L instruction FOR (1) parcours d'un intervalle syntaxe : for variable =debut : fin instructions... instructions end exemple : créer le vecteur [1 2 2 2 2 4... 2 1 ] >> x=[ ] x = [ ] >> for n=:1 ; x =[x 2^n] ; end ou directement >> for n=:1; x(n +1) =2^n; end programmation matricielle?? L instruction FOR (2) On peut utiliser un incrément (pas) autre que 1 (valeur par défaut). syntaxe : for variable =debut:pas:fin Les bornes ne sont pas nécessairement des entiers. Le pas peut être négatif. Il est possible d imbriquer les boucles! Penser à l indentation!! bouton droit smart indent La boucle WHILE tant que... faire syntaxe : while expression instructions... instructions end exemple: calculer le plus petit entier n tel que 2 n soit supérieur à un réel a donné. >> max =22 ; n=1; >> while (2^n <max);n=n+1;end; >> n n = 11 Les ruptures de boucle Il est possible de provoquer une sortie prématurée d'une boucle de contrôle. break termine l exécution d une boucle. for variable1 = debut1 : fin1 instructions... for variable2 = debut2 : fin2 instructions... break instructions end instructions end return provoque un retour au programme appelant (ou au workspace). 11

L instruction IF (1) La séquence d instructions intérieure est exécutée si expression est vrai (=1 logique). syntaxe if expression instruction........ instruction end expression peut être simple ou composée. exemple if (a< & b<) disp( a et b négatifs ) end L instruction IF (2) Permet de choisir entre deux options. syntaxe if expression instructions 1 else instructions 2 end si expression n est pas vérifier alors les instructions 2 sont exécutées L instruction IF (3) Permet une sélection multiple. syntaxe if expression1 instructions 1 elseif expression2 instructions 2 elseif expression3 instructions 3........... else expressionn instructions N end L instruction SWITCH Permet une sélection multiple. syntaxe switch variable case valeur1 instructions 1 case valeur2 instructions 2.......... Otherwise instructions (erreur) end 12

Script Fichier (trouvenom.m par exemple) contenant une suite d instructions matlab. Exécuté séquentiellement dans l espace de travail, il accède aux variables (locales) qui s y trouvent. Pour écrire un script, utiliser l éditeur : >> edit %trouvenom.m %trouve les noms commençant par %lettre liste(find(liste(:,1) == lettre),:) >> lettre = d ; >> trouvenom didier Fonctions (1) Fichier (trouve.m par exemple) contenant une suite d instructions matlab. Commence par le mot réservé function. Reçoit un (ou plusieurs) paramètre(s) d entrée. Peut renvoyer un (ou plusieurs) paramètre(s) en sortie ou n en renvoyer aucun.! Nom du fichier = nom de la fonction Fonctions (2) function noms = trouve (liste,lettre) %retourne l ensemble des noms %commençant par lettre %IN liste, lettre %OUT noms noms=liste(find(liste(:,1) == lettre),:); >> clear all >> help trouve retourne la liste des noms >> nom = trouve(liste, c ) ; >> nom nom = catherine syntaxes : s = f(e1, e2, ) [s1, s2, ] = f(e1, e2, ) Fonctions (3) Evaluation d une fonction définie dans un fichier (f1.m) function y = f1(x) y = 2*x.^2-5*x +1 >> x = -1:.1:1; >> y =feval( f1, x) ; >> plot(x,y) 3 25 2 15 1 5-5 -1-5 5 1 13

Fonctions privées Fonctions (4) placées dans un répertoire private seuls les fichiers.m du répertoire parent peuvent y accéder REP1 M-files11 M-files12 M-files13 REP2 M-files21 M-files22 private Fonction privée Fonctions (5) Sous fonctions un fichier.m peut contenir plusieurs fonctions la première est la fonction primaire les suivantes sont des sous fonctions accessible à la fonction primaire et aux autres sous fonctions du fichier.m l aide ne peut accéder qu aux lignes de commentaires de la fonction primaire function foncprim(... ) %help fonc instructions x = sous_fonc(... ) instructions %%%%%%%%%%%%%%%%%%%% function x =sousfonc(... ) %help sous_fonc instructions Les variables : locales ou globales? Les variables des scripts sont locales à l espace de travail Les variables des fonctions sont locales à la fonction Une variable définie comme globale à l espace de travail (ou à un script) sera modifiable par toutes les fonctions l ayant déclarée globale Programmation (1) Forme générale d une application MATLAB SCRIPT Fonction 1 Fonction 2 Fonction 3 function y = f2(x) global A B C y = A*x.^2 + B*x + C >> global A B C >> A = 1 ; B = 3 ; C = -1 ; >> x = -1:.1:1; >> y = f2(x) ; Fonctions privées et/ou sous fonctions Fonction 21 Fonction 22 14

Programmation (2) Quelques recommandations Choisir des noms significatifs pour les variables et les fonctions Documenter les fonctions (help) Vérifier le nombre d arguments d entrée (nargin) et de sortie (nargout) des fonctions Eviter (autant que possible!) les boucles for et while Dimensionner les variables Programmation (3) Mesure de complexité algorithmique temps d exécution (en secondes) : >> A = rand(2); >> tic ; inv(a *A) ; toc elapsed_time = 12.41 Le profiler ( >> help profile ) >> profile report temps d exécution total (en secondes) >> profile report N N lignes demandant le plus de temps d exécution (en % du temps total) Les messages d erreur :??? Index exceeds matrix dimensions. Error in ==> C:\MATLAB\bin\test.m On line 2 ==> x(4) Programmation (4) Boucles et programmation matricielle >> A = rand(2) ; >> x = ; >> tic >> for i = 1 : 2 for j = 1 : 2 x = x + A(i,j) ; end end >> toc elapsed_time = 4.5 >> tic ; sum(a(:)) ; toc elapsed_time =.6 Programmation (5) Le débogage permet de corriger : les erreurs de programmation (nombre d arguments d entrée et de sortie, syntaxe des commandes...) les erreurs logiques (bugs) Utiliser : le point virgule ; le mode clavier : keyboard K>> le debugger >> help debug Debugging command... 15

LES GRAPHIQUES Les graphes en 2D Les graphes en 3D L exportation de graphes Tracer une courbes 2D (1) La commande plot(x,y,s) affiche le vecteur y en fonction du vecteur x avec les attributs (facultatifs) s. >> x =[-1:.1:1]; >> y1 =x.^2; >> plot(x, y1, r ) 1 9 8 7 6 5 4 3 2 1-1 -5 5 1 Tracer une courbes 2D (2) plot(y) permet de tracer directement le vecteur y en fonction de ses indices. plot(x,y1,s1,x,y2,s2,...) trace y1, y2... en fonction de x sur le même graphe avec les attributs s1, s2... >> y2 =.5*x.^2 - x + 1 ; >> plot(x, y1, r, x, y2, b ) Légender une courbe (1) Insérer un titre >> title( Tracé de x^2 et.5x^2-x+1 ) Légender l axe des abscisses >> xlabel( x : axe des abscisses) Légender l axe des ordonnées >> ylabel( y : axe des ordonnées ) 1 9 8 7 6 5 4 3 2 Insérer du texte >> gtext( x^2 ) >> gtext(.5x^2 - x + 1 ) Ajouter un quadrillage >> grid 1-1 -5 5 1 16

Légender une courbe (2) Manipuler un graphique (1) 1 9 8 Tracé de x 2 et.5x 2 -x+1 La commande zoom (2D seulement) permet de zoomer sur une partie de courbe avec le bouton gauche de la souris (le bouton droit annule le zoom) y : axe des ordonnées 7 6 5 4 3 x 2 La commande axis permet de changer les bornes de visualisation syntaxe: axis([xmin xmax ymin ymax]) 2 1.5x 2 - x + 1-1 -5 5 1 x : axe des absisses Dans les deux cas : focalisation sur une partie intéressante de la courbe Lecture précise du point d intersection entre deux courbes Manipuler un graphique (2) Manipulation interactive du graphique Tracer plusieurs courbes Sur un même graphique >> plot(x, y1, r ) >> hold on >> plot(x, y2, b ) Sur plusieurs graphiques différents >> subplot(211), plot(x, y1, r ) >> subplot(212), plot(x, y2, r ) (Nb écrans vertical, Nb écrans horizontal, N écran) 1 5-1 -5 5 1 8 6 4 2-1 -5 5 1 17

Tracer le graphe d une fonction La commande fplot( f,x) permet d afficher les variations de la fonction f1 (enregistrée dans le fichier f1.m) sur l intervalle x. >> x =:.1:4*pi; >> fplot ( sin, x) Histogrammes Tracés à l aide de la commande hist >> y = randn(1,1) ; >> hist (y, 5) >> title( distribution normale : répartition en 5 classes ) 5 45 distribution normale : répatition en 5 classes 4 1.8.6.4.2 -.2 -.4 -.6 35 3 25 2 15 1 5-3 -2-1 1 2 3 -.8-1 2 4 6 8 1 12 (par défaut N_classe = 1) Courbes paramétrées Exprimer x et y en fonction de t exemple : courbe de Lissajous >> t =:.1:2*pi; >> x = cos(3*t) ; >> y = sin(t) ; >> plot(x, y) Tracer une courbe 3D Syntaxe : plot3(x, y, z, s) >> t =:.1:25; >> x = exp(-.5*t).*cos(t) ; >> y = exp(-.5*t).*sin(t) ; >> z = t ; >> plot3(x, y,z) 1 x(t) = cos(3t) y(t) = sin(t).8.6 25.4 2.2 15 -.2 1 -.4 5 -.6 1 -.8-1 -1 -.5.5 1.5 -.5-1 -1 -.5.5 1 18

Tracer une surface (1) >> x = -pi/2 : pi/3 : pi/2 ; >> y = x ; >> [X,Y] = meshgrid(x,y) ; >> Z =sinc(x.^2 + Y.^2) ; >> mesh(x, Y, Z) Tracer une surface (2) >> colormap( cool ) >> surf (X, Y, Z) meshc meshz : idem avec contours surfc : avec contours surfl : avec jeu d ombres Orienter un graphe 3D Gérer un graphique rotate3d + bouton gauche ou view(azimut, élévation) exemple : >>subplot(121), surf(x,y,z), view(,) >>subplot(122), surf(x,y,z), view(,9) Gestion des fenêtres ouvrir une nouvelle fenêtre : figure fermer une fenêtre : close fermer toutes les fenêtres : close all Exportation créer un fichier postcript (qu il est possible d importer dans un traitement de texte). Son nom est alors fig.ps : print -deps fig sous Windows, utiliser edit copy figure puis coller (sous Word, Powerpoint...) 19

y LES POLYNOMES ET L ANALYSE NUMERIQUE Polynômes Opérations polynomiales Interpolation et régression Résolution d équations non linéaires Recherche de minima Vecteur ligne Les polynômes ensemble de données Vecteur ligne polynôme de degré n p(x) = a n x n + a n-1 x n-1 +... + a 1 x + a >> p =[a n a n-1... a 1 a ] ; >> length(p) n + 1 >> p1 =[1 2] ; %p1(x) = x 2 + 2 >> p2 =[2 4 ] ; %p2(x) = 2x 2 +4x! coefficients disposés suivant les puissances décroissantes de x Opérations polynomiales Multiplication de 2 polynômes >> p3 =conv(p1, p2) p3 = 2 4 4 8 p 3 (x) = 2x 4 + 4x 3 + 4x 2 + 8x Extension à n polynômes p 4 (x) = x(x + 2)(2x - 3) >> p4 =conv([1 ],conv([1 2],[2-3])) p4 = 2 1-6 Division de polynômes >> p1 = deconv(p3, p2) p1 = 1 2 Fonctions polynomiales L instruction polyval permet d évaluer les variations d une fonction polynomiale sur un intervalle x. >> f =[-1-5 1 ] ; %f(x)=- x 3-5x 2 +x >> x =-1 :1 ; >> y =polyval(f, x) ; >> plot(x,y) 5-5 -1 graphe de f(x) = -x 3-5x 2 + x -15-1 -5 5 1 x 2

Interpolation (1) Interpolation polynomiale au sens des moindres carrés : >> p=polyfit(x, y, ordre) ; Importance de l d interpolation : ordre du polynôme %fonction sigmoïde bruitée x = -5:.1:5 ; mes=1./(1+exp(-x))+.5*randn(1,length(x)) ; %interpolation d'ordre 1 p = polyfit(x, mes, 1) ; res = polyval(p,x) ; plot(x,mes,'b+',x, res,'r',x,mes - res, 'g') %interpolation d'ordre 5 p = polyfit(x, mes, 5) res = polyval(p,x) ; plot(x,mes,'b+',x, res,'r',x,mes -_res, 'g') Interpolation (2) Ordre 1 : erreur σ =.113 1.5 1.5 -.5-5 -4-3 -2-1 1 2 3 4 5 Ordre 5 : erreur σ =.23 1.5 1.5 -.5-5 -4-3 -2-1 1 2 3 4 5 Interpolation (3) Relier des points (ensemble de données) expérimentaux par une courbe formée de segments de droite ou de courbes polynomiales syntaxe : interp1(x,y,z, type ) type : linear interpolation linéaire spline interpolation par splines cubic interpolation cubique >> x =:1 ; >> y = cos(x) ; >> z = :.1:1 ; %pas de z < pas de x >> f =interp1(x,y,z) ; %par défaut : linear >> plot(x,y, bo,z,f, r+ ) De même : 1.8.6.4.2 -.2 -.4 -.6 -.8 Interpolation (4) interp2 interpolation dans l espace 3D interp3 interpn -1 2 4 6 8 1... 21

Régression linéaire Détermination du modèle linéaire y=f(x) reliant deux séries de mesure x et y. y i = ax i + b construction de la matrice Φ : >> phi =[x ones(length(x),1)] ; détermination de θ : >> teta =nnls(phi,y ) ; y1 x1 1 y 2 x2 1 a =.. b.... yn xn 1 y = Φθ T 1 T vecteur optimal θ = ( ΦΦ) Φy (au sens des moindres carrés) Résolution d équations non linéaires Détermination des racines d une fonction non linéaire par la méthode de Newton-Raphson enregistrer l expression littérale de la fonction dans un fichier (foncnl.m) utiliser la fonction fzero pour déterminer une racine de l équation au voisinage de x fzero( fonc_nl, x) utiliser la fonction fsolve pour déter-miner l ensemble des racines de l équation dans l intervalle (x d, x f ) fsolve( fonc_nl, xd : xf) function f_nl = foncnl =(x) %fonction non linéaire f_nl = cos(x).*exp(-.1*x).*sin(-2*x).+5 ; >> x =-3:3 ; >> plot(x,foncnl(x)), grid 1.6 1.4 1.2 1.8.6.4.2 -.2 -.4-3 -2-1 1 2 3 >> fzero( foncnl,.5).2826 >> fsolve( foncnl, : 2).2826.955 Recherche de minima (1) Fonctions à une variable : la valeur qui minimise localement une fonction (enregistrée dans fonc.m) dans l intervalle (x d, x f ) s obtient par : fminbnd( fonc, xd, xf) exemple : >> xmin= fminbnd( foncnl,,2) xmin =.5989 Fonctions à plusieurs variables : même principe mais l argument d appel est un vecteur : fminsearch( fonc, [x y]) 22

Recherche de minima (2) exemple : function f2 =fonc2(x) f2 = 2*X(1)^2 +X(2)^2 - X(1) +X(2) +1 >> minxy =fminsearch( fonc2,[ ]) minxy =.25 -.5 >> minf =fonc2(minxy) minf = 7.553 valeur minimale de la fonction 23

IMPORT/EXPORT DE DONNEES Fichiers.mat Fichiers externes Formats spécifiques Fichiers.mat (1) Sauvegarde et restitution des données de l espace de travail syntaxe : save nom var1 var2... varn >> x1 =ones(2) ; x2 =[4.5; 2.1; -6.2] ; >> save nom Sauvegarde de toutes les variables de l espace de travail dans le fichier nom.mat >> save nom x1 Sauvegarde de la variable x1 dans le fichier nom.mat >> clear all >> load nom >> who Your variables are : x1 Fichiers.mat (2) Si le nom du fichier de sauvegarde est généré par programme >> nomfich = nom1 >> save(nomfich, x1 ) >> clear x1 >> load(nomfich) >> who Your variables are : nomfich x1 Sauvegarde dans un fichier texte >> save nom2 x1 - ascii >> type nom2 1.e+ 1.e+ 1.e+ 1.e+ Fichiers externes (1) 1. Ouverture de fichiers FID =fopen(nomfich, attribut) nomfich : chaîne de caractères attribut : chaîne de caractères précisant le mode d ouverture du fichier : r ouverture en lecture seule w création en écriture seule a ouverture et placement en fin de fichier en écriture seule r+ ouverture pour mise à jour ou w+ création (lecture et écriture) a+ ouverture pour mise à jour et placement en fin de fichier (lecture et écriture) 24

Fichiers externes (2) Par défaut : ouverture des fichiers en binaire. Pour ouvrir un fichier texte ajouter la lettre t ( rt, wt...) 2. Lecture/ecriture : fread fwrite fscanf... 3. Fermeture fclose(fid) ferme le fichier ayant pour identificateur FID Fichiers textes Lecture et écriture formatées [data, compt] =fscanf(fid, format, taille) data : vecteur colonne représentant les valeurs lues compt : nombre d éléments lus (facultatif) format : format ( %d, %c, %3.2f...) et séparateurs ( \n \t...) compt=fprintf(fid, format, data) ligne=fgetl(fid) fclose( all ) ferme tous les fichiers ligne : chaîne de caractères contenant la ligne courante du fichier FID Lecture Fichiers binaires (1) [data, compt] =fread(fid,taille,type,saut) Ecriture Fichiers binaires (2) compt =fwrite(fid,data,type,saut) data : compt : FID : taille : matrice de stockage des données lues (réels double) nombre d éléments lus avec succès identificateur du fichier nombre d éléments à lire (facultatif) compt : FID : data : type : nombre d éléments lus avec succès identificateur du fichier matrice des données à écrire type (nombre d octets) de l élément à écrire type : type (nombre d octets) de l élément à lire ( char, int, long...) saut : nombre d octets à ignorer avant chaque écriture (facultatif) saut : nombre d octets à ignorer après chaque lecture (facultatif) intéressant pour l extraction de champs non contigus mais de longueur fixe 25

Fichiers binaires (3) Positionnement statut =fseek(fid,offset,origine) statut : offset : origine : statut =feof(fid) en cas de succès,-1 encas d échec nombre d octets au-delà de origine (positif ou négatif) position bof début de fichier cof position courante du pointeur eof fin de fichier statut : 1 si la fin du fichier est atteinte, autrement frewind(fid) positionne le pointeur sur le premier octet Formats spécifiques ASCII : fichiers textes manipulables par un éditeur de textes et contenant des données présentées sous formes de matrice load nom ASCII délimité (DLM =,,, ;...) data =dlmread(nom, DLM) dlmwrite(nom, data,) CSV : ASCII délimité per une virgule csvread(nom) csvwrite(nom, data) WK1 : fichiers Lotus 123 wk1read(nom) wk1write(nom, data) 26