Copie des transparents de la séance N° 1

publicité
Initiation au Calcul Scientifique avec Matlab
Cursus ingénieur - Première année
Année 2016-2017
Module 1A-2S de 14h (7×2h) (Nouveau 2016-2017)
Dans l’UE «Traitement de l’information S2» (15% de 7 ECTS)
“Initiation au Calcul Scientifique avec Matlab”
Évaluation: Examen final le 10 février 2017 (+ contrôle continu?)
Cours 0122 sur Libres Savoirs (http://paristech.institutoptique.fr/site.php?id=788)
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
1
2
Initiation au Calcul Scientifique avec Matlab
Le logiciel 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®
Lancez le maintenant!
Son nom vient de MATrix LABoratory.
1 seul double-clic!
(Le lancement prend 2 à 3min en salle d’info IOGS)
Création vers ~1978 par Cleve Moler, Prof. américain d’Analyse
Numérique et spécialiste mondial d’Algèbre Linéaire
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, ...
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
Prolongé en 2A:
Palaiseau: Calcul Scientifique
~1 million d’utilisateurs dans le monde
utilisé par ≳60% des stagiaires et jeunes ingénieurs ‘SupOptique’
Bordeaux: Méthodes numériques & MatLab
St-Étienne: Dans divers TD et Projets (Optique Fourier, etc...)
3
4
planche cours langage C / Julien Villemejane
Comparaison C / Python / Matlab
Comparaison des langages informatiques / Suite de Fibonacci
Python
C
Matlab
Libre
Langage
normalisé.
Compilateurs
libres ou
propriétaires
Propriétaire
Haut niveau
(proche de
l’utilisateur)
Langage
interprété
Moyen
niveau
(proche de la
machine)
Langage
compilé
Haut niveau
(proche de
l’utilisateur)
Langage
interprété
(compilation
partielle à la
première
exécution)
Calcul des 30 premiers termes de la suite de Fibonacci
Itération de 1 million de fois le calcul – sans affichage
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.
fibonacci_numbers = [0,1]
Inconvénients: ~2000€ par licence + ~700€ par “Boite à outils”
supplémentaires + 20% maintenance annuelle (licence CAMPUS IOGS!)
for i in range(2,MAX):
fibonacci_numbers.
append(fibonacci_numbers[i-1] +
fibonacci_numbers[i-2])
Python
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.
développement de très gros logiciels.
C
int fibonacci[MAX]; short compteur;
Fibonacci = zeros(1,MAX);
Fibonacci(1) = 0;
Fibonacci(2) = 1;
for i = 3:MAX
Fibonacci(i) = Fibonacci(i-1) +
Fibonacci(i-2);
end
...
fibonacci[0] = 0;
fibonacci[1] = 1;
for(compteur = 2; compteur < MAX; compteur++)
{
fibonacci[compteur] = fibonacci[compteur - 2]
+ fibonacci[compteur - 1];
}
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
7,57 s
0,27 s
0,13 s
±0,24 s
±0,01 s
±0,03 s
Pas adapté au
Paris-Saclay
5
2 modes d’utilisation de Matlab
● Travail interactif direct
MATLAB
Saint-Étienne
Bordeaux
→ À vos claviers!
● Utilisation de programmes (scripts...)
Matlab est un OUTIL (dont il faut connaître l’utilisation)
NE PAS hésiter à utiliser l’aide intégrée
⇔ grosse calculette graphique
(pas d’équivalent en C ;
possible en Python)
F1
→ Prendre des notes
pour réutilisation
aux prochaines
séances
7
8
Initiation à Matlab
Initiation à Matlab
Utiliser un script
Lancez la commande CopieCodeS1
puis ouvrez le script Code_seance1.m qui vient d’être copié dans le répertoire de travail
%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
t est un vecteur ligne
dont les 1000 éléments
augmentent linéairement
entre -50 et +50
%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
A est un vecteur ligne de
même taille que t
À vous de jouer !
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…)
S1 doit être calculé via le
produit élément par élément
entre 2 vecteurs lignes
%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’)
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)
subplot(2,1,2)
plot(t,S2,'r:')
xlabel('Temps')
ylabel('Signal’)
6. Modifier le script pour rendre les modulations d’amplitude et de fréquence linéairement
croissante
Initiation à Matlab
Initiation à Matlab
Tracer une courbe
Tracer une courbe
On crée deux vecteurs x et y
x = linspace(0,4,100);
y = cos(2*pi*x+1);
trace les points de coordonnées (x(i), y(i))
plot(x,y)
Essayez les 3 syntaxes suivantes plot(x,y,'r') , plot(x,y,'--') et plot(x,y,'o')
Couleur du trait
‘r’,‘b’,’g’,‘c’,’m’,‘y’,‘k’,‘w’
Type de trait
‘--’, ‘:’, ‘-.’, ‘-’
Type de
marqueur
‘.’, ‘o’, ‘x’, ‘*’,‘sq’
Comment tracer plusieurs courbes
Sur le même graphe
plot(x,y)
hold on
plot(x2,y2)
Sur la même figure
subplot(1,2,1)
plot(x,y)
subplot(1,2,2)
plot(x2,y2)
subplot(N,M,k)
M
ou
plot(x,y,x2,y2)
N
1
2
4
k
3
Sur différentes figures
figure ou figure(1)
plot(x,y)
figure ou figure(2)
plot(x2,y2)
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’)
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…
Téléchargement