Programmation sous Matlab

Slides:



Advertisements
Présentations similaires
La Méthode de Simplexe Standardisation
Advertisements

Premier programme en C :
La boucle for : init7.c et init71.c
Microsoft Excel LibreOffice Calc
Chapitre annexe. Récursivité
1 Tracer un graphique avec la calculatrice graphique Cliquez sur le modèle de votre calculatrice.
Portée des variables VBA & Excel
Algorithmes et structures de données Cours 10 Patrick Reuter
Calculs de complexité d'algorithmes
1 UMLV 1. Introduction 2. Hachage ouvert 3. Hachage fermé 4. Implémentation des fonctions Méthodes de hachage.
Cours n°2M2. IST-IE (S. Sidhom) UE 303 Promo. M2 IST-IE 2005/06 Conception dun système d'information multimédia Architecture trois-tiers : PHP/MySQL &
Exercices Algorithmiques
et évaluation des compétences
FLSI602 Génie Informatique et Réseaux
Calcul numérique (avec Maple)
Présentation Unité de codage
Introduction à la programmation (420-PK2-SL) cours 15 Gestion des applications Technologie de linformation (LEA.BW)
MATLAB Initiation à Matlab.
Algorithme et programmation
Equations différentielles ordinaires
Equations Non Linéaires
Cours 3 : bases de Matlab Niveau : Licence pétrochimie – deuxième semestre Université du 20 aout 55 – Skikda.
Problèmes aux limites Généralités
Les requêtes La Requête est une méthode pour afficher les enregistrements qui répondent à des conditions spécifiques. La requête est donc un filtre.
INTRODUCTION A MATLAB ENVIRONNEMENT MATLAB.
Page 1 Introduction à ATEasy 3.0 Page 2 Quest ce quATEasy 3.0? n Ensemble de développement très simple demploi n Conçu pour développer des bancs de test.
3. Systèmes L.I.T Systèmes LIT, introduction
Structures de données linéaires
Introduction à la programmation (420-PK2-SL) cours 12 Gestion des applications Technologie de linformation (LEA.BW)
OCaml - Les listes L3 MI.
Récursivité.
Résumé présention excel
44 Contrôle du déroulement du programme. 4-2 Objectifs A la fin de ce cours, vous serez capables de : Utiliser les constructions de prise de décision.
Chapitre IV LES STRUCTURES SIMPLES. Plan I- Les entrées II- Laffectation III- Les sorties.
4. Energie dinteraction, application à la reconnaissance de forme (texte, parole, radar …) Energie dun signal, analogie avec lélectrocinétique Par analogie.
Mise en situation... m g l = 1 m l2 = 1 Positions: Vitesses:
RESUMES Module II1 SOMMAIRE CYCLE 1 : Saisir – Afficher – Données
5. Echantillonnage Introduction
Outils de Programmation
Outils de Programmation
O UTILS DE P ROGRAMMATION Mr. BENDIB. I MAA, LAMIS Laboratory, Université de Tébessa.
Outils de Programmation
F Copyright © Oracle Corporation, Tous droits réservés. Créer des programmes avec Procedure Builder.
FICHIERS : Définition : Algorithme général:
CHAINE DE CARACTERES : Définition :
Algèbre linéaire (GCI –100)
IFT 6800 Atelier en Technologies d’information
LIFI-Java 2004 Séance du Jeudi 9 sept. Cours 1. La notion de langage Décrire une tâche à effectuer –programme Écrire à un haut niveau –facile pour lutilisateur.
Chapitre 9 Les sous-programmes.
COURS DE PROGRAMMATION ORIENTEE OBJET :
Initiation à la programmation en Python
MatLab: Notions de Programmation Applications en Finance
1 Notations Asymptotiques Et Complexité Notations asymptotiques : 0 et  Complexité des algorithmes Exemples de calcul de complexité.
- énergie bornée (tend vers 0 lorsque
Introduction.
Energie d’un signal, énergie d’interaction, analogie avec l’électrocinétique
Digitaliser des images
Rappels de statistiques descriptives
CSI2520  Cette fonction permet d’attribuer une valeur à une variable (set! nombre (+ 3 4)) (set! nombre (+ 1 nombre)) En SCHEME, les fonctions dont le.
Un survol du language C.
Matlab (Matrix Laboratory)
Scripts et fonctions Instructions de contrôle
Algorithmique Tableaux de données
Philippe Gandy - 8 septembre 2015 Basé sur les notes de cours de Daniel Morin et Roch Leclerc.
A la découverte d’Excel Certificat Informatique et Internet.
Algorithmique Boucles et Itérations
A.Aarabi ´. ´ Objectifs Faciliter la prise en main du logiciel MATLAB Présenter les fonctionnalités utiles au travail scientifique.
Matlab (Matrix Laboratory) Langage de programmation évolué. Traitement direct d’opérations matricielles, dont l’inversion et l’analyse d’opérateurs ou.
O UTILS DE P ROGRAMMATION P OUR LES M ATHÉMATIQUES Mr. BENDIB. I MAA, LAMIS Laboratory, Université Larbi Tébessi - Tébessa.
M. BENJELLOUN : 2005 Le but final est de programmer un jeu où l'ordinateur choisira un nombre aléatoire entre 0 et 100 que vous devez deviner.
Transcription de la présentation:

Programmation sous Matlab Invite, fichiers *.m, répertoire, aide Fenêtre de commande : >> invitation à entrer des :   - commandes, cad des instructions - noms de fonctions avec leurs arguments d’entrée et de sortie noms de programmes Les fonctions (y=f(x))et les programmes (suite de commandes) sont des fichiers avec une extension ***.m. Ne pas utiliser des caractères exotiques: accents, tirets, chiffres en première position, ... Créer ou éditer un fichier => cliquer File/New/M-file ou File/Open dans le coin supérieur gauche du menu principal, trouver/selectionner/charger le fichier en double-cliquant sur son nom et/ou commencer à l’éditer dans la fenêtre Editor. Si le chemin du fichier à executer n’est pas dans le Current Directory ni listé dans le MATLAB search path, le fichier ne sera pas reconnu par Matlab. Dans ce cas changer de répertoire courant en cliquant sur la petite icône :

Programmation sous Matlab Espace de travail, création de matrices, « ; » Matlab mémorise toutes les variables utilisées lors d’une session à moins que la commande clear ait été utilisée. Matlab manipule entre autres variables des matrices. Par exemple pour entrer : Taper les commandes suivantes et entrer: % les point-virgules entre les crochets mettent en colonne % le point virgule en fin de commande, annule l’affichage

Programmation sous Matlab Input, format d’affichage La commande input permet d’entrer des données via le clavier. exemple: L’affichage ne présente pas la valeur stockée en mémoire. Utiliser la commande format pour augmenter le nombre de décimales affichées ou changer la nature de la représentation: % décimal avec 14 digits % notation scientifique long % codage hexadécimal % retour au format court (format par défaut) La commande fprintf permet des affichages plus controlés...

Programmation sous Matlab Plot, décorations >> temp=[25, 12; 20, 9; 22, 10; 16, 9; 14, 5]; >> plot(temp) >> title('the highest/lowest temperature of these days') >> ylabel('degrees[°C]'), xlabel('day') >> days=[11, 12, 14, 16, 17]; >> plot(days, temp) >> plot(days,temp(:, 1), 'b*', days, temp(:, 2), 'ro') % décorations, ...

Programmation sous Matlab Fonctions à 1 entrée et 1sortie fonction R  R : fonction R2  R2 : function y = f1(x) y = 1 ./ (1 + 8 * x.^2); end >> f1(1) % valeur renvoyée pour x=1 ans = 0.1111 >> f1([0, 1]) % valeur renvoyée pour le % vecteur [0, 1] ans = 1 0.1111 Fichiers à écrire dans l’éditeur et à sauver function y = f49(x) y(1) = x(1)*x(1) + 4*x(2)*x(2) - 5; y(2) = 2*x(1)*x(1) - 2*x(1) - 3*x(2) - 2.5; y = y(:); end >> f49([2; 3]) % valeur renvoyée pour x=[2; 3] ans = 35.0000 -7.5000 >> f49(1) ??? Attempted to access x(2); index out of bounds because numel(x)=1. Error in ==> f49 at 2 y(1) = x(1)*x(1) + 4*x(2)*x(2) - 5;

Programmation sous Matlab Fonctions à entrées et sorties multiples function y = f49(x1, x2) y(1) = x1*x1 + 4*x2*x2 - 5; y(2) = 2*x1*x1 - 2*x1 - 3*x2 - 2.5; y = y(:); end >> f49(2, 3) % valeur renvoyée pour x1=2 % et x2=3 ans = 35.0000 -7.5000 function [y1, y2] = f49(x1, x2) y1= x1*x1 + 4*x2*x2 - 5; y2 = 2*x1*x1 - 2*x1 - 3*x2 - 2.5; end >> f49(2, 3) % valeur renvoyée pour x1=2 et x2=3 ans = 35.0000 >> [u, v] = f49(2, 3) u = 35 v = -7.5000

Programmation sous Matlab Fonctions « anonymes » fonction R  R : >> f1 = @(x) 1./(1 + 8*x.^2); % création de la «poignée de fonction» f1 (EN: handle) >> f1(1/sqrt(8)) ans = 0.5000 fonction R2  R2 : >> f49 = @(x1, x2) [x1*x1 + 4*x2*x2 - 5; 2*x1*x1 - 2*x1 - 3*x2 - 2.5]; >> f49(1, 2) ans = 12.0000 -8.5000 >> a = 1; b = 2; c = 3; % passage de paramétres >> parabole = @(x) a*x.^2 + b*x + c; >> ezplot(parabole, [-5, 5])

Programmation sous Matlab Polyval, indexation des matrices - Pour calculer rapidement les valeurs d’une fonction polynomiale, on la définit simplement par ses coefficients rangés par ordre décroissant: >> p = [1 0 -3 2]; % fonction polynomiale p(x) = 1x3 + 0x2 − 3x + 2 >> polyval (p, [-1 0 1 2 3 4 5]) ans = 4 2 0 4 20 54 112 Manipulation de matrices: >> A = [1 2 3; 4 5 6], B = [3; -2; 1] >> A = [A; 7 8 9] % [..]=concaténation A = 1 2 3 4 5 6 7 8 9 >> B = [B, [1, 0, -1]’] % le prime transpose (ligne => colonne) B = 3 1 -2 0 1 -1 >> A(3,3) = 0 A= 1 2 3 4 5 6 7 8 0 >> A(2:3, 1:2) % lignes 2 à 3 et colonne 1 à 2 ans = 4 5 7 8 >> A(2, :) % 2ieme ligne, toutes les colonnes ans = 4 5 6

Programmation sous Matlab Création de vecteurs, taille >> t = 0 : 0.1 : 2 % de zéro à 2 par pas de 0.1 t = [0.0 0.1 0.2 ... 1.9 2.0] >> t = 0:2 % par défaut le pas est +1 t = 0 1 2 >> t = 0 : -1 : -6 % pas négatif t = [0 -1 -2 -3 -4 -5 -6] >> D = zeros(4, 1); D(2) = 2; D(4) = 3 % prédéfinir un vecteur vertical nul D = 0 2 3 >> D(5) ??? Index exceeds matrix dimensions. >> D(0) = 1; ??? Index into matrix is negative or zero. >> D(1.2) ??? Subscript indices must either be real positive integers .. >> length(D) ans = 4 >> [M,N] = size(D) M = 4 N = 1

Programmation sous Matlab Opérations avec les matrices Marices

Programmation sous Matlab Génération rapide, transformations >> Z = zeros(2,3) Z= 0 0 0 0 0 0 >> E = ones(2, 2) E = 1 1 1 1 >> I = eye(2) % retourne la matrice identité 2X2 I = 1 0 0 1 >> B = fliplr(A) %flip left-right B = 3 2 -1 2 5 4 >> C = reshape(A, 3, 2) C = -1 5 4 3 2 2 >> D = flipud(A) %flip up-down D = 4 5 2 -1 2 3

Programmation sous Matlab Nombres aléatoires - rand(m,n) retourne une matrice mXn de nombres aléatoires uniformément distribués. randn(m,n) retourne une matrice mXn de nombres aléatoires normalement distribués. >> u_noise = rand(1000, 1) >> subplot(221), hist(u_noise, 20) >> u_noise1 = 2*u_noise-1 >> subplot(222), hist(u_noise1, 20) >> n_noise = randn(1000, 1) >> subplot(223), hist(n_noise, 20) >> n_noise1 = n_noise/2+1 >> subplot(224), hist(n_noise1, 20)

Programmation sous Matlab If, floor, switch, while, for % exemple 2 point = input('point= ') % note sur 100 switch floor(point/10) % floor(x): arrondi à l’entier < ou = à x case 9, grade = ’A’ case 8, grade = ’B’ case 7, grade = ’C’ case 6, grade = ’D’ otherwise grade = ’F’ end % exemple 1 t= input(t = ') if t > 0 sgnt = 1; else sgnt = -1; end % exemple 3 continuer=true; while continuer x=rand pause(0.2) if x>0.8, continuer=false; end end % exemple 4 point = [76, 85, 91, -1, 65, 87]; for n = 1:length(point) if point(n) >= 80, pf(n, :) = 'pass'; elseif point(n) >= 0, pf(n, :) = 'fail'; else % point(n)< 0 pf(n, :) = '????'; display('Quelque chose ne va pas ...') end pf x = 0.7140 x = 0.5762 x = 0.8668 Quelque chose ne va pas ... pf = fail pass ????

Programmation sous Matlab Fichiers *.mat et *.dat, load, save Matlab utilise 2 types de fichiers de données. Le premier est en format binaire (***.mat), peut contenir plusieurs variables, ne peut pas être utilisé par d’autres programmes. Le second est en format ASCII (***.dat), ne peut contenir qu’une variable mais peut être lu par d’autres programmes. >> save mesdata A B C % sauve les variables A, B et C dans le fichier ‘mesdata.mat’ Utiliser la commande load mesdata pour recharger les variables A, B et C. >> save fileB B –ascii % sauve les valeurs de B dans le fichier ‘fileB.dat’ Nom de fichier Nom des variables Nom de fichier Nom de la variable format

Programmation sous Matlab Exercice: quadrature de la fonction sinc Le développement de Taylor au 1ier ordre sans reste, constitue l’algorithme d’Euler pour intégrer une fonction connue g(x). Soit g(t)=sinc(t) la fonction à intégrer et G(t) son intégrale supposée inconnue. a) Montrer qu’on a l’approximation G(t+h) = G(t) + h*sinc(t). b) Donner l’expression de Gn = G(t+n*h) en fonction de Gn-1 = G(t+(n-1)h) sous une forme similaire à celle donnée en a). c) Représenter sinc(t) (fonction native dans Matlab) sur le domaine discret t  [-1, 1] avec 100 points (length(t) = 100) et en utilisant la fonction linspace. d) On donne la condition initiale: G(t=-1) = 0. Déduire de a) et b), un algorithme pour calculer G(t) sur [-1, 1]. Réaliser l’algorithme dans un programme. Représenter G(t) sur le même graphe que c). Si vous avez des difficultés, permutez les lignes de code suivantes dans le bon ordre et ajouter une boucle ‘for..end’: h = t(2)-t(1); plot(t, G, 'r') t = linspace(-1, 1, N); plot(t, sinc(t), '.') G(1) = 0; G(i) = G(i-1) + h*sinc(t(i-1)); hold on N=100;

Programmation sous Matlab Exercice: dérivée numérique Ecrire une fonction df = derive(f, x) qui calcule la dérivée numérique ‘df’ de la fonction ‘f’ sur le domaine ‘x’. La dérivée sera estimée en utilisant une différence finie centrée. L’incrément sera x = max(x)/1000. En effet, si x est fixé à une faible valeur arbitraire, par exemple 10-12 et que les valeurs de x sont grandes, disons de l’ordre de 1010, on a f(x) = f(x + 10-12) car l’ordinateur ne distingue pas 2 nombres de l’ordre de grandeur de x et ne différant que d’une quantité inférieure à une certaine valeur appelée « epsillon ». Cela rend impossible le calcul de la différence finie. La définition choisie pour x donnerait : x = 107 >> epsillon. Effectuer un test du genre: >> x = -10 : 0.01 : 10; >> f=@sinc; >> plot(x, f(x), x, derive(f, x)) >> grid on

Programmation sous Matlab Exercice: NaN, sum, prod Opérations sur les vecteurs Donner l’expression mathématique dont le calcul pourrait être réalisé avec les commandes : >> n=0:100; >> S=sum(2.^-n) Ecrire les commandes Matlab réalisant le calcul : Ecrire une fonction utilisant prod() et sum() pour calculer le produit des sommes de chaque ligne d’une matrice 3X3 à valeurs aléatoires. Représenter la fonction sinc Exécuter ce programme: x = [-100:100]*pi/25; y = sin(x)./x; plot(x, y) axis([-15,15, -0.4, 1.2]) Quelle différence avec celui-ci: x = [-4*pi : 0.1 : +4*pi]; axis([-15, 15, -0.4, 1.2]) Indice: essayer : >> sin(0)/0

Programmation sous Matlab Exercice: Taylor On veut faire une expérience numérique en comparant la fonction sinus avec son approximation de Taylor à l’ordre 11. Générer le vecteur x de longueur 100 s’étendant de 0 à 2 . Générer le vecteur y égal à la série de Taylor sans reste de sin(0 +x) = sin(0) + x/1! (cos(0)) + x2/2! (-sin(0)) + … + ... = y(x) jusqu’à l’ordre 11 (on utilisera la commande factorial). Représenter y et sin(x) sur le même graphique qui sera décoré.

Programmation sous Matlab Exercice: while, input, save, load, axis - En utilisant l’éditeur Matlab, écrire un programme qui permette à l’utilisateur d’entrer des données par paires « hauteur/poids » pour autant de personnes que nécessaire jusqu’à ce qu’il appuie sur la touche Entrée. Le programme sauvera l’ensemble des données sous la forme d’une matrice mX2 dans un fichier ***.dat et dont le nom sera saisi par l’utilisateur. Si vous n’avez aucune idée pour réaliser ce programme, vous pouvez permuter les lignes de code ci-dessous dans le bon ordre. Exécuter le programme et entrer les données ci-dessous (nom de fichier à utiliser ‘hp.dat’): Hauteur: 1.85 1.78 1.88 1.68 1.70 Poids: 82 80 78 65 64 % Entrée de données, sauvegarde clear k = 0; continuer = 1; while continuer end k = k + 1; X(1,k) = h; h = input('Entrer la hauteur ') x(2,k) = input('Entrer le poids ') if isempty(h), continuer = 0; break, end filename = input(‘Entrer le nom de fichier (.dat):', 's'); filename = [filename, '.dat']; save(filename, 'x', '/ascii') Ecrire un programme qui charge les données du fichier hp.dat  et les représente avec le symbôle ‘+’. Les axes couvriront le domaine [1.50, 2.00] et [60, 85] (utiliser la commande axis).