Vous êtes sur la page 1sur 6

Vendredi 25 fevrier & Vendredi 4 mars 2011 Nadia Jurgensen et Silvain Louis

TP 1 Introduction Matlab

Table des matires


1 Calcul dintgrale 2 Rsolution de systmes linaires A 10 fonctions matlab 2 4 6

Table des gures


1 2 3 Comparaison des 3 mthodes de calcul dintgrale . . . . . . . . . . . . . . . Rsolution par la mthode de Jacobi . . . . . . . . . . . . . . . . . . . . . . Rsolution par la mthode de Gauss-Seidel . . . . . . . . . . . . . . . . . . . 3 4 5

Ce premier TP de la srie Analyse Numerique consiste initier Matlab v7. Nous avons tout dabord lu et travaill le fascicule du tutorial Matlab an de connatre les direntes fonctions que nous dtaillerons par la suite. Nous avons ensuite tudi des exemples simples tels le calcul dintgrales avec direntes mthodes (rectangle, trapze) puis la rsolution de systmes linaires (mthode de Jacobi simple et matricielle et mthode de Gauss-Seidel). Nous allons ensuite comparer lecacit de ces direntes mthodes sous forme de graphiques et tableaux.

Calcul dintgrale
8

I=
0

100 dx x+1

Par la mthode des rectangles, nous allons calculer lintgrale min et max par cette formule : Intgrale max : Intgrale min : function i=integrale_min(n) function i=integrale_max(n) h=(8-0)/n; h=(8-0)/n; i=0; i=0; g=0; g=0; while(g<=(8-h)) while(g<=(8-h)) d=g+h; d=g+h; yg=100./(g+1); yg=100./(g+1); yd=100./(d+1); yd=100./(d+1); y=min(yd,yg); y=max(yd,yg); i = i+(y*h); i = i+(y*h); g = g+h; g = g+h; end end 1 ba On utilise lquation I h n i=0 [f (xi )] avec un pas de h = n . Par la mthode des trapzes, nous calculons aussi lintgrale avec cette formule : function i=trapeze(fonction,a,b,n) h=(b-a)/n; i=0; g=a; while(g<=(b-h)) d=g+h; yg=fonction(g); yd=fonction(d); y=(yd+yg)/2; i = i+(y*h); g = g+h; end 2

h I 2

n1

[f (xi ) + f (xi+1 )]
i=0

avec un pas constant de : h= ba n

Nous avons compar les 2 mthodes suivant le nombre de subdivisions : La mthode des trapzes converge plus rapidement vers la solution exacte. On remarque cependant que lerreur est moins grande avec la mthode de lintegrale min pour les faibles valeurs de subdivisions (pour cette quation).

Figure 1 Comparaison des 3 mthodes de calcul dintgrale

Rsolution de systmes linaires


Nous avons reprsent le systme linaire par les matrices suivantes : A= 3 1 1 1 5 2 2 1 6 B= 2 17 18 Xinit = 0 0 0

On va utilis dans un premier temps, la mthode de Jacobi : for k=1:n for i=1:3 x=0; for j=1:3 if j~=i x=x+((A(i,j)./A(i,i)).*X(j,1)); end end Xn(i,1)=-x+(B(i,1)./A(i,i)); end X=Xn; end

for k=1:n Xn=inv(D)*(E+F)*X+inv(D)*B; X=Xn; end

Les 2 codes sont strictement identiques du point de vue algorithme, mais le code est plus simple et lisible en matricielle.

Figure 2 Rsolution par la mthode de Jacobi

Nous utilisons maintenant la mthode de Gauss-Seidel : for k=1:n for i=1:3 x=0; y=0; for j=1:(i-1) x=x+((A(i,j)./A(i,i)).*X(j,1)); end for j=(i+1):3 y=y+((A(i,j)./A(i,i)).*X(j,1)); end X(i,1)=-x-y+(B(i,1)./A(i,i)); end end

On remarque quavec cette mthode, le nombre ditrations pour obtenir la meilleure aproximation est reduit. Donc cet algorithme est plus rapide.

Figure 3 Rsolution par la mthode de Gauss-Seidel Ce premier TP nous a permis de nous initier au logiciel Matlab qui est un outil trs prcieux dans lapplication des mthodes vus en cours et TD danalyse numrique. Nous avons pu tester lcacit des direntes mthodes, plutt laborieuses sans outils informatiques. Nous en dduisons quil est prfrable dvaluer la complexit dune mthode avant de lappliquer, an de diminuer le temps de calcul ncessaire. Nous remarquons aussi que les algorithmes sont plus simples mettre en oeuvre en matriciel quen litral.

10 fonctions matlab
Voici 10 nouvelles fonctions apprises dans ce TP :

abs(x) : donne la valeur absolue de x. diag(A,k) : kime diagonale de la matrice A, si k=0 diagonale principale. diag(diag(A)) : matrice diagonale de A. input(question) : ache lcran le texte entre et attend une saisie au clavier. linspace(X1,X2,N) : cre un vecteur colonne de N points entre X1 et X2. ones(M,N) : matrice unitaire de dimension M*N. quad(fonction, a,b) : approxime la valeur numrique de lintgrale entre a et b de la fonction (on lutilise pour calculer lerreur). semilogx(...) : mme fonction que plot(...) en chelle semi-log. triu(A,k) : donne une matrice compose des lments sur et au-dessus de la k-ime diagonale (les autres termes mis zro), pour une matrice triangulaire suprieure k=1. tril(A,k) : donne une matrice compose des lments sur et en-dessous de la k-ime diagonale (les autres termes mis zro), pour une matrice triangulaire infrieure k=-1.