TP 1 Méca Init Matlab

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 5

TP n°1 de Mécanique Matlab L2 EEA

TP n°1 Matlab : Applications en Mécanique

Prise en main de Matlab


Dans ce TP, nous mettons en place des pratiques de base qui vont nous servir dans les TP en contexte
mécanique. Ecrivez vos réponses sur une feuille qu’il faudra rendre, il est important que vous preniez le temps
de rédiger ces phrases.

Compétences techniques :
• Matlab comme une calculatrice.
• Tableaux : construction, et accès aux éléments—opérations basiques.
• la fonction plot
• boucles for

1. Prise en main de Matlab


Dans les questions qui suivent, tapez à l’invite de Matlab les lignes suivantes les unes après les autres (et dans
l’ordre...). Observez bien les résultats, essayez de les comprendre, et construisez ainsi une pratique intuitive de
l’environnement de programmation.

1.1. Calculatrice, variables scalaires, premiers tableaux

>> 5
>> 2+5
(1) >> a=10
>> a
>> disp(a)
(2) >> a+5
>> b=a+5
>> b=a+5;
>> c=[1,-2,7,0,10]
>> 2*c
>> d=[1;2;3;4;5]
>> size(a)
(3) >> size(c)
>> whos
(4) >> c(3)
>> d(1)+d(2)+d(3)+d(4)+d(5)
>> c(1)=0
(5) >> e=[0, 0; 0, 0]
>> pi
(6) >> cos(2*pi)
>> 2^3

Pour les lignes qui sont numérotées (1), (2), ... Décrire en une phrase ce que ces commandes font, exemple pour
(1) : ”la variable a est créée, et reçoit le scalaire 10, puis la valeur de a est affichée à l’écran” ; pour (2) : ”la
valeur contenue dans la variable a est additionnée à 5 et le résultat est affiché à l’écran”.

1.2. Messages d’erreur. Tapez l’une après l’autre les commandes suivantes, qui contiennent des
erreurs, lisez les messages d’erreur.

1 D. Vasic
TP n°1 de Mécanique Matlab L2 EEA

(0) >> toto


>> c(6)
(1) >> c+d
(2) >> f=[0, 0 ; 0]
>> size
Pour les commandes (1) et (2), expliquez en une phrase l’erreur. Par exemple pour (0) : ”il n’existe pas de
variable nommée toto, donc je ne peux pas afficher sa valeur à l’écran”.

1.3. Boucle for. Tapez l’une après l’autre les commandes suivantes à l’invite de Matlab :

(0) >> for ind=1:10; disp(ind); end


>> a=0; for ind=1:10; a=a+ind; disp(a); end
(1) >> a=1; for ind=1:2:10; a=a*ind; disp(a); end

Décrivez en une phrase ce que fait la commande (1). Par exemple pour (0) : ”pour la variable ind allant de 1 à 10
par pas de 1, on affiche à l’écran la valeur de cette variable”.

1.4. Nous allons maintenant voir les tableaux en plus de détails. Tapez les commandes suivantes :

(0) >> a=[0, 0; 0, 0]


>> a(2,2)=1
(1) >> a(1,1)=a(2,2)
(2) >> b=[a,a]
>> c=[0*a, a, 2*a, 3*a]
Expliquez en une phrase ce que font les commandes (1) et (2). Par exemple pour (0) : ”On construit la matrice a
avec deux colonnes et deux lignes remplies de zéros”.

1.5. Fonctions mathématiques : tapez ces commandes et observez le résultat.

>> sin(2.5)^2+cos(2.5)^2
>> exp(log(3))
>> sqrt(-1)
1.6. Quelques fonctions associées aux tableaux

(0) >> x=linspace(0,2*pi,10)


(1) >> y=0:0.5:10
>> max(x)
>> min(x)
>> sum(x)
(2) >> prod(x)
>> sin(x)
>> x=logspace(-2,2,5)
Expliquez ce que font les commandes (1) et (2). Par exemple pour (0) : ”On crée le vecteur x de taille une ligne
et 10 colonnes, qui contient 10 valeurs équiréparties entre 0 et 2π”.

1.7. Graphiques avec la fonction plot. Tapez les commandes suivantes :

(0) >> plot([0,1],[1,0],’k*-’)


>> xlabel(’x’); ylabel(’y’), title(’joli graph’)
>> xlim([-1,2]); ylim([-1,2])

2 D. Vasic
TP n°1 de Mécanique Matlab L2 EEA

(1) >> x=linspace(0,4*pi,30); plot(x,sin(x),’r*--’)


Expliquez en une phrase la commande (1). Par exemple pour (0) : ”On trace une ligne continue de couleur noire
entre les points de coordonnées (0,1) et (1,0), on visualise chacun des deux points avec une astérisque”.

2. Mesure de trajectoire sur une image


C’est quelque chose que nous allons faire dans tous les TP : une expérience physique a été capturée par une
photographie ou un film, et nous allons mesurer des quantités pour les analyser ensuite. Ici la chute d’un corps.
L’image est stockée sur le disque dans le fichier pomme.png.

2.1. Charger cette image sous la forme d’une matrice dans le workspace à l’aide la fonction imread :

>> a=imread('pomme.png');
Les données sous forme d’une matrice sont maintenant stockées dans la matrice a qui était l’argument de sortie
de imread. Ensuite j’affiche l’image à l’écran dans une fenêtre graphique à l’aide de la commande image qui
prend la matrice a comme argument d’entrée.

>> image(a)
Ensuite, j’utilise :
>> axis equal; axis tight; xlabel(’Pixels: axe des X’); ylabel(’Pixels: axe des Y’)
Pour régler l’affichage et les labels.

2.2. Avec l’outil d’étiquetage (‘Tools/Data Tips’), mesurer la position en pixels de la pomme à l’instant t =
0.4s : la position mesurée en pixels est (X = 328, Y = 528).
Les pixels sont comptés de gauche à droite selon l’horizontale, c’est l’axe des X de l’image, et de haut en bas
selon la verticale, c’est l’axe des Y de l’image. L’outil d’étiquetage indique également la valeur en RGB de la
couleur du pixel sur lequel vous avez cliqué ; il s’agit de la proportion de Red/Blue/Green.

Mesurer ainsi les positions successives de la pomme au cours de sa chute, et sauver sous la forme d’un tableau,
le temps tvec, la position xpix et la position ypix.

>> tvec=[……….];
>> xpix=[…….....];
>> ypix=[…….....];
Il est important de bien noter ces valeurs dans votre script et pas seulement de les stocker dans un tableau en
mémoire, car la commande clear risque de tout effacer.

3 D. Vasic
TP n°1 de Mécanique Matlab L2 EEA

2.3. Mesurer sur l’image les pixels xpix0 et ypix0 correspondant à la position initiale x=0 et y=0, c’est
l’origine du repère physique qui est représenté sur les axes sur l’image.

>> xpix0=[.];
>> ypix0=[.];

2.4. Maintenant on cherche à convertir les mesures qui sont en pixel, pour obtenir des données physiques
en mètres. Pour cela j’utilise l’étalon de longueur visible sur l’image : la taille du personnage qui est
connue : un mètre et soixante centimètres.

Mesure la taille en pixels de ce personnage sur l’image perspix. En déduire la taille d’un pixel grâce à une règle
de trois :

>> taillepix=1.6/perspix
Ce personnage est notre étalon de longueur.

2.5. Procéder à la conversion de xpix et ypix en x et y en mètre. Attention, il faut tenir compte de la position
initiale xpix0 et ypix0.

2.6. Tracer la courbe qui décrit la chute de la pomme. Superposer à ce graphique la courbe théorique en
rouge.

>> xphys=ypix*taillepix;
>> yphys=xpix*taillepix;
>> plot(tvec,xphys,’b*-’);
>> title(’chute de pomme’); xlabel(’t’); ylabel(’x’);
>> hold on
>> tt=linspace(0,0.5,100);
>> plot(tt,9.81*tt.^2/2,’r-’);

3. Utilisation de la boucle for pour le calcul de π


Pour tous les cercles, il existe un rapport constant entre le périmètre et le diamètre, et entre l’aire et le carré du
rayon. Cette constante a été nommée π.

Dans la figure ci-dessous, le disque a pour diamètre 9. L’aire du disque est légèrement supérieure à l’aire de
l’octogone irrégulier obtenu en rognant les coins du carré de côté 9. Cet octogone a pour aire 63, l’aire du disque
est alors évaluée à 64 soit l’aire d’un carré de côté 8. On en tire :

Cette approximation nous vient d’un ancien papyrus égyptien (cf. Wikipédia Papyrus Rhind). Les
développements limités nous offrent une méthode itérative pour calculer les décimales de π. Par exemple :

4 D. Vasic
TP n°1 de Mécanique Matlab L2 EEA

3.1. Nous allons utiliser ce développement limité pour calculer une approximation de π.
Sachant que arctan(1) = π/4, en vous aidant de la question 1.3, écrivez une boucle for qui calcule la valeur de pn
pour un entier n=40. :

>> pn=1; for k=1:n; pn=……………………… ; end


3.2. Représentation graphique : Tracer un graphique qui illustre comment notre approximation tend vers π.
Vous tracerez aussi l’évolution de l’erreur d’approximation lors des itérations.

>> pn=1; for k=1:n; p(k)=………………; end


>> kk=1:40;
>> plot(kk,p*4,'b.-',kk,kk*0+pi,'r')

5 D. Vasic

Vous aimerez peut-être aussi