Vous êtes sur la page 1sur 23

er

Université HASSAN 1
Faculté des sciences et techniques SETTAT
Département chimie appliquée
Filière: procédés et ingénierie chimique

Rapport de TP :
Analyse numérique
Applications sous Matlab

Sous l’encadrement :
Mr.K.FAKHAR
Réaliser par :
 ABAGHOUGH Brahim
 MOKHLISS Yassine
 SOUKAH Brahim
2
Table des matières

Introduction
1- Qu’est-ce que MATLAB ? ........................................................................................................................................... 4
2- Le système MATLAB ..................................................................................................................................................... 5

Première partie : Travaux pratique 1


I. MANIPULONS DES MATRICES ET DES VECTEURS .................................................................................. 6
1. LES VECTEURS............................................................................................................................................................... 6
2. LES MATRICES ............................................................................................................................................................... 7
3. RESOLUTION DES SYSTEMES LINEAIRES ............................................................................................................. 9
4. CONCLUSION .............................................................................................................................................................. 12

Deuxième partie : Travaux pratique 2

I. GRAPHISME ..................................................................................................................................................................... 14
1. TRACES DE COURBES BASIQUES 2D ................................................................................................................... 14
2. PLUSIEURS DONNEES SUR UN MEME GRAPHE ............................................................................................ 14
3. OPTIONS DE GRAPHE ............................................................................................................................................. 15
4. SURFACE 3D ................................................................................................................................................................ 17
Troisième partie : Travaux pratique 3

I. ALGORITHMES ............................................................................................................................................................... 18
1. ALGORITHMES DE LA RESOLUTION D’EQUATIONS LINEAIRES ............................................................... 18
2. ALGORITHMES DE LA RESOLUTION D’EQUATIONS NON LINEAIRES .................................................... 19
II. APPLICATION ................................................................................................................................................................. 21
1. ALGORITHME D’EXERCICE DE THERMODYNAMIQUE ................................................................................. 21
2. ALGORITHME DE RESOLUTION D’EQUATIONS DIFFERENTIELLE ............................................................ 22

3
Introduction
1- Qu’est-ce que MATLAB ?

MATLAB est un langage hautes performances pour le calcul scientifique et technique.


Il intègre la possibilité de calculs, de visualisation et de programmation dans un
environnement très simple d’emploi. Les résultats sont exprimés sous une forme
mathématique standard. L’utilisation typique est

- Calcul scientifique

- Développement d’algorithmes

- Acquisition de données

- Modélisation et simulation
- Analyse de données, exploration et visualisation
- Graphisme scientifique

- Développement d’applications, interface graphique (gui)


MATLAB est un système interactif dont la brique de base est un tableau dont la taille
n’est pas nécessairement connue. Ceci permet de résoudre des problèmes, en particulier ceux
qui ont une formulation matricielle, en un minimum de temps (contrairement aux langages de
bas niveau comme le C ou le fortran). Le nom de MATLAB est un résumé de ”Matrix
Laboratory”. MATLAB a été à l’origine développé pour avoir un accès simple et rapide aux
projets EISPACK et LINPACK. Aujourd’hui, MATLAB intègre les librairies LAPACK et BLAS,
incorporant ainsi les dernières techniques pour le calcul matriciel.
Dans l’enseignement universitaire, MATLAB s’est imposé comme un standard pour
l’apprentissage de l’algorithmique scientifique. Dans l’industrie, il est l’outil de choix pour une
productivité accrue en recherche et développement.

MATLAB peut aussi être enrichi à l’aide de Toolbox (boites à outils) pour des problèmes
spécifiques.

2- Le système MATLAB

Le système MATLAB consiste en cinq parties majeures :


- Environnement de développement. C’est un ensemble d’outils pour l’utilisation des
fonctions MATLAB et des fichiers. La plupart de ces outils sont des interfaces
4
graphiques. Ils incluent le bureau MATLAB et la fenêtre de commande, un historique
des commandes, un éditeur et un débuggeur, et un navigateur pour voir l’aide,
l’espace de travail (workspace), les fichiers, et le chemin.
- La librairie de fonctions MATLAB C’est une grande collection d’algorithmes de calcul
allant de fonctions élémentaires comme les sommes, les sinus et cosinus et
l’arithmétique complexe jusqu’aux fonctions plus sophistiquées comme l’inverse de
matrices, le calcul de valeurs propres, les fonctions de Bessel et la transformée de
Fourier.
- Le langage MATLAB C’est un langage de haut niveau sous forme matrice/vecteur. Il
comporte des structures de contrôles, des fonctions, des structures de données, des
fonctions d’entrées-sorties et une programmation orientée objet. Il permet le
développement de petites applications avec un code simple ou de grandes applications
industrielles.
- Graphisme MATLAB possède un grand choix de fonctions pour faire afficher les
vecteurs et les matrices comme graphes. Il permet aussi de compléter les graphiques
avec des légendes. Il inclue des fonctions de visualisation 2D et 3D de haut niveau. Il
est même possible de fabriquer de petites IHM (interfaces hommes machines)
L’API MATLAB L’API (Application Program Interface) est une librairie qui permet de
développer ses propres programmes optimisés en C et en Fortran et de les faire interagir avec
MATLAB. Elle inclut des fonctions pour l’appel de routines à partir de MATLAB (liaison
dynamique) ou l’appel de MATLAB comme moteur de calcul.

5
Première partie : Travaux pratique 1

I. MANIPULONS DES MATRICES ET DES VECTEURS


1. LES VECTEURS

L’addition et la soustraction des vecteurs est la même que pour les matrices. Seules changent
les significations des produits et puissances. La somme et la différence d’un vecteur signifie la
somme (ou la différence) des composantes de ce vecteur. Une opération similaire existe en
Matlab pour la multiplication.

 + Addition
 Soustraction
 .* Multiplication élément par élément
 ./ division élément par élément
 .\ division à gauche élément par élément .^ power élément par
élément
 .’ Transposition sans conjugaison

On ne peut utiliser le produit * sur des vecteurs qu’à la seule condition que l’un soit un vecteur
ligne (resp colonne) et l’autre un vecteur colonne (resp ligne).

 Exemple1 :

a=1
b=2
somme=a+b
produit=a*b
division=a/b
puissance=a^b
racine=a^(1/2)
 Exemple 2 :

v=[1 2 3 4 ]
U=[1 2 3 4 ;4 5 6 7 ;1 5 6 7; 1 2 3 4]
M=[1 0 5 3 ;5 8 6 4 ;1 2 3 5; 1 1 1 1]

6
somme1=M+U
produit1=M*U
différence=M-U
carre=M.^(2)
produit élément par élément =M.*U

2. LES MATRICES

Dans Matlab, une matrice est un tableau rectangulaire de nombres. Des significations
particulières sont liées aux matrices 1 × 1, qui sont des scalaires, et aux matrices avec
seulement une ligne ou une colonne, qui sont vecteurs. Ainsi, toutes variables, à quelques
exceptions près, sont des matrices.

Matlab possède d’autres méthodes de représentation de l’information, à la fois numérique


et non numérique, mais pour commencer, il est préférable de penser que tout est une matrice.
Les opérations en Matlab sont définies pour être les plus naturelles possibles. Avec Matlab, il
est possible de manipuler et de travailler simplement avec des matrices complètes, sans être
obligé de coder les produits matrices-matrices ou matrices-vecteurs par exemple comme c’est
le cas en Fortran ou en C.

Nous utiliserons dans cette partie comme exemple de matrices les matrices carrées
magiques ou matrice de Drer.

 Exemple 1 : Saisir une matrice à n lignes et m colonnes

n=3
m=3
for i=1:1:n
for j=1:m
a(i,j)=i+2;
end
end

A=a

 Exemple 2 : Saisir une matrice à m lignes et n colonnes dont tous les éléments
valent 0.

for i=1:m
for j=1:n
b(i,j)=0;
7
end
end
B=b

Dans Matlab il existe une commande qui donne le même résultat c’est la commande Zeros .
B=zeros(m,n)
 Exemple 4 : Saisir une matrice à m lignes et n colonnes dont tous les éléments
valent 1.

for i=1:m
for j=1:n
c(i,j)=1;
end
end
C=c

Dans Matlab il existe une commande qui donne le même résultat c’est la commande ones .
C1=ones(m,n)

 Exemple 5 : matrice unitaire d'ordre n

for i=1:n
for j=1:n
d(i,j)=i-j;
end
end
D=d
Dans Matlab il existe une commande qui donne le même résultat c’est la commande Iye(n) .
 Exemple 6 : la somme et le produit élément par élément

somme=A+B
produit2=A.*B
difference2=A-B
care=A.^2
 Exemple 7: Le transposé (A’), le déterminant et l’inverse d’une matrice carrée .

Atrnsp=A'
8
dererminantdeA=det(A)
linversedeA=inv(A)
 exemple 8: Le nombre de lignes, le nombre de colonne et max des deux.

nombredeligne=size(A,3)
taille=size(A)
maxdenetm=length(A)

3. RESOLUTION DES SYSTEMES LINEAIRES


 Exemple de résolution d’un système linéaire x = inv (A )* b .

clear
n=input('donner n')
for i=1:1:n
for j=1:1:n
A(i,j)=input('donner A');
end
end
for i=1:1:n
b(i)=input('donner b');
end
determinant=det(A)
if determinant==0
disp('matrice non inversible')
else
X=inv(A)*b';
end

 Un programme de résolution de l’équation ax + b = 0 dans R

clear
a = input ('entrer la valeur de a=')
b = input ('entrer la valeur de b=')
if a==0
if b==0
st = sprintf ('la racine de %d x+%d=0 est l
ensemble IR') ;
else
st = sprintf ('la racine de %d x+%d=0 est l
ensemnble vide') ;
end
else
x= - b/a ;

9
st=sprintf('la racine de %d x+%d=0 est
%d',a,b,x);
end
disp(st);

 la somme de deux matrice de même dimension (n, m) en utilisant les boucles for

clear
n=input('donner n')
m=input('donner m')
for i=1:1:n
for j=1:1:m
A(i,j)=input('donner A=');
end
end
A
for i=1:1:n
for j=1:1:m
B(i,j)=input('donner B=');
end
end
B
[n,m]=size(A);
C=zeros(n,m);
for i=1:n
for j=1:m
C(i,j)=A(i,j)+B(i,j);
end
end
C
 Le produit de deux matrices.

clear
n=input('donner n')
m=input('donner m')
for i=1:1:n
for j=1:1:m
A(i,j)=input('donner A=');
end
end
A
for i=1:1:n
for j=1:1:m
B(i,j)=input('donner B=');
end
10
end
B
[n,m]=size(A);
C=ones(n,m);
for i=1:n
for j=1:m
C(i,j)=A(i,j)*B(i,j);
end
end
C
 La suite d’instructions Matlab qui permet de demander à l’utilisateur de taper son
nom, son prénom et son âge puit affiché nom, prénom et âge

clear
nom=input('nom');
prenom=input('prenom');
age=input('age');
st=sptintf('votre nom est %s, et votre prenom est
%s, et votre age est %s',nom,prenom,age);
disp(st);

11
4. CONCLUSION
 Voici un résumé des opérations possibles.

Notation mathématique Commande Matlab


a+b a+b
a−b a-b
ab a*b
a/b a/b ou b\backslash a
xb x^b

x sqrt(x) ou x^0.5
|x| abs(x)
π pi
4.103 4e3 ou 4*10^3
3 − 4i 3-4*i ou 3-4*j
e, ex exp(1) ou exp(x)
ln x, log x log(x), log10(x)
sin x, arctan x, ... sin(x), atan(x) ...

 Résumé des manipulations matricielles

Matlab fournit quatre fonctions pour générer les matrices de bases

zeros matrices de zeros

ones matrices uns

rand éléments aléatoire uniformément distribués

randn éléments aléatoire normalement distribués

Commande Résultat

A(i,j) Aij
A(:,j) jème colonne de A
A(i,:) ième ligne de A
A(k:l,m:n) sous matrice de A composée des lignes k à l et des colonnes m à n.
v(i:j)’ Partie du vecteur v

n=rank(A) n devient le rang de A


x=det(A) x devient le déterminant de A
x=size(A) x devient un vecteur ligne contenant les dimensions de A
x=trace(A) Calcul de la trace de A
x=norm(v) Calcul de la norme euclidienne de v

12
C=A+B somme de deux matrices
C=A-B différence de deux matrices
C=A*B produit de deux matrices
C=A.*B matrice dont les termes sont les produits termes à termes des matrices A et B
C=A^k puissance de matrices
C=A.^k matrice dont les termes sont les puissances des termes de A
C=A’ transposée de A
C=A./B matrice dont les termes sont les divisions termes à termes des matrices A et B
X=A\backslash B trouve la solution du système AX = B
X=B/A trouve la solution de XA = B

C=inv(A) calcul de l’inverse de A


C=null(A) calcul d’une base orthonormée engendrant le noyau de A
C=orth(A) calcul d’une base orthonormée engendrant l’image de A
L=eig(A) calcul des valeurs propres de A
[X,D]=eig(A) produit une matrice diagonale D formée des valeurs propres de A et d’une
matrice dont les colonnes sont les vecteurs propres associés.

A=eye(n) matrice identité de taille n


A=zeros(m,n) matrice rectangulaire formée de zéros
A=ones(m,n) matrice rectangulaire formée de uns
A=diag(v) matrice diagonale dont les éléments diagonaux sont les éléments du vecteur v
X=trill(A) partie triangulaire inférieure de A
X=triu(A) partie triangulaire supérieure de A
A=rand(m,n) matrice rectangulaire aléatoire

v=max(A) vecteur contenant les valeu34maximales de chaque colonne de A


v=min(A) idem avec le minimum

13
Deuxième partie : Travaux pratique 2
I. GRAPHISME
 TRACES DE COURBES BASIQUES 2D

La fonction plot a différentes formes qui dépendent des arguments d’entrée. Si y est
un vecteur, plot(y) produit une graphe affine par morceaux des éléments de y par
rapport à leur indice. Si l’on
spécifie deux vecteurs comme arguments, plot(x,y) produit une graphe de y où x est
l’abscisse.

 Exemple 1 :

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

Il est alors possible de rajouter des titres pour les axes et la figure principale.

 Exemple 2 :

xlabel(’x = 0:2\pi’)
ylabel(’Sine of x’)
title(’Graphe de la fonction Sinus’,’FontSize’,12)

1. PLUSIEURS DONNEES SUR UN MEME GRAPHE

Plusieurs couples x-y crée plusieurs graphes avec l’appel à un seul plot.

 Exemple 3 :

x = 0:pi/100:2*pi;
y = sin(x);
y2 = sin(x-.25);
y3 = sin(x-.5);
plot(x,y,x,y2,x,y3)
legend('sin(x)','sin(x-25)','sin(x-5)')

14
2. OPTIONS DE GRAPHE

On utilise les options pour changer les couleurs des courbes ou bien les marqueurs. La syntaxe
est plot(x,y,’color_style_marker’)

color_style_marker est une chaine qui contient de 1 à 4 caractères construite avec les
spécifications de couleurs, de style de lignes et de type de marqueurs.

- couleurs : ’c’, ’m’, ’y’, ’r’, ’g’, ’b’, ’w’, and ’k’. Ceci correspond à cyan, magenta, jaune, rouge,
vert, bleu, blanc, et noir.

- Style de ligne : ’-’ pour solide, ’-’ pour des pointillés sous forme de traits, ’ :’ pour des
pointillés,

’-.’ pour des pointillés alternés. Il suffit de ne pas mettre de style de ligne pour ne pas tracer de

lignes.

- Style de marqueurs : ’+’, ’o’, ’*’, et ’x’, ’s’ pour des carrés, ’d’ pour des losanges, ’^’ pour

des triangles, ’v’ pour des triangles vers le bas, ’>’ pour des triangles vers la droite, ’<’ pour des

triangles vers la gauche, ’p’ pour des pentagrammes, ’h’ pour des hexagrammes, et rien pour ne

pas avoir de marqueurs.

 Exemple 3 :

x1 = 0:pi/100:2*pi;
x2 = 0:pi/10:2*pi;
plot(x1,sin(x1),’r:’,x2,sin(x2),’r+’)

15
Pour ajouter des graphiques à un graphe déjà existant, il suffit de taper la commande hold on.
Pour suspendre son utilisation, taper simplement hold off.

Pour effacer un graphique, utiliser la commande clf.

 Exemple 4 :

[x,y,z] = peaks;
contour(x,y,z,20,’k’)
hold on
pcolor(x,y,z)
shading interp
hold off

Si l’on désire des fenêtres supplémentaires pour effectuer des tracés, il suffit de taper figure(n)
où n est le numéro de la figure.

16
3. SURFACE 3D

Matlab définit une surface par les coordonnées z des points sur une grille dans le plan x-y. Les
commandes mesh et surf affichent des surfaces en 3 dimensions. mesh produit un affichage en
lignes tandis que surf colorie en plus les facettes.

Pour afficher une fonction de deux variables z = f (x, y), il faut générer la liste des points x et y
(qu’on appelle maillage) et utiliser x et y pour évaluer la fonction f . La fonction meshgrid
transforme le domaine spécifié par un simple vecteur ou par deux vecteurs en maillages.

 Exemple 1:

[X,Y] = meshgrid(-8:.5:8);

R = sqrt(X.^2 + Y.^2) + eps; Z = sin(R)./R;

mesh(X,Y,Z,'EdgeColor','black')

Il est possible de créer une surface transparente en utilisant la commande hidden off.

Voici le même exemple avec la commande surf.

surf(X,Y,Z)

17
Troisième partie : Travaux pratique 3
I. ALGORITHMES
1. ALGORITHMES DE LA RESOLUTION D’EQUATIONS LINEAIRES
 Algorithme système linéaire triangulaire inférieur :

function x=STrinf(L,b)
n=length(b);
x(1)=b(1)/L(1,1);
for i=2:n
x(i)=b(i);
for j=1:i-1
x(i)=x(i)/L(i,j)*x(j);
end
x(i)=x(i)/L(i,i);
end

 Algorithme système linéaire triangulaire supérieur :

function x=STrsup(L,b)
n=length(b);
x(n)=b(n)/L(n,n);
for i=n-1:-1:1
x(i)=b(i);
for j=i+1:n
x(i)=x(i)/L(i,j)*x(j);
end
x(i)=x(i)/L(i,i);
end

 Algorithme de la méthode L U :

function x=SLU(A,b)
n=length(b);
for k=1:n
l(k,k)=1;
for i=k+1:n
for j=1:n
l(i,j)=A(i,j)-l(i,k)*A(k,j);
end
end
end
u=a;
y(1)=b(1)/l(1,1);
for i=2:n

18
x(i)=b(i);
for j=1:i-1
x(i)=x(i)-l(i,j)*y(j);
end
y(i)=x(i)/l(i,i);
end
x(n)=y(n)/u(n,n);
for i=n-1:-1:1
x(i)=y(i);
for j=i+1:n
x(i)=x(i)-u(i,j)*x(j);
end
end

 Algorithme de Gauss-Seidel :

function [x,Ni]=GaussSeidel(A,b,xo,eps,Nm)
n=length(b);
x=xo;
Ni=1;
while (Ni<=Nm)
xp=x;
for i=1:n
x(i)=b(i);
for j=1:i-1
if j~=i
x(i)=x(i)-A(i,j)*x(j);
end
for j=i+1:n
x(i)=x(i)-A(i,j)*xp(j);
end
end
x(i)=x(i)/A(i,i);
end
l=norm(x-xp,inf)/norm(xp,inf);
if (l<=eps);
break
end
Ni=Ni+1;
end
if (l<=eps)
str1=sprintf('Apres %d iterations,la solution obtenue
est',Ni);
disp(str1);disp(x);
str2=sprintf('et 1 erreur maximale est %f',1);
disp(str2);
else
str=sprintf('la methode a echoue apres %d iterations, 1
aproximation obtenue est',Ni);

19
disp(str);disp(x);
end
end

2. ALGORITHMES DE LA RESOLUTION D’EQUATIONS NON LINEAIRES


 Algorithme de dichotomie :

function [x,N]=Dich(f,a,b,eps,No)
N=1;
while (N<=No)
x=(a+b)/2;
c=(b-a)/2;

if f(a)*f(b)>0
str=sprintf('pas de changement de signe');
disp(str);
break
end

if f(a)==0
str=sprintf('la solution est x =%f',a);
disp(str);
break
end
if f(b)==0
str=sprintf('la solution est x =%f',b);
disp(str);
break
end

if (f(x)==0 | c<=eps)
srt1=sprintf('apres %d iterations \n l approximation
obtenue est x = %f',No,x);
disp (str1);
srt2=sprintf('et l erreur maximale est %f',c);
disp(str2);
break
end

if f(a)*f(b)>0
a=x;
else
b=x;
end

N=N+1;
end

20
if (N>No)
str=sprintf('apres d% iterations \n l approximation
obtenue est x = %f',No,x);
disp (str1);
srt2=sprintf('et l erreur maximale est %f',c);
disp(str2);
end
II. APPLICATION
1. ALGORITHME D’EXERCICE DE THERMODYNAMIQUE
 Définition de la fonction air :

function A=aireP(P)
R=0.08206;
Pc=65.9;
Tc=416.3;
T=322;
a=(27/64)*((R^2)*(Tc^2))/Pc;
b=(1/8)*(R*Tc)/Pc;
j=-(b+(R*T)/P);
k=a/P;
m=-(a*b)/P;
L=[ 1 j k m ];
r=roots(L);
Vl=min(r);
Vg=max(r);
A=R*T*log((Vg-b)/(Vl-b))+a*((1/Vg)-(1/Vl))-P*(Vg-Vl);
end

 Détermination de la pression saturante avec la méthode de


dichotomie :

e=0.5;
f=50;
A=aireP(5);
i=1;
while abs(A)>=1/100000
P=(e+f)/2;
A=aireP(P);
21
if aireP(e)*A<0
f=(f+e)/2;
else
e=(f+e)/2;
end
i=i+1;
end
P
A
i

 test :
P =21.5760 (presion )
A =9.8129e-006 ( aire avec lequel la condition de l’erreur
est vérifie )
i = 22 (le nombre des itération )

2. ALGORITHME DE RESOLUTION D’EQUATIONS DIFFERENTIELLE


 Algorithme(difference finie)

clear;
N=50;
a=0;
b=1;
h=(b-a)/(N+1);
A=zeros(N);
x=a+h:h:b-h;
for i=1:N
A(i,i)=-2*(1+x(i)^2);
if (i<N)
A(i,i+1)=1+x(i)^2+h*x(i);
A(i+1,i)=1+x(i)^2-h*x(i);
end
end
Ua=a.^2+sin(a)+1;
Ub=b.^2+sin(b)+1;

22
F=(2+6*x.^2+2*x.*cos(x)-(1+x.^2).*sin(x))*h^2;
F(1)=F(1)-Ua*(1+x(1)^2-h*x(1));
F(N)=F(N)-Ub*(1+x(N)^2+h*x(N));
U=A\F';
U=[Ua;U;Ub];

23