Vous êtes sur la page 1sur 5

Faculté des Sciences - Fès

Département de Physique
OML - SMP-S6
!
TD2
Exercice 1
Dessiner le graphe de la fonction f(x) =x/(1+x2) pour 5, 10, 30 et 100 valeurs
équidistantes de x comprises dans l'intervalle [−2, 2]
Exercice 2
1. En utilisant deux boucles, écrivez un script qui calcule la somme de deux
matrices A et B, de mêmes dimensions n × m.
2. Ecrire un script qui calcule le produit matriciel de deux matrices carrées A et
B de dimension n × n.
Exercice 3
Partir de x = 100 et remplacer x par sa racine carrée jusqu’à obtenir un nombre
strictement plus petit que 1.5.
Exercice 4
Sur un ensemble de notes entre 0 et 20
- calculer le nombre de notes supérieures ou égales à 10
- calculer le nombre de notes supérieures à la moyenne des notes
Exercice 5
Considérons le cas où on peut choisir un signal selon la valeur 1 ou 2 qu’on donne à
la variable signal, une sinusoïde pour signal=1, un sinus cardinal pour signal=2,
autrement ce sera le signal chirp (chirp(t,0,1,5) ) qui sera pris en considération.

(t=-2:0.01:1) ; f=0.5Hz

Exercice 6
Définir un vecteur x réel appartenant à l'intervalle [0, 3] et constitué de N =
101 éléments.
Construire le vecteur y défini par :
y=x3 cos(x+1)
On se propose de calculer numériquement la dérivée dy/dx, définie par :
!
Pr M.N. Kabbaj Matlab & Simulink !1
y = x3 cos (x + 1)

dy/dx
! 8 y(k+1)
> y(k)
k=1
<
! dydx(k) =
dx
y(k) y(k 1)
k=N
! > dx
: y(k+1) y(k 1)
2dx
k 6= 1 k 6= N
!
x ! x
où dx représente x l'incrément séparant deux éléments consécutifs de x.
Représenter endydxfonction de x, sur deux graphes superposés dans la même
fenêtre graphique
yprime: = dy
- Sur le graphe du hautdx : dydx,
y(x)
- Sur le graphe du bas : yprime=dy/dx, la dérivée obtenue par calcul à partir
de l'expression analytique de y(x).
Mettre sur les axes, toutes les indications nécessaires.
!
!
!

Pr M.N. Kabbaj Matlab & Simulink !2


TD2 : Solution
Exercice 1
clear all
N=[5 10 30 100];
for i=1:4
x=linspace(-2,2,N(i));
f=x./(1+x.^2);
subplot(4,1,i)
plot(x,f)
xlabel('x')
ylabel('f(x)')
grid
title(['f(x) =x/(1+x2) pour N=' num2str(N(i))])
end
!
Exercice 2
1. script qui calcule la somme de deux matrices A et B de mêmes dimensions n × m
for i = 1:n
for j = 1:m
C(i,j) = A(i,j) + B(i,j);
end
end
2. script qui calcule le produit matriciel de deux matrices carrées A et B de dimension n × n
for i = 1:n
for j = 1:n
x=0
for k = 1:n
x = x + A(i,k)*B(k,j);
end
C(i,j) = x
end
end

Pr M.N. Kabbaj Matlab & Simulink !3


Exercice 3
clear all
x=100;
while (x >= 1.5)
x=sqrt(x);
end
disp(x)
!
Exercice 4
clear all
NOTE = input(‘Entrer le vecteur de nombres :’,’s’);
NOTE = str2num(NOTE);
TAILLE = length(NOTE);
%calculer la somme et la moyenne des notes
SOM = 0 ;
for i=1:TAILLE
SOM = SOM+NOTE(i) ;
end
MOY = SOM/TAILLE ;
%initialiser les compteurs de notes à 0
C10 = 0 ;
CMOY = 0 ;
for i=1 :TAILLE
if NOTE(i)>=10 %comptabiliser la note si elle est supérieure à 10
C10 = C10+1 ;
end
if NOTE(i)>=MOY %comptabiliser la note si elle est supérieure à la moyenne des notes
CMOY = CMOY+1;
end
end
disp([‘Nombre de notes supérieures à 10 : ‘,num2str(C10)]) ;
disp([‘Nombre de notes supérieures à la moyenne ‘,num2str(MOY),’ : ‘, num2str(CMOY)]) ;
Pr M.N. Kabbaj Matlab & Simulink !4
Exercice 5
clear all
t=-2:0.01:1;
f=0.5;
signal=input(‘choix du signal : ‘);
switch signal
case 1
signal=sin(2*pi*f*t)
case 2
signal=sinc(2*pi*f*t);
otherwise
signal=chirp(t,0,1,5);
end
plot(signal)
!
Exercice 6
clear all
N=101;
x=linspace(0,3,N);
y=x.^3.*cos(x+1);

dydx=[];
for k=1:N
if (k==1)
d=(y(k+1)-y(k))/(x(k+1)-x(k));
elseif (k~=N)
d=(y(k+1)-y(k-1))/(x(k+1)-x(k-1));
elseif (k==N)
d=(y(k)-y(k-1))/(x(k)-x(k-1));
end

dydx=[dydx d];
end
%Dérivée à partir de l'expression analytique de y(x)
yprime=3*(x.^2.*cos(x+1))-x.^3.*sin(x+1);
%Affichage
subplot(2,1,1)
plot(x,dydx)
ylabel('dy/dx')
title('Calcul numéique de la dérivée')
grid
subplot(2,1,2)
plot(x,yprime)
ylabel('yprime')
xlabel('x')
title('Calcul analytique de la dérivée')
grid

Pr M.N. Kabbaj Matlab & Simulink !5

Vous aimerez peut-être aussi