Vous êtes sur la page 1sur 21

Introduction Matlab

ric Brunelle 5 juin 2006

Introduction

Il nest pas rare de rencontrer des problmes dans les sciences appliques qui ne possdent pas de solution analytique ou que le temps que prendrait lhomme calculer cette solution serait trop grand. Cest pourquoi nous avons dvelopp des outils informatiques qui facilitent cette tche. Il est maintenant possible de trouver la trajectoire dun satellite dans lespace, de visualiser la propagation dun mdicament dans le sang ou de prvoir le dplacement des nuages, et ce, en quelques minutes grce aux ordinateurs. Pour ce faire, plusieurs logiciels et langages de programmation peuvent tre utiliss. Nous explorerons ici Matlab. Matlab est un logiciel de calcul numrique. Contrairement Maple ou Mathematica, il ne fait pas de calcul symbolique, cest--dire quil ne peut pas nous donner, par exemple, la drive dune certaine fonction f (x). Il nen reste pas moins que matlab est un excellent logiciel pour faire des simulations numriques. Nous vous proposons donc ici une petite introduction Matlab.

Commandes de base

Nous vous prsenterons, dans cette section, les direntes commandes de base. Ces commandes permettrons lutilisateur de Matlab de se dbrouiller en cas dennuis. Il est noter que pour bien matriser un logiciel, il faut lutiliser beaucoup et de faire des tests soi-mme. Cest pour cette raison que nos vous conseillons fortement de faire les petits exercices proposs la n de chaque section.

2.1

Commandes daide

Les commandes qui suivent vous seront trs utiles pour que vous puissiez voler de vos propres ailes. La premire est la commande diary. Elle permet denregistrer les entres et les sorties de Matlab dans chier.txt. Par exemple, la suite de commandes >> diary essai.txt >> 1+1 ans = 2 >> diary off cre un chier essai.txt qui contient les lignes 1 + 1 et 2. Les commandes help et lookfor sont galement importantes. Elles permettent lutilisteur dobtenir de linformation sur une fonction de Matlab (commande help ) ou de chercher les fonctions qui contiennent un certain mot (commande lookfor ). Par exemple, si nous voulons utiliser une mthode de quadrature dj programme dans Matlab, il sut dcrire les commandes suivantes : >> lookfor quadrature QUAD Numerically evaluate integral, adaptive Simpson quadrature. QUADL Numerically evaluate integral, adaptive Lobatto quadrature. QUADDEMO Demonstrate adaptive numerical quadrature. QMF Quadrature mirror filter. >> help quad QUAD Numerically evaluate integral, adaptive Simpson quadrature. Q = QUAD(FUN,A,B) tries to approximate the integral of function FUN from A to B to within an error of 1.e-6 using recursive adaptive Simpson quadrature. The function Y = FUN(X) should accept a vector argument X and return a vector result Y, the integrand evaluated at each element of X. ... See also QUADL, DBLQUAD, INLINE, @. Pour voir le code de la fonction quad de Matlab, il sut dcrire type quad.m. 2

2.2

Commandes darrt de simulation

Il arrive parfois que nous ne voulons pas voir certains rsultats de calculs. Il sut alors de placer un point-virgule ( ; ) la n dune ligne de commande : ainsi, Matlab nachera pas les rsultats de cette commande. Dune faon similaire, en plaant un signe de pourcentage ( % ) avant une ligne, Matlab ne tient pas compte de cette ligne dans les simulations. Cest une ligne dite en commentaire. Finalement, si lon doit arrter une simulation en cours, vous navez qu taper Ctrl+c.

2.3

Formats dachage

Par dfaut, Matlab ache lcran un nombre rel avec quatre chires aprs la virgule. Il peut tre parfois intressant de changer ce type dachage. Pour changer ce format, il sut dcrire format type_de_format. Le tableau 1 donne les dirents types de format possibles ainsi quun exemple dachage avec le nombre . types de format short long short e long e description achage 4 dcimales achage 14 dcimales notation scientique avec 4 dcimales notation scientique avec 14 dcimales exemple 3.1416 3.14159265358979 3.1416e+000 3.141592653589793e+000

Tab. 1 Les dirents types dachage de Matlab

2.4

Cration de vecteurs et de matrices

Comme nous lavons mentionn plus tt, Matlab est un outil puremment numrique. Il sera important de garder en mmoire des rsultats obtenus et tre en mesure deectuer des oprations sur ces derniers. Le meilleur moyen est de mettre ces valeurs dans un vecteur ou une matrice, selon la situation. Il existe plusieurs faons de crer un vecteur. Nous les verrons tout au long du document. Considrons un premier exemple avec le vecteur u = (1, 2, 3). Voici les entres et les sorties de Matlab : 3

>> u=[1,2,3] u = 1 2

Ceci nous donne un vecteur ligne. Pour un vecteur colonne, il faut sparer les lments par un point virgule ( ;). >> v=[1;2;3] v = 1 2 3 On cre une matrice dune manire similaire. On entre les lments ligne par ligne en sparant ces dernires par un point-virgule ( ;), et les entres de chacune dentre elles par des virgules (,). >> M=[1,2,30;1,5,6] M = 1 2 30 1 5 6 Si nous dsirons aller chercher llment mi,j dune matrice M , il faut crire M (i, j ). Alors Matlab achera llment de la ie ligne et de la j e colonne de M . Par exemple, >> M(2,3) ans = 6 Il existe des fonctions qui crent certains types de matrices dj prdnies. En voici une liste : zeros(n,m) Cre une matrice remplie de zro de dimension n m. ones(n,m) Cre une matrice remplie de un de dimension n m. eye(n) Cre une matrice identite de dimension n. rand(n,m) Cre une de nombre alatoire. Ces nombres sont compris entre 0 et 1.

Il existe aussi une autre faon de crer une matrice grce la commande diag(v,n). Cette mthode est trs ecace pour les matrices bandes. Pour expliquer cette manire suivons un exemple. On veut construire une matrice ayant des 2 sur la diagonale, des 1 au dessus de la diagonale et en dessous delle. Cette matrice doit tre 5 5. >> % Crons tout dabord un vecteur de longeur 5 ayant des 2 partout >> u=2*ones(1,5); >> % Crons maintenant les vecteurs de longueur 4 ayant >> % respectivement 1 et pi >> % Ce sont les lments au-dessus et en dessous de la diagonale >> v=ones(1,4); >> w=pi*ones(1,4); >> % Crons la matrice avec la commande diag: >> A=diag(u)+diag(v,+1)+diag(w,-1) A = 2.0000 1.0000 0 0 0 3.1416 2.0000 1.0000 0 0 0 3.1416 2.0000 1.0000 0 0 0 3.1416 2.0000 1.0000 0 0 0 3.1416 2.0000 Avec cet exemple, on voit que la commande diag(v,n) place le vecteur v n diagonales au-dessus ou en-dessous de la diagonale principale, selon le signe de n, et place des 0 ailleurs.

2.5

Commandes utiles sur les matrices

Nous verrons plus loin un exemple o Matlab nous retourne une matrice inconnue. Nous pourrons connatre cette dernire avec la commande size(M) qui nous retournera un vecteur contenant le nombre de lignes et de colonne de M . De manire similaire, length(v) nous donne la longueur du vecteur v . Lexemple suivant nous montre comment extraire une ligne ou une colonne dune matrice grce au ( : ). >> % Cration dune matrice 3X4 alatoire >> A=rand(3,4) A = 0.9501 0.4860 0.4565 0.4447 5

0.2311 0.8913 0.0185 0.6154 0.6068 0.7621 0.8214 0.7919 >> % Crons le vecteur v comme tant la 2e colonne de A >> v=A(:,2) v = 0.4860 0.8913 0.7621 >> % Les : signifient que je prends toutes >> % les lignes de la colonne 2 >> % Crons le vecteur u comme tant la 2e ligne de A >> u=A(2,:) u = 0.2311 0.8913 0.0185 0.6154 >> % Dimension de u >> size(u) ans = 1 4 >> % On veut slectionner le dernier lment de u >> u(end) ans = 0.6154 Le end pointe le dernier lment. On peut galement aller chercher lavantdernier lment de u en entrant u(end-1).

2.6

Exercices

1. Crer une matrice alatoire B de dimension 5 4. Acher cette matrice dans les formats long et short e. 2. Transposer la matrice B . Pour ce faire, chercher la commande disponible de Matlab. Chercher la commande raccourcie ? 3. Crer une matrice C de dimension 3 3 qui est une matrice identite sauf le dernier lment de la diagonale qui est 10. 4. Crer un vecteur ligne u dont les lments sont ceux de la premire ligne de B suivies de ceux de la troisime colonne. 5. Crer une matrice tridiagonale 6 6, dont la diagonale principale est compose de 3 et les autres lments non-tiviaux sont des 1. 6

Nombres spciaux et fonctions usuelles

Cette section contient plusieurs lments trs utiles. Il sera notamment question des nombres complexes, des fonctions sign, polyt, tictoc etc. Nous porterons galement attention larithmtique sur les matrices, aux fonctions trigonomtriques et exponentielle.

3.1

Nombres complexes

Matlab est capable de manipuler des nombres complexes. Par exemple, soit z = 1 + 3i et w = 2 i. Trouvons z + w , zw , z/w et z . >> z=1+3*i z = 1.0000 + 3.0000i >> w=2-i; >> z+w ans = 3.0000 + 2.0000i >> z*w ans = 5.0000 + 5.0000i >> z/w ans = -0.2000 + 1.4000i >> z ans = 1.0000 - 3.0000i >> %le donne le conjugu complexe Nous pouvons galement trouver le module de z et largument de ce nombre. >> norm(z) ans = 3.1623 >>angle(z) ans = 1.2490 Ici, langle est donn en radian. 7

3.2

Arithmtique sur les matrices

Sous Matlab, il existe deux arithmtiques de matrices. La premire est celle vue en algbre linraire. Les oprations se font comme avec les nombres rels et complexes. Il faut simplement sassurer que les dimensions concident selon les rgles habituelles. Ce que nous regarderons plutt est la manipulation lments par lments dun vecteur ou dune matrice. Donnons un exemple. Comme nous le verrons plus loin, Matlab ne peut pas tracer une fonction f (x) seulement en connaissant la formule de f . Il faut lui donner un vecteur avec des points du domaine et un autre vecteur avec limage de ces points. Par exemple, trouvons le vecteur du domaine et de limage de f (x) = 2x2 pour x [0, 10]. >> % Cration du vecteur des points du domaine >> X=0:1:10 X = 0 1 2 3 4 5 6 7 8 >> % f(x)=x^2 1er essai >> 2*X^2 ??? Error using ==> ^ Matrix must be square. >> % Erreur, car X^2=X*X et les dimensions font quon >> % ne peut pas multiplier >> % Vritable facon >> Y=2*X.^2 Y = 0 2 8 18 32 50 72 98 108

10

162

200

Le point (.) devant loprateur signie que cest chaque lment du vecteur X qui est au carr et non le vecteur lui-mme. chaque fois quil y a ambigut avec un oprateur (le plus souvent la * et la /), celle-ci est leve en plaant un point (.) devant cet oprateur. Il est noter que nous navons pas eu besoin de mettre un point devant la multiplication par 2, car il ny a pas dambigut lors de la multiplication dun vecteur par un scalaire. Tout ce que nous venons de dire au sujet de larithmtique sur les vecteurs est valide pour les matrices.

3.3

Fonctions exponentielle et trigonomtriques

Les fonctions trigonomtriques dans Matlab peuvent traiter un nombre rel ou complexe. Il y a galement les fonctions hyperboliques et inverses. 8

Elles sont prsentes dans le tableau 2. Il est souligner que si x est un vecteur (ou matrice), Matlab applique la fonction sur chacun des lments et retoune donc un vecteur (ou matrice). De manire similaire, ex est donn par Fonction sin(x) cos(x) tan(x) Commande sin(x) cos(x) tan(x) Inverse asin(x) acos(x) atan(x) Hyperbolique sinh(x) cosh(x) tanh(x) Inverse asinh(x) acosh(x) atanh(x)

Tab. 2 Fonctions trigonomtriques et hyperboliques avec leur inverse. la commande exp(x) et ln(x) par log(x). Les deux fonctions peuvent recevoir un vecteur ou une matrice.

3.4

Fonctions usuelles importantes

Nous avons mis dans le tableau 3 les commandes associes aux principales fonctions mathmatiques que lon utilise lorsque lon programme. Nous utiliserons comme notation que x est un vecteur. Ainsi, les fonctions avec x pour entres marchent pour les vecteurs et retourne un vecteur (sauf indications contraires). Commande factorial(n) abs(x) sign(x) max(x), min(x) sqrt(x) disp([x,y]) disp([texte 1, texte 2]) Description n! (ne fonctionne que si n 21) Donne la valeur absolue de x. Donne le signe des lments de x (1, 0 ou 1). Donne le max et le min du vecteur x. Vecteur des racines carres des entres de x. Ache la matrice cre par xn1 et yn1 . Ache : texte 1 texte 2.

Tab. 3 Description de certaines commandes importantes.

3.5

polyt

La fonction polyt(X,Y,n) permet de trouver le meilleur polynme de degr n, an xn + an1 xn1 + ... + a1 x + a0 passant par un ensemble ni de points {(xi , yi ), i = 1..m}. Matlab calculera les ai et les donnera en squence en commenant par le an et en nissant par a0 . Par exemple, trouvons la meilleure droite et le meilleur polynme de degr 2 qui passent par les points suivants : >> X=[0:0.1:1]; >> Y=X.^2; >> polyfit(X,Y,1) ans = 1.0000 -0.1500 >> polyfit(X,Y,2) ans = 1.0000 0.0000

-0.0000

Ainsi, lquation de la droite serait x 0.15 et la parabole serait x2 (naturellement par la dnition de Y). La mthode utilise par Matlab pour obtenir ces polynmes sera vue plus loin.

3.6

Tic-Toc

La commande Tic-Toc permet de calculer le temps pris par Matlab pour eectuer des simulations. Pour ce faire, il sut dinsrer la commande tic au dbut de la simulation (cela partira le chronomtre) et de placer toc lorsque lon veut que le temps arrte. Matlab achera alors le temps pris entre le tic et le toc. Par exemple, quel est le temps pris par Matlab pour calculer la somme des 200 premiers entiers. (On expliquera lalgorithme de ce programme dans la prochaine section). >> som=0; tic; for i=1:200 som=som+i; end; toc elapsed_time = 0.0150 10

Pour passer dune ligne lautre dans Matlab sans que ce dernier neectue immdiatement les instructions, il sut de faire shift+enter. Ce ft le cas dans le dernier exemple aprs la ligne du for. Un conseil lorsque lon fait de longs codes est de lcrire dans un diteur de texte et de les copier dans Matlab par la suite. On verra plus loin comment crer des fonctions. Il est trs important de noter que le temps de calcul peut varier dune fois lautre selon lutilisation de lordinateur et surtout du rseau.

3.7

Exercices

1. Trouver le vecteur image de la fonction f (x) = xex + cos(x) avec x allant de 0 jusqu 5 par bond de 0.5. 2. Trouver lerreur commise par lapproximation en srie de Taylor de degr 4 de la fonction cos(x) autour de 0 en des points de 1 1. Rappellons que P2 (x) = 1 x2 /2! + x4 /4! pour cos(x). 3. Soit z = 2 + i, v = 1.5 4i et u = 3 + 2i. Trouver largument du nombre complexe w dni par z u/v . 4. Trouver le polynme de degr 2 passant par les points (1, 9), (0, 2) et (1, 1). Si lon ajoute le point (2, 6) la liste prcdente, trouver le meilleur polynme de degr 2 passant par ces points. Trouver le polynme de degr 3. Que remarquez-vous ?

4
4.1

Boucles et et commande if
Boucle for

La boucle for permet de faire une srie dinstructions un nombre de fois donn. Ces intructions peuvent dpendre de litrateur. Pour que tout ceci soit plus clair, donnons quelques exemples, mais avant regardons la structure gnrale de la boucle for. for i=a:h:b instructions; end; Ces lignes signient que pour i (litrateur) gal a jusqu ce quil soit gal b en laugmentant par un pas de h, on eectue la srie dinstructions. Si le h 11

est absent, Matlab utilisera un bond de 1 par dfaut. Passons aux exemples. Le premier est le calcul de la somme des 200 premiers entiers. >> % Initialisation de la variable som 0 >> som=0; >> for i=1:200 som=som+i; end; >> som som = 20100 Lautre exemple est la cration dune matrice 5 4 dont chaque entre est la somme du numro de la ligne et de la colonne. On verra alors une double boucle. >> A=zeros(5,4); >> for i=1:5 for j=1:4 A(i,j)=i+j; end; end; >> A A = 2 3 3 4 4 5 5 6 6 7

4 5 6 7 8

5 6 7 8 9

Il est souligner que le pas h peut aussi tre ngatif. Dans ce cas, b > a. Ce sera vu en exercice.

4.2

Boucle while

La boucle while est utilise lorsquun bloc dinstructions doit tre fait rptition jusqu ce quune certaine condition soit atteinte. La forme gnrale est la suivante : while (conditions) instructions; end; 12

Ce que lon doit comprendre de ces lignes, cest que tant que les conditions sont respectes, Matlab recommence le bloc dinstructions. La condition est crite avec laide doprateurs logiques et relationnels. Tous ces oprateurs sont dcrits dans le tableau 4. Regardons un exemple simple, mais instructif. Nous dsirons savoir partir de quel degr le polynme de Taylor approxime la fonction exponentielle en x = 1 avec une erreur infrieure 104 . Rappellons que xk ex = . k!
k =0

>> format short e degre=0; erreur=100;%nimporte quoi tant que cest grand approx=0; while erreur>10^-4 approx=approx+1/factorial(degre);% Ajout dun terme supplmentaire erreur=abs(exp(1)-approx); degre=degre+1;% Augmentation du degr end;% fin de la boucle disp([degr , approximation , erreur]) disp([degre-1,approx, erreur])% -1 car on augmente degre pour rien % la fin %sorties degr 7.0000e+000

approximation 2.7183e+000

erreur 2.7860e-005

Ainsi, il faut un polynme de degr 7 an dobtenir une approximation de e avec une erreur infrieure 104 . Il faut faire attention lorsque lon utilise une boucle while an que la condition darrt soit atteinte ; sinon, Matlab continuera de calculer indniment. Dans ce cas, on arrte la simulation grce la commande Ctrl+c.

4.3

if

Il arrive que nous voulons que Matlab eectue une srie dopration seulement si certains paramtres respectent une ou des conditions. ce moment, on utilise le if. La forme gnrale du if est la suivante : 13

oprateurs relationnels

logiques

commandes <, <=, >, >= A == B A = B A|B A&B A

description les ingalits A gal B A dirent de B A ou B (ou logique) A et B (et logique) non A

Tab. 4 Oprateurs relationnels et logiques. if(condition 1) instructions 1; elseif(condition 2) instructions 2; . . plusieurs elseif . . else instructions sinon; end; Avec ces commandes, Matlab vrie si la condition 1 est sastifaite. Si elle lest, il eectue les instructions 1 et ne passe pas aux suivantes, sinon il vrie si la condition 2 est respecte. Il continue ainsi de suite pour la condition 2 etc. Si aucune condition nest satisfaite, il fait les instructions sous le else. Si ce dernier est absent, Matlab ne fait rien. An de bien comprendre le tout, regardons deux exemples. Le premier est de faire la liste des nombres pairs qui sont des multiples de 3 ou de 5 en les identiant. Ces nombres sont entre 1 et 30. >> for i=1:30 if (mod(i,2)==0) if (mod(i,3)==0 & mod(i,5)==0) s=num2str(i);% Change i en string pour laffichage disp( [s est un multiple de 3 et de 5]) elseif mod(i,3)==0 14

s=num2str(i); disp([s est un multiple de 3]) elseif mod(i,5)==0 s=num2str(i); disp([s est un multiple de 5]) end; end; end; %sorties 6 est un multiple de 3 10 est un multiple de 5 12 est un multiple de 3 18 est un multiple de 3 20 est un multiple de 5 24 est un multiple de 3 30 est un multiple de 3 et de 5 Lautre exemple consiste changer la boucle while pour une boucle for et un if dans le problme de la srie de Taylor de e vu plus tt dans la section de la boucle while. >> approx=0; erreur=100; for i=0:100 approx=approx+1/factorial(i); erreur=abs(exp(1)-approx); if erreur<10^-4 disp([degre , approximation disp([i, approx, erreur]) break; % Arrte la boucle for end; end; %sorties degre approximation erreur 7.0000e+000 2.7183e+000 2.7860e-005

, erreur])

Les rsultats sont videmment les mmes que prcdemment.

15

4.4

Exercices

1. Remplir un vecteur u de longueur 10 avec une boucle for dont les lments vont de 10 1 en ordre dcroissant. 2. Construire une matrice 8 8 dont les lments des lignes paires et des colonnes impaires sont des 4, les autres lments dune ligne paire sont des 3 et ceux qui reste dune colonne impaire sont 2. Les lments restant sont 0. 3. Trouver le degr du polynme de Taylor de la fonction cos(x) autour de 0 tel que lerreur absolue commise en x = 1 est infrieure 105 . 4. Soit le vecteur x = rand(1, 20). Trouver le vecteur y dont les lments sont ceux de x mis en ordre croissant.

Graphiques

Dans cette partie, nous verrons comment tracer dirents graphiques ainsi que divers paramtres qui permettrons de faire une belle prsentation.

5.1

Graphique en 2D

Pour tracer un graphique en 2D avec Matlab, il faut avoir un vecteur de points du domaine et un autre constitu de limage de ces points. Avec cela, on peut tracer le plus simple graphique qui soit avec la commande plot(X,Y). En ajoutant quelques lignes de code, cependant, on peut placer deux graphiques dans la mme gure, ajouter un titre, une lgende et identier les axes. Faisons le graphique des fonctions f (x) = x et g (x) = x2 pour x [1, 1] (Figure 1). X=-1:0.1:1; Y1=X; Y2=X.^2; plot(X,Y1,x-) hold on % Le graphique reste sur la figure % lors de la mise en place du second plot(X,Y2,.-) title(titre) legend(f(x),g(x)) 16

xlabel(lgende de x) ylabel(lgende de y)
titre 1 f(x) g(x) 0.8

0.6

0.4

0.2 lgende de y

0.2

0.4

0.6

0.8

1 1

0.8

0.6

0.4

0.2

0 0.2 lgende de x

0.4

0.6

0.8

Fig. 1 Graphique typique. Il existe dautres paramtres. Il sut de taper help plot an de les trouver. On y trouve galement la faon de mettre les graphiques en couleur et les direntes reprsentations des points. Ici, pour f (x), nous avons plac des x pour ses points et les avons reli par des segments de droites. Pour g (x), ce sont des points relis par des segments.

5.2

Subplot

La commande subplot permet de mettre plusieurs graphiques sur la mme gure : subplot(n,m,p). Le n est le nombre de ligne de graphiques, m le nombre de graphiques par ligne et p est la position du graphique. Il est noter que p est le numro du graphique et ce dernier se compte de gauche droite et de bas en haut comme dans un texte. La gure 2 montre ce que donnent les lignes de code suivantes : 17

>> >> >> >> >> >> >>

X=[0:0.5:2]; Y1=X; Y2=X.^2; Y3=[3,3,3,3,3]; subplot(2,2,1);plot(X,Y1) subplot(2,2,2);plot(X,Y2) subplot(2,2,4);plot(X,Y3)


2 4

1.5

0.5

0.5

1.5

0.5

1.5

3.5

2.5

0.5

1.5

Fig. 2 Graphique cr par la commande subplot. Pour mettre des titres chaque graphique, il sut de mettre la commande vue plus haut aprs le plot. Il en va de mme pour les autres paramtres.

5.3

Exercices

1. Tracer, sur la mme gure, la fonction sin(x) entre [, ] ainsi que les trois premiers polynmes de lapproximation de Taylor autour de 0. Mettre la fonction en rouge. 2. Utiliser subplot an de mettre le graphique de la fonction sin(x) avec son approximation de Taylor et le graphique de lerreur commise cte18

-cte. Faites cela pour les trois premiers polynmes. (Il y aura 6 graphiques sur la mme gure.) 3. Crer deux vecteurs alatoires de 100 points. Faites un nuage de points avec ces vecteurs. Sur le mme graphique, tracer la droite de rgression de cette distribution. (Voir polyt.)

Cration de fonctions

Jusquici, nous avons vu plusieurs fonctions de Matlab. On donne ces fonctions certaines entres et elles nous retournent une ou des sorties. Nous pouvons, nous aussi, crer des fonctions. Pour ce faire, il sut dcrire le code de la fonction dans un diteur de texte. Par la suite, on sauvegarde le chier de la manire suivante : nom_fonction.m. La dernire contrainte est la premire ligne du code qui doit tre function [sortie1,sortie2,..,sortieN]=nom_fonction(entre1,.. entreM) ;. Regardons lexemple dune fonction qui retourne le polynme de Taylor du degr dsir en certains points du domaine de la fonction ex ainsi que lerreur commise en ces points. Le nom du chier est taylorexp.m. Nous tracerons par la suite le graphique de la fonction et de son erreur. >> X=[-1:0.1:3]; >> type taylorexp.m function [serie,erreur]=taylorexp(x,degre); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Cette fonction prend des points x du domaine % % et le degr du polynme de Taylor dsir de % % exp(x) % % et retourne la valeur du polynome aux % % points x et son erreur commise % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% serie=0*x; % Initialisation de serie yexacte=exp(x);% Solution exacte 19

for i=0:degre serie=serie+ (x.^i)/factorial(i); end; erreur=abs(yexacte-serie); >> [sol,err]=taylorexp(X,4);% Appel de la fonction >> y=exp(X);% Solution exacte >> subplot(2,1,1) >> plot(X,y,-.) >> hold on >> plot(X,sol,o-) >> title(polynome de degre 4 et veritable solution) >> legend(sol. exacte,approximation) >> subplot(2,1,2) >> plot(X,err) >> title(erreur en fonction de x)
polynome de degre 4 et veritable solution 25 20 15 10 5 0 1 sol. exacte approximation

0.5

0.5

1.5

2.5

erreur en fonction de x 4

0 1

0.5

0.5

1.5

2.5

Fig. 3 Graphique de lexemple avec la fonction taylorexp.

20

6.1

Exercices

1. Faites une fonction qui donne les zros rels ou complexes dun polynme de degr 2. On doit seulement lui donner les coecients du polynme en entres. 2. Crer une fonction qui prend un vecteur de longueur quelconque et qui met ses lments en ordre croissant. 3. Crer une fonction qui retourne une matrice m n dont les entres sont donnes lexercice 2 de la section 4.4. On donne m et n en entre.

21

Vous aimerez peut-être aussi