Tp 4 analyse numérique - analyse numérique avec matlab - tél

Télécharger PDF

Obtenir le pack complet des cours, TDs, TPs et projets sur analyse numérique!

Êtes-vous un étudiant passionné d'informatique et souhaitez-vous maîtriser analyse numérique ? Ne cherchez plus, nous avons le pack parfait pour vous.

pack complet des cours, TDs, TPs et projets sur analyse numérique

Accédez à une collection complète des supports de cours, des travaux dirigés (TD), des travaux pratiques (TP) et des projets.

Obtenir le pack maintenant

J.LAASSIRI et S. EL HAJJImia/1 J.LAASSIRI et S. EL HAJJImia/2 Plan:

I)GENERALITES...............................................................................................................3

II)OPÉRATIONS NUMÉRIQUES EN LIGNE............................................................4

1)Premières commandes.....................................................................................................4

2)Calculs sur les nombre complexes..................................................................................4

3)Affichage des résultats.....................................................................................................5

4)Matrices.............................................................................................................................5

a)Création.............................................................................................................................5

b)Manipulation.....................................................................................................................5

e)Calculs...............................................................................................................................6

III)FONCTIONS GRAPHIQUES....................................................................................7

1)Fonctions2D.....................................................................................................................7

2)Fonctions3D.....................................................................................................................7

IV)EXERCICES.................................................................................................................8

1)COURBE DE GAUSS......................................................................................................8

2)DOSAGECOLORIMETRIQUE DU MANGANESES DANS UN ACIER...............8

a)Créer les tableaux lambda et A;....................................................................................8

V)AIDE POUR TP...........................................................................................................9

1)Les instructions d’affectation........................................................................................15

2)Les instructions de contrôle...........................................................................................15

a)L'instruction «while»...................................................................................................16

x%affiche x.................................................................................................................16

b)L’instruction “for”.........................................................................................................16

c)L'instruction if................................................................................................................17

Affecter prélablement un entier aux variable i et x..............................................................17

3)Exemple de script...........................................................................................................184 ème

étape: Exécution. Avant d’exécuter il faut spécifier le répertoire où se trouve le m-

file, en écrivant l’instruction suivantedans la fenêtre matlab: cd c:\A1.Dans la fenêtre

de commande Matlab, taper le nom du fichier sans l’extension;par exemple ex0..........19

4)Exemple de fonction.......................................................................................................19

5)Exercices..........................................................................................................................19

Pour les exercices suivants, on passera par les mêmes étapes............................................19

a)Exercice1........................................................................................................................19

b)Exercice2: recherche dezéro par dichotomie............................................................19

d)Exercice4: Monte-Carlo...............................................................................................20

L’instructionrandxrenvoie un nombre réel positif pseudo-aléatoire inférieur à1.........20

6)Série des Exercices:.......................................................................................................21

a)Série.................................................................................................................................21

b)Série2...............................................................................................................................23

c)Série3:.............................................................................................................................24

J.LAASSIRI et S. EL HAJJImia/3 I)GENERALITES

1)Qu’est-ce que Matlab?

Matlab est un logiciel de calcul scientifique:

fonctions mathématiques usuelles

calcul matriciel

racines d’un polynôme

équations différentielles

intégration numériqueetc. Il peut être doté de nombreuses extensions (boîtes à outils: statistique, SIMULINK, ...). 2)On peut utiliser Matlab de deux manières différentes

a)en entrant des instructions à la suite du prompteur >>, le logiciel se comporte

comme une très bonne calculatrice graphique;

b)en créant desscripts(oum-files) ou des fonctions (extension.m), on crée des

“programmes” sauvegardables.3)Aide Pour tout problème de syntaxe utilisez l’aide en ligne (commande help).

J.LAASSIRI et S. EL HAJJImia/4 II)OPERATIONS NUMERIQUES EN LIGNE

Il s’agit ici d’utiliser les opérateurs mathématiques afin de se familiariser avec le logiciel. Le

calcul sur les nombres complexes est aussi abordé.

1)Premières commandes

Voici quelques exemples à essayer (chercher le résultat avant l'exécution de la ligne et le

commenter) :

>>3*4

On peut taper plusieurs commandes Matlab sur une même ligne, en les séparant par une

virgule:

>>5*6,2^5

>>3+5*2^5

Les opérateurs arithmétiques ont la priorité habituelle (cf. calculette).

>>3+5*2^5/5

Pour rappeler des commandes précédentes,2possibilités:

Utiliser les touches du clavierouet les commandes précédentes apparaissent dans

l’ordre chronologique;

Taper les premiers caractères de la commande puis utiliser les touchesou.

Après avoir choisi la commande à rappeler, il est toujours possible de la modifier en

se déplaçant avec les toucheseteten effectuant la correction

Une ligne d'instruction terminée par un point virgule est exécutée immédiatement mais le

résultat n’est pas affiché:

Il est important de bien comprendre le sens du signe = qui ne signifie pas qu’il y a identité

entre les deux termes. Il signifie que le résultat de l’expression de droite est assigné à la

variable de gauche qui prend donc une nouvelle valeur.

A titre d’exemple,x=x+1n’a de sens qu’en langage de programmation:le résultat de la

somme du “contenu” de la variable x et de1est recopié dans la même variable x.

Ladernière réponse est appeléeans, à défaut de lui avoir donné un nom. On peut l'utiliser

ainsi (deviner les résultats) :

2)Calculs sur les nombre complexes

Dans Matlab, i (ou j) désigne le nombre imaginaire pur de partie imaginaire égale à1; si la

variable i a été utilisée entre temps à un autre usage (indice de boucle par exemple) vous

pouvez la réinitialiser par i=sqrt(-1).

La commandewhosfournit en plus des informations sur lataille, le nombre

d’éléments et le nombre d’octets occupés. Matlab travaille toujours sur des données

endouble précision(soit8octets).

4)Matrices

Le "Mat" de Matlab ne signifie pas Mathématique mais Matrice. De fait, il considère tout

nombre réel comme une matrice11.Pour Matlab,tout est tableau.

Syntaxe: A = [a

Les éléments d’une ligne sont séparés par des blancs ou des virgules,

Les éléments d’une colonne sont séparés par un point virgule ou un retour chariot,

Le tout est mis entre crochets.

L’appel aux éléments de la matrice est le suivant:A(lignes, colonnes)

a)Création

Il est possible de réaliser des opérations terme à terme sur les matrices (les matrices sont alors

assimilées à des tableaux).

Les deux opérateurs + et–travaillent déjà terme à terme. Pour les autres opérateurs *, /,\, et ^

, il est nécessaire de les précéder d’un point pour préciser que les opérations se font terme àterme. Remarque:

Notez quelques symboles importants :pi,i(pour un nombre complexe) eteps(2.2e-16,

précision maximale des calculs). Il faut également noter que ces symboles peuvent voir leur

contenu modifié. Leur sens donné plus haut est celui fixé au lancement de Matlab. Si, après

une modification maladroite, on veut revenir à la valeur prédéfinie, il faut taperclearnom de

la variable.

J.LAASSIRI et S. EL HAJJImia/7 III)FONCTIONS GRAPHIQUES

Matlab offre la possibilités de résultats graphiques assez esthétiques. Travaillant sous

Windows, ils peuvent être recopiés dans une autre application (Word, ...)

1)Fonctions2D

>>x=-10:.1:10;

>>plot(x.^2)%chaque élément du tableau x à la puissance2et non produit matriciel

>>figure%créer une nouvelle fenêtre graphique. permet de stocker plusieurs

graphes en une même session

>>plot(x,x.^2)

Les styles de tracé:

SymboleCouleurSymboleMarqueur

On utilise la commande plot3.Elle possède la même syntaxe que plot avec le paramètre z

d’altitude en plus:

>>t=0:pi/50:20*pi;

>>plot3(sin(t),cos(t),t);

Pour voir les figures: menuWindows.

J.LAASSIRI et S. EL HAJJImia/8 IV)EXERCICES

1)COURBE DE GAUSS

Tracer la courbe correspondant à la fonction

pour010x.

(on commencera par créer un tableau de valeur pour x avec un pas de0.01).

2)DOSAGE COLORIMETRIQUE DU MANGANESES DANS UN ACIER

Objectif:

Tracer la courbe d’absorbanceA=f()à partir de résultats expérimentaux

Exploiter cette courbe pour obtenir des résultats par interpolation

a)Créer les tableauxlambdaetA;

b)Tracer A=f(lambda) (afficher les point expérimentaux uniquement);

c)Tracer la courbe par interpolation avec un pas de1nm.Pour cela,utiliser la

commandespline(voir l’aide:help spline) pour l’interpolation etholdpour

afficher les2courbes sur le même graphique;

d)Déterminer A pourquelconque (à l’aide despline).

e)Trouver le maximum (fonctionmax).

J.LAASSIRI et S. EL HAJJImia/9 V)AIDE POUR TP

1)LE SCRIPT AIDE_TP1

%Le script aide_TP1en mode"démonstration" permet de se

%familiariser avec les commandes simples de Matlab.

%On fait défiler la suite du contenu de cette aide en appuyant

%sur n'importe quelle touche.

%Les commentaires écrits après un "%" ne sont pas interprétés.

%Les premières lignes de commentaires sont disponible par"help aide_TP1"

help aide_TP1%on affiche les premières lignes de commentaires ci-dessus

echo on%mode démonstration avec affichage des instructionspause format compact %affichage des résultats sans sauts de ligne

disp(' '), disp(' '), disp('Variables :'), disp(' ')a=1 2+a

b=3*ans%le dernier résultat est appelé"ans"pour"answer"

1+2^5/4,3e6,... %","sépare sur une ligne et"..."empêche la rupture de ligne

i^2,pi,exp(i*pi) %i et j représentent(sauf si redéfinis) la même racine de-1

a=1;b=a+1;c='0*a';%";"permet de ne pas afficher le résultat:

a=a,b,2*c%la chaîne de3caractères"c"est une matrice1x3

x=(1>=0);y=(0~=0);

x,y%vrai=1et faux=0pause disp(' '), disp(' '), disp('Affichage :'), disp(' ')

format long,1/3%format avec(au maximum)15chiffres

format short e,1/3%format avec5chiffres en notation scientifique

format,1/3%format courant(5décimales,non compact)

format compact

1+eps==1,1+eps/2==1%epsilon machine=eps=2^(-52)

2^(-1074)%plus petit nombre realmin flottant>0

2^(1023)*(2-2^(-52))%plus grand nombre realmax flottant

10^1000,ans/ans%infini:Inf,not_a_number : NaNpause disp(' '), disp(' '), disp('Matrices et vecteurs :'), disp(' ')

A=[12;23]%cette matrice s'écrit aussi[1,2;2,3]

A(2,2)=1;A

B=rand(2,3)%matrice2x3aléatoire

u=2:4%":"permet de construire des suites arithmétiques

2:0.5:4%nombres de2a4par pas de0.5

v=[234]'%vecteur=adjoint d'une matrice ligne

J.LAASSIRI et S. EL HAJJImia/10 prod(1:20)%factorielle20

p=poly([0,-2]) %coefficients en décroissant du polynôme p de racines0et-2

roots(p)%récupération des racines de p dans C

a0=p(length(p)) %coefficient"constant"de p

z=polyval(p,2);%évaluation de p(2)

fprintf('\np(2)=%g\n\n',z) %affichage du résultat avec saut de ligne par "\n"pause disp(' '), disp(' '), disp('Tests et boucles :'), disp(' ')

clear x;for k=1:5x(k)=k^2;end;x'%les vecteurs1:n sont d'accès très rapide

k=0;while k^3< 0;k=k+1;end;k%utiliser plutôt si possible"for"

n = input('nombre entier à tester ?\n'); %dialogue

if rem(n,2)==0,r='pair';else r='impair';end;

fprintf('\n%g est %s\n\n',n,r)pause disp(' '), disp(' '), disp('Graphes :'), disp(' ')

figure(1),clf%on prépare la fenêtre1(inutile si pas"hold on")

x=[-.5:0.001:0.5]';%représentation de l'axe des abscisses par une suite depoints y=x.*sin(x);

plot(x,y,'r'), axis equal %graphe de x->x*sin(1/x)sur[-1/2,1/2]en rouge("red")

title('y=x*sin(x)'), xlabel('x'), ylabel('y'), grid %légende et grille

v=axis;line([v(1),v(2)],[0,0]) %on trace l'axe des abscissespause disp(' '), disp(' '), disp('Équations différentielles :'), disp(' ')

figure(2),clf%on prépare la fenêtre2

[t1,Y1] =ode45('secondmembre_y',[01],[1]);%y'=y sur[0,1]avec y(0)=1

[t2,Y2] =ode45('secondmembre_y',[0-1],[1]);%y'=y sur[-1,0]avec y(0)=1

plot([t2t1],[Y2Y1]);%on trace la solution de y'=y sur[-1,1]avec y(0)=1

title('solution de y''=y et y(0)=1')

clear all

%on efface de la mémoire les variables affectées

echo off

1)LE SCRIPT AIDE_TP2

%Le script aide_TP2permet de se familiariser avec

%les commandes simples de Matlab concernant les matrices.

help aide_TP2,format short,format compact,echo onpause J.LAASSIRI et S. EL HAJJImia/11 disp(' '), disp(' '), disp('Matrice adjointe, produit :'), disp(' ')

clear i,u=[0i2]%variante: "u=[0,i,2]"

u', u.'%matrice adjointe et transposée

3*u,u/2,u'*u,u*u'pause disp(' '), disp(' '), disp('Id, diagonale, zeros et uns :'), disp(' ')

A=[12;34]%variante:1ère ligne avec"A=[12"et2ème avec"34]"

eye(size(A)),eye(2,3) %la matrice identité "I" se lit, comme "eye" en anglais

diag(A),diag([14]) %extraction de diagonale et construction de matrice

diagonale

zeros(2,3),ones(3,2)pause disp(' '), disp(' '), disp('Taille, norme, parties réelle et imaginaire :'), disp(' ')

u=[0i2],size(u,1),size(u,2),length(u) %"1"="ligne","2"="colonne"

norm(u,1),norm(u,2),norm(u,'inf'),norm(u)

A=[12;34],size(A),size(A,1),size(A,2)

norm(A,1),norm(A,2),norm(A,'inf'),norm(A,'fro')z=1+2*i norm(z), abs(z), real(z), imag(z), conj(z)pause disp(' '), disp(' '), disp('Déterminant, valeurs propres :'), disp(' ')

A=[12;34],det(A)

norm(A,2),sqrt(max(eig(A'*A)))

norm(A,2)==sqrt(max(eig(A'*A))) %il ne faut pas croire le résultat de ce test

p=poly([1,1]),C=compan(p)%une matrice de pol.car. proportionnel à p

eig(C), poly(C)%valeurs propres et polynôme caractéristique

disp(' '), disp(' '), disp('Matrice par blocs :'), disp(' ')

A=[12;34]

[A,[78]'],[A;[78]] %variantes: "[A[78]']"et"[A;78]"pause disp(' '), disp(' '), disp('Puissance :'), disp(' ')

A=[12;34]

inv(A), eye(size(A))/A %cf."help slash"B=A^2 B^0.5,ans^2%une racine carrée de B autre que Apause J.LAASSIRI et S. EL HAJJImia/12 disp(' '), disp(' '), disp('Opérations terme à terme :'), disp(' ')

A=[12;34]A+1 A.^2

sqrt(A)%matrice A.^0.5des racines carrées des coefficients

exp(A)%par contre, l'exponentielle de la matrice A est "expm(A)"A.*A A./A

1./A%à ne pas confondre avec l'inverse de Apause disp(' '), disp(' '), disp('Extraction de sous-matrices :'), disp(' ')

A=[12;34]

A(1,2),A(1,1),A(1,[2,1]) %des coefficients de A

A(1,:),A(:),A(:,[2,1])

%":"donne tous les éléments

A(1,end),A(:,end-1)%"end"donne le dernier élémentpause disp(' '), disp(' '), disp('Matrices creuses :'), disp(' ')

S=sparse([123],[241],[1,2,3]) %indices i,indices j,puis valeurs

T=full(S), sparse(T)

U=T(1:2,2:4)

D1=diag(ones(2,1),-1),D2=diag(ones(2,1),1)

clear all

echo off

%Le script aide_TP2permet de se familiariser avec

%les commandes simples de Matlab concernant les matrices.

help aide_TP2,format short,format compact,echo onpause disp(' '), disp(' '), disp('Matrice adjointe, produit :'), disp(' ')

clear i,u=[0i2]%variante: "u=[0,i,2]"

u', u.'%matrice adjointe et transposée

3*u,u/2,u'*u,u*u'pause J.LAASSIRI et S. EL HAJJImia/13 disp(' '), disp(' '), disp('Id, diagonale, zeros et uns :'), disp(' ')

A=[12;34]%variante:1ère ligne avec"A=[12"et2ème avec"34]"

eye(size(A)),eye(2,3) %la matrice identité"I" se lit, comme "eye" en anglais

diag(A),diag([14]) %extraction de diagonale et construction de matrice

diagonale

zeros(2,3),ones(3,2)pause disp(' '), disp(' '), disp('Taille, norme, parties réelle et imaginaire :'), disp(' ')

u=[0i2],size(u,1),size(u,2),length(u) %"1"="ligne","2"="colonne"

norm(u,1),norm(u,2),norm(u,'inf'),norm(u)

A=[12;34],size(A),size(A,1),size(A,2)

norm(A,1),norm(A,2),norm(A,'inf'),norm(A,'fro')z=1+2*i norm(z), abs(z), real(z), imag(z), conj(z)pause disp(' '), disp(' '), disp('Déterminant, valeurs propres :'), disp(' ')

A=[12;34],det(A)

norm(A,2),sqrt(max(eig(A'*A)))

norm(A,2)==sqrt(max(eig(A'*A))) %il ne faut pas croire le résultat de ce test

p=poly([1,1]),C=compan(p)%une matrice de pol.car.pro