1
“Initiation au Calcul Scientifique avec Matlab”
Séance n°1
PRÉSENTATION DE L’OUTIL LOGICIEL MATLAB®
PRISE EN MAIN PRATIQUE
Hervé Sauer & Charles Bourassin-Bouchet
Musawwadah Mukhtar, Mauro Persechino, Jonas Ogien, Maximilian Schemmer
Cursus ingénieur - Première année
Année 2016-2017
Initiation au Calcul Scientifique avec Matlab
Module 1A-2S de 14h (7×2h) (Nouveau 2016-2017)
Dans l’UE «Traitement de l’information S2» (15% de 7 ECTS)
Évaluation: Examen final le 10 février 2017 (+ contrôle continu?)
Cours 0122 sur Libres Savoirs (http://paristech.institutoptique.fr/site.php?id=788)
2
Initiation au Calcul Scientifique avec Matlab
OBJECTIF:
Formation à l’usage de l’informatique dans un contexte scientifique
(ingénierie, modélisation et simulation physique, ...)
Initiation au travers de l’outil logiciel Matlab®
PROGRAMME:
Les bases de Matlab (usage vectoriel, graphique 2D, ...)
Rudiments de programmation avec Matlab
Notions d’erreurs et incertitudes en calcul numérique
Moindres carrés (régressions), TFD et FFT, ...
Prolongé en 2A:
Palaiseau: Calcul Scientifique
Bordeaux: Méthodes numériques & MatLab
St-Étienne: Dans divers TD et Projets (Optique Fourier, etc...)
3
4
Le logiciel MATLAB
Son nom vient de MATrix LABoratory.
Création vers ~1978 par Cleve Moler, Prof. américain d’Analyse
Numérique et spécialiste mondial d’Algèbre Linéaire
Actuellement, Matlab 9 :
est un logiciel généraliste de calcul scientifique(alg.lin., FFT, équa.diff, optim., ... + visu.)
complété par ~80 boîtes à outils (25 à l’IOGS)
langage de programmation haut niveau (dont orientation objet complète)
fonctions puissantes de résolution de problèmes numériques dans de nombreux domaines
~1 million d’utilisateurs dans le monde
utilisé par
60% des stagiaires et jeunes ingénieurs ‘SupOptique’
Lancez le maintenant!
1 seul double-clic!
(Le lancement prend 2 à 3min en salle d’info IOGS)
Comparaison C / Python / Matlab
5
Avantages: Pas de besoin de gérer la mémoire (pointeurs,
malloc…), objets de haut niveau natifs (vecteurs, matrices, ...)
Adapté au développement rapide de (petits) programmes (e.g. pas
besoin déclaration du type (double, int, ...) des variables)
outils de prototypage pour la R&D.
Fonctions de très haut niveau intégrées (pas besoin de
bibliothèques)
Multiplateforme (code source exécuté sur tout ordinateur disposant
de Matlab)
Inconvénients: Un peu plus lent que le C. Pas adapté au
développement de très gros logiciels.
Python C Matlab
Libre Langage
normalisé.
Compilateurs
libres ou
propriétaires
Propriétaire
Haut niveau
(proche de
l’utilisateur)
Moyen
niveau
(proche de la
machine)
Haut niveau
(proche de
l’utilisateur)
Langage
interprété
Langage
compilé
Langage
interprété
(compilation
partielle à la
première
exécution)
Avantages: ~1000 ingénieurs pour support et développement
(Nouvelles versions 2 fois par an) ;
Nombreuses “boites à outil” spécialisées; Aide très complète.
Inconvénients: ~2000€ par licence + ~700€ par “Boite à outils”
supplémentaires + 20% maintenance annuelle
(licence CAMPUS IOGS!)
Paris-Saclay BordeauxSainttienne
planche cours langage C
/ Julien Villemejane
Exécuté sur Intel Core i5-4258U / 6Go RAM DDR3 1600 / Xubuntu 16.04
Exécuté avec Python 3.5 / MATLAB 2016b / Compilé avec GCC 5.4.0
Résultats
Moyenne de 10 exécutions
Python MATLAB C
int fibonacci[MAX]; short compteur;
fibonacci[0] = 0;
fibonacci[1] = 1;
for(compteur = 2; compteur < MAX; compteur++)
{fibonacci[compteur] = fibonacci[compteur - 2]
+ fibonacci[compteur - 1];
}
fibonacci_numbers = [0,1]
for i in range(2,MAX):
fibonacci_numbers.
append(fibonacci_numbers[i-1] +
fibonacci_numbers[i-2])
Fibonacci = zeros(1,MAX);
Fibonacci(1) = 0;
Fibonacci(2) = 1;
for i = 3:MAX
Fibonacci(i) = Fibonacci(i-1) + ...
Fibonacci(i-2);
end
7,57 s
±0,24 s
0,27 s
±0,01 s
0,13 s
±0,03 s
Comparaison des langages informatiques / Suite de Fibonacci
Calcul des 30 premiers termes de la suite de Fibonacci
Itération de 1 million de fois le calcul – sans affichage
2 modes d’utilisation de Matlab
7
Travail interactif direct Utilisation de programmes (scripts...)
grosse calculette graphique
(pas d’équivalent en C ;
possible en Python)
Matlab est un OUTIL (dont il faut connaître l’utilisation)
NE PAS hésiter à utiliser l’aide intégrée
À vos claviers!
8
F1
Prendre des notes
pour réutilisation
aux prochaines
séances
1. Que génère la commande linspace à la ligne 2 ?
2. Exécutez le script fourni et corrigez le (regardez la command window, Matlab vous aide…)
3. Quel est le rôle des «;» ?
4. Ajouter un titre sur les graphiques (Voir dans l’Aide)
5. Changer la couleur des courbes (avec l’interface graphique puis en modifiant le script)
6. Modifier le script pour rendre les modulations d’amplitude et de fréquence linéairement
croissante
À vous de jouer !
Initiation à Matlab
Lancez la commande CopieCodeS1
puis ouvrez le script Code_seance1.m qui vient d’être copié dans le répertoire de travail
Utiliserun script
%Echantillonnage temporel
t = linspace(-50,50,1000);
Omega_0 = 2*pi/4;%Pulsation de la porteuse
Omega_m = 2*pi/50;%Pulsation de la modulation
Phi_0 = pi;%Phase a t=0
%Modulation d'amplitude
A = 1 + 0.1*sin(Omega_m*t);%Enveloppe modulée
S1 = A.*sin(Omega_0*t + Phi_0);%Signal module en amplitude
%Modulation de fréquence
A_0 = 0.4;
Omega = Omega_0*(1+0.1*sin(Omega_m*t));%Fréquence modulée
S2 = A_0*sin(Omega.*t + Phi_0);%Signal modulé en fréquence
%Affichage des signaux
figure
subplot(2,1,1)
plot(t,S1,'b-')
xlabel('Temps')
ylabel('Signal’)
subplot(2,1,2)
plot(t,S2,'r:')
xlabel('Temps')
ylabel('Signal’)
t est un vecteur ligne
dont les 1000 éléments
augmentent linéairement
entre -50 et +50
Initiation à Matlab
A est un vecteur ligne de
même taille que t
S1 doit être calculé via le
produit élément par élément
entre 2 vecteurs lignes
Tracer une courbe
On crée deux vecteurs x et y
x = linspace(0,4,100);
y = cos(2*pi*x+1);
plot(x,y) trace les points de coordonnées (x(i), y(i))
Comment tracer plusieurs courbes
Sur le même graphe
plot(x,y)
hold on
plot(x2,y2)
ou
plot(x,y,x2,y2)
Sur la même figure
subplot(1,2,1)
plot(x,y)
subplot(1,2,2)
plot(x2,y2)
Sur différentes figures
figure ou figure(1)
plot(x,y)
figure ou figure(2)
plot(x2,y2)
subplot(N,M,k)
k
N
M
Initiation à Matlab
1 2 3
4
Tracer une courbe
Essayez les 3 syntaxes suivantes plot(x,y,'r') , plot(x,y,'--') et plot(x,y,'o')
r’,‘b’,’g’,‘c’,’m’,‘y’,‘k’,‘w‘--’, ‘:’, ‘-.’, ‘-’ .’, ‘o’, ‘x’, ‘*’,sq’
On peut combiner ces commandes plot(x,y,'rsq:')
Axis labels
plot(x,y)
xlabel(‘x axis’)
ylabel(‘y axis’)
title(‘Mon graphe’)
Légende
plot(x1,y1,’b--’,x2,y2,’ro-’)
legend(‘courbe1’, ‘courbe2’)
Couleur du trait Type de trait Type de
marqueur
Modifier un graphe via l’interface graphique:
Figure => View => Property Editor
ou enfoncer le bouton dans la barre des outils d'une figure graphique puis utiliser la souris....
Initiation à Matlab
A vous de jouer !
1. Faire un script qui trace la fonction sur l’intervalle [-2;3]
2. Faire un script qui trace une fonction gaussienne en échelle logarithmique
(trouver dans l’aide la fonction d’affichage appropriée)
3. Faire un script qui trace 3 cercles concentriques rouge, vert, bleu en pointillés
Courbes en échelle log
semilogx(x,y) (échelle log horizontale)
semilogy(x,y) (échelle log verticale)
loglog(x,y) (échelle log log)
Indice pour la question 3:
L’équation paramétrique d’un cercle est:
x = cos(t)
y = sin(t)
Pour t allant de 0 à 2πradians…
Initiation à Matlab
1 / 4 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !