Vous êtes sur la page 1sur 9

TP Matlab N°1 : Manipulations de Bases et Initiation.

Exercice 1 :

- Exécuter et commenter chaque ligne de commande :

>>a=1 >>Z = X/Y >>clear


>>b=2 >>Z = X*Y >>X=zeros(3,3)
>>c=a+b >>imag(Z) >>A=[1 1 1; 2 5 3; 3 2 1]
>>c=a*b >>real(Z) >>det(A)
>>c=a/b >>conj(Z) >>B=[1; 1 ; 1]
>>c=sin(a) >>whos >>X=inv(A)*B
>>c=cos(a) >>clear >>A*X
>>a=-5 >>X=[1 2 3 4 5] >>for v = 0.0:0.2:1.0 disp(v); end;
>>c=abs(a) >>Y=[1 1 1 1 1] >>a=0;for v = 1.0:-0.2:0.0 a=a+v; end;
>>a=2 >>size(X) >> A = ones(2,3);B = rand(3,4,5);
>>c=a^b >>size(Y) >> if isequal(size(A),size(B)) C = [A; B] else disp('A and B
>>Y = 2+3i >>Z=X+Y are not the same size.') C = []; end
>>X = 1+2i >>Z=X-Y >>n = 10;f = n;
>>Z = X+Y >>clear Y >> while n > 1 n = n-1; f = f*n;end ; disp(['n! = '
>>Y=[1; 1; 1; 1; 1] num2str(f)]);
>>Z=X*Y

Exercice 2 :

1- Ouvrir l’éditeur de programme Matlab et créer la fonction suivante dans le fichier


average.m :

function ave = average(x)

ave = sum(x(:))/numel(x);

end

2- Que fait cette fonction ?


3- Exécuter cette fonction sur la ligne de commande avec un vecteur de votre choix.

Exercice 4 :

1- Effacer tous l’espace de travail


Fermer toutes les fenêtres.
Effacer l’écran de ligne de commande.

clear all

close all

clc
format short g

2- Définir un vecteur t qui contient 51 valeurs équidistantes entre −25 et 25.

t=linspace(-25,25,51);

3- Calculer le vecteur x = t2.

x=t.^2 ;

4- Calculer le vecteur y qui contient t3 mais dans l’ordre inverse. Utiliser la fonction fliplr

y=t(end:-1:1).^3; % possibilité la plus simple

y=fliplr(t).^3; % autre possibilité

5- Représenter x et y en fonction de t. Pensez à utiliser subplot.

figure subplot(2,1,1)

plot(t,x) xlabel(’t’);

ylabel(’x’);

subplot(2,1,2)

plot(t,y)

xlabel(’t’);

ylabel(’y’);

6- Calculer la somme des éléments pairs de x en utilisant les fonctions sum, fix, rem, mod.

% l’une des trois lignes au choix


sum(x(fix(x/2)==x/2))
sum(x(rem(x,2)==0))
sum(x(mod(x,2)==0))

7- Calculer la somme des éléments positifs de y.

sum(y(y>0))

Exercice 5 :

- Utiliser Matlab pour faire les calculs suivants :

Solution :

1- x = 1 + 1/2
x=1+1/2

x= 1.5000

2- y1 = x 2 + 1

y1=x^2+1

y1= 3.2500

Exercice 6 :

- Ecrire un programme ou une fonction MATLAB qui permet de retourner la transposé A’


d’une matrice A (de taille 2 x 3) saisie par l’utilisateur. En calculant ses éléments.

Solution

function T=Traspose(A)

for i=1:3

for j=1:2

T(i,j)=A(j,i);

end

end

Exercice 7 :

- Ecrire une fonction MATLAB qui lit une matrice carré A et donne son inverse A-1 (s’il
existe) sans l’utilisation de la fonction inv.

Remarque : il est possible d’inverser une matrice si elle est carrée et son déterminant n’est pas
nul.

Solution

function I=inverse(A)

I=0; s=size(A)

if s(1)==s(2) d=det(A)

if d ~= 0 I=A^(-1)

else disp(’...La matrice ne peut pas etre inversée.!’)

end

else disp(’...La matrice ne peut pas etre inversée.!’)

end
Exercice 8 :

- Soit la matrice connu dite de Hilbert Hn définis par :

𝐻 = ; (i,j)  [0,n-1]2

- Ecrire une fonction Matlab qui initialise cette fonction selon une valeur de n.

Exercice 9 :

1- Écrire un programme qui demande une valeur de n et calcule n! sans l’utilisation de la


fonction factorial.
2- Si vous êtes en avance, améliorez votre code pour que le programme renvoie 1 pour 0! et
un message d’erreur si n est négatif ou non entier.
TP MATLAB N°2 : Graphisme 2D

Exercice 1 :

- Exécuter et commenter le script Matlab suivant :

x=linspace(0,pi,30); % crée un tableau de 30 composantes uniformément


% réparties entre 0 et pi
y=sin(x);
plot(x,y) %relie les points (xi,yi) par un trait continu noir
plot(x,y,'p-b') %relie les points (xi,yi) par un trait continu de couleur et
%matérialise les points avec un symbole
plot(x,y,'pb') %matérialise les points (xi,yi) avec un symbole de couleur
title('sin(x) sur l''intervalle [0,pi]')

plot(x,cos(x),x,sin(x),x,exp(-x)) % Matlab va automatiquement utiliser des


couleurs
%différentes pour chaque courbe
plot(x,cos(x),'o-r',x,sin(x),'x-b',x,exp(-x),'*-g') % pour spécifier le type
% de symbole et la couleur à utiliser pour chaque courbe
legend('cos(x)','sin(x)','exp(-x)') % pour rajouter une légende

Exercice 2 :

- Tracer sin(x) sur l'intervalle [0,2π], on commence par définir une série raisonnable de
valeurs équidistantes sur cet intervalle :

Exercice 3 :

- A l’aide d’un vecteur x sur l’intervalle [0,2pi], dessiner un cercle complet en se servant de
la géométrie triangulaire.

Solutions :

x = 0:2*pi/100:2*pi;
plot(cos(x),sin(x));

Exercice 4 :

- Représenter une loi gaussienne sous forme de barres.

Solution :

x=-pi:2*pi/100:pi;
bar(x,exp(-x.^2));

Exercice 5 :

- Représenter selon un histogramme la fonction randn qui permet de définir un ensemble


de valeurs aléatoires selon une distribution normale.
Exercice 6 :

1- Résoudre l’équation suivante sur la ligne de commande :

‐2x2+x+3=0

2- Tracer la courbe de cette fonction au voisinage de sa(ses) solution(s).


3- Tracer simultanément les courbes des fonctions f(x) = 2x2-3 et g(x)=x. sur l’intervalle [-
5,5].
4- Faite un zoom sur l’intersection des deux courbes que remarquez-vous ?
5- Comparer les résultats de 1 et 4.
TP Matlab N°3 : Les matrices et vecteurs.

Exercice 1 :

- Faite une recherche bibliographique sur les méthodes numériques matricielles suivantes :
1- Méthode de triangulation de GAUSS pour la résolution de système d’équations linéaires.
2- Méthode de Crammer pour la résolution de système d’équations linéaires
3- Méthode factorisation LU pour la factorisation de matrices carrées.

Solution :

Consulter le cours de 2éme année licence informatique du module Analyse


numérique.

Exercice 2 :

- Résoudre le système d’équation AX=B suivant par la méthode de Crammer sur la ligne de
commande en estimant le temps de calcul. Penser à utiliser les fonctions « tic » et « toc ».

Solution :
A=[4,8,12;3,8,13;2,9,18]
B=[4;5;11]

%Crammer
tic();
A1=A;
A2=A;
A3=A;
A1(:,1)=B;
A2(:,2)=B;
A3(:,3)=B;
x1=det(A1)/det(A);
x2=det(A2)/det(A);
x3=det(A3)/det(A);
X=[x1;x2;x3];
t=toc();
disp('Temps Crammer= ');
disp(t);
disp('X=');
disp(X);
A*X %pour valider le résultat.

Exercice 3 :

- Reprendre le même exercice 2 mais en programmant une fonction Matlab qui calcule la
solution X directement toujours par la méthode de Crammer.

Exercice 4 :
- Résoudre le système d’équation AX=B de l’exercice 2 par la méthode de triangulation de
Gauss sur la ligne de commande. en estimant le temps de calcul. Penser à utiliser les
fonctions « tic » et « toc ».
- En déduire le déterminant de A.

Solution :
tic();

G=[A B];
G(2,:)=G(2,:)-((3/4)*G(1,:));
G(3,:)=G(3,:)-((2/4)*G(1,:));
G(3,:)=G(3,:)-((5/2)*G(2,:));
x3=G(3,4)/G(3,3);
x2=(G(2,4)-(x3*G(2,3)))/G(2,2);
x1=(G(1,4)-(x2*G(1,2))-(x3*G(1,3)))/G(1,1);
X=[x1;x2;x3];
t=toc();
disp(t,'Temps Gauss= ');
disp(X,'X=');
A*X; // = B
detA=G(1,1)*G(2,2)*G(3,3); // = det(A)
det(A);

Exercice 5 :

- Reprendre le même exercice 4 mais en programmant une fonction Matlab qui calcule la
solution X directement toujours par la méthode de Gauss.

Exercice 6 :

- Factoriser la matrice A du système AX=B de l’exercice 2 en utilisant la méthode de


factorisation LU. Commencer à construire la matrice LU sur le papier en utilisant mla
matrice A puis effectuer les calculs sur la ligne de commande.

Exercice 7 :

- Reprendre le même exercice 6 mais en programmant une fonction Matlab qui calcule la
factorisation LU directement.

Solution :

function [X, Y, l, u]=factLU(a, b)


%UNTITLED Summary of this function goes here
% Detailed explanation goes here

s1=size(a);
%s2=size(b);
d=det(a);
if d~=0 & s1(1)==s1(2) & s1(1)>1
l=eye(s1(1),s1(1));
u=zeros(s1(1),s1(1));

for i=1:s1(1)-1
disp(a);
for j=i+1:s1(1)
l(j,i)=a(j,i)/a(i,i);

end;
for j=i:s1(1)
u(i,j)=a(i,j);

end ;
for j=i+1:s1(1)
for k=i+1:s1(1)
a(j,k)=a(j,k)-l(j,i)*u(i,k);
end;
end;
end;
u(s1(1),s1(1))=a(s1(1),s1(1));

disp('l=');disp(l);
disp('u=');disp(u);
disp('a=l*u=');disp(l*u);

end;

end

Vous aimerez peut-être aussi