Vous êtes sur la page 1sur 24

Universit Louis Pasteur e

L2 MPC/LPA

Cours Intgr de Maple e e

2007-2008

Table des mati`res e


1 Une introduction et sa suite 1.1 Acc`s . . . . . . . . . . . . . e 1.2 Instruction(s), excution(s) et e 1.3 Sauvegarde de chier . . . . . 1.4 Aide . . . . . . . . . . . . . . 1.5 Quelques suites avec Maple . 5 5 5 7 7 7 9 9 11 11 11 12 12 13 14 15 15 15 16 16 17 17 19 19 21 23

. . . . . . rsultat(s) e . . . . . . . . . . . . . . . . . .

. . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . .

2 Variables, fonctions, tableaux et 2.1 Les variables . . . . . . . . . . 2.2 Les fonctions . . . . . . . . . . 2.2.1 Fonctions et expressions 2.2.2 Procdures . . . . . . . e 2.3 Les tableaux . . . . . . . . . . 2.3.1 La commande array . . 2.3.2 Les listes . . . . . . . . 2.4 Boucles et tests . . . . . . . . . 3 Graphiques 3.1 La commande plot . . . . . . 3.1.1 Des fonctions . . . . . 3.1.2 Un ensemble de points 3.1.3 Faire une animation . 3.2 Autres commandes . . . . . . 3.3 Exercices . . . . . . . . . . . . . . . . .

boucles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

4 Quelques complments e 4.1 Rsolution dquations direntielles . . . . . . . . . . . . . . . . . . . . . . . e e e 4.2 Partiel janvier 2007 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.3 Partiel septembre 2007 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

` TABLE DES MATIERES

Chapitre 1

Une introduction et sa suite


Maple est un logiciel de calcul formel : il peut traiter des donnes numriques (entier, rels, e e e complexes...) de prcision arbitraire et aussi des donnes symboliques (polynmes,expressions...). e e o Ce logiciel est galement dot de capacits graphiques. e e e

1.1

Acc`s e

Maple est un logiciel (payant). Il est install sur un syst`me (linux, mac, windows). Il y a e e plusieurs versions ; actuellement la version 11 existe. Sur Univ-R (avez vous un compte ent ?), il y a (normalement) 2 versions : 7 et 9.5. On prf`rera la version 7 qui est moins lourde. On ee y acc`de en cliquant sur Application pdagogique puis Mathematiques et enn Maple 7 (sil y e e a crit Mapple 7, cest une erreur dorthographe : Maple vient du Canada et veut dire rable, e e dont la feuille est dailleurs lemblme de ce pays ; rien-`-voir avec une pomme, donc ; cliquez e a quand mme sur licne, mais ne faites pas la faute dorthographe !). e o

1.2

Instruction(s), excution(s) et rsultat(s) e e

Apr`s un certain temps, vous voyez appara e tre une interface graphique avec un chier nomm Untitled(1) et un curseur qui attend que vous tapiez votre premi`re instruction : e e >2+2; Noubliez pas le ;, car il signie la n de linstruction et que le rsultat sera ach. Ne rajouter e e par linvite de commande > : il est dj` crit et correspond ` un bloc dinstructions qui est eae a excut d`s que lon appuie sur la touche entree. e e e A la place du ;, on peut aussi utiliser le :. Dans ce cas linstruction sera excute, mais non e e ache. Cela peut tre pratique si lon ne veut pas que lordinateur ache plein de rsultats e e e intermdiaires qui ne sont pas utiles. e Lorsque lon appuie sur la touche shift entree, on va ` la ligne sans excuter. Cela permet a e dcrire un bloc dinstructions de mani`re plus claire et vite de devoir appuyer de nombreuses e e e fois sur la touche entree pour arriver au rsultat nal. e Le rsultat de la derni`re instruction est donn par % et celui de lavant-dernier rsultat est e e e e donn par %% (on peut aussi avoir le rsultat de lavant-avant-derni`re opration par %%%). e e e e Pour bien comprendre comment les instructions sont excutes, crivez : e e e 5

6 >1:1: >%+%%;

CHAPITRE 1. UNE INTRODUCTION ET SA SUITE

Vous devez voir ach 2. Revenez au deuxi`me bloc et rappuyez sur entree. 3 est alors e e e ach. Recommencez un certain nombre de fois. Vous tes en train dacher les nombres e e successifs de la suite de Fibonacci dnie par e u1 = 1, u2 = 1, un+1 = un + un1 , n = 2, . . .

Revenez maintenant au premier bloc, appuyez sur entree, puis allez au deuxi`me bloc et e appuyez sur entree. Quel est le rsultat ach, pourquoi ? e e Pour viter davoir ` rptr les mmes instructions, on peut utiliser une boucle e a e ee e >1:1:for i to 10 do %+%%;od; i est une variable qui va de 1 (valeur par dfaut) ` 10 ; tout ce qui est crit entre le do et le e a e od va donc tre excut 10 fois. A la sortie de la boucle (apr`s le od), la variable i vaut 11. e e e e Cest le ; apr`s le od qui dicte sil y a criture ou non. Faites plusieurs essais, en changeant e e les ; en : et vice-versa, pour bien comprendre. e Pour acher seulement le 100 i`me terme de la suite de Fibonacci, on peut donc crire e >1:1:for i to 98 do %+%%;od:%; Une des particularits de Maple est que ce logiciel utilise des valeurs exactes et non approches. e e Ainsi si lon tape >3/2;sqrt(2);Pi; a on nobtient gu`re dinformations sur la valeur numrique de 3/2, 2 ou P i (pensez bien ` e e mettre une majuscule). Pour forcer a valuer numriquement, on peut remplacer les entiers `e e utiliss par des rels. Cela se fait en crivant par exemple 3. (avec un point) au lieu de 3 e e e (sans le point). On peut aussi utiliser la fonction evalf. >3./2;sqrt(2.); ou alors >evalf(3/2);evalf(sqrt(2));evalf(Pi); Par dfaut, MAPLE utilise 10 chires signicatifs ; on peut changer cette valeur en crivant e e par exemple >Digits:=20: Cela veut dire que lon a aect 20 ` Digits, la variable interne (i.e. dnie dans Maple, e a e comme Pi), et cela se traduit par le fait que les calculs vont se faire avec une prcision de 20 e chires signicatifs. Nous voyons donc que Maple nous permet de faire des calculs avec une prcision arbitraire, ce qui nest pas le cas pour la plupart des langages de programmation e tels que C, Fortran, Scilab ou Matlab.
n+1 e Exercice 1. Le nombre dor est donn par 1+2 5 . Il est aussi donn comme la limite de uun , e o` (un ) est la suite de Fibonacci prcdement dcrite. Ecrivez des instructions pour observer u e e e ce phnom`ne numriquement. e e e

1.3. SAUVEGARDE DE FICHIER

1.3

Sauvegarde de chier

Vous avez tap quelques lignes de Maple et vous voulez garder la trace de ce que vous avez e fait. Vous voulez galement rajouter des commentaires, i. e. du texte non excut par Maple. e e e Un commentaire scrit avec #. Ainsi toute la n de ligne apr`s ce symbole ne sera plus lue e e par Maple. Votre feuille Maple peut se prsenter ainsi de la mani`re suivante : e e >#Suite de Fibonacci 1:1:for i to 100 do %+%%;od:%; >#Nombre dOr (exercice 1) 1.:1.:for i to 100 do %+%%;od:%/%%;(1+sqrt(5.))/2; Sauvegarder alors le chier sous la forme NOM.tp1.mws ou NOM.tp1.mw, suivant la version de Maple utilise (pour Maple7, cest .mws). Utilisez toujours la meme version pour un meme e chier ; ainsi si on passe de la version 7 ` la version 9.5, il est possible que le chier ne soit a plus lisible en version 7 par la suite. Sous linux/mac, il est aussi possible dutiliser Maple sans mode graphique : les commandes Maple sont enregistres dans un chier (par exemple tp1.maple) et excutes dans un terminal e e e par maple -q tp1.maple Un intrt est que lexcution est plus rapide, car en mode graphique, lexcution peut tre tr`s ee e e e e ralentie, notamment lors de louverture de la session Maple. Par contre, on perd linteractivit e qui peut tre retrouve en lanant maple et non xmaple depuis un terminal. Dans ce cas e e c nanmoins, on ne peut pas faire de sauvegardes. Enn, en mode non graphique, il est plus e dicile dobtenir des gures (qui sont aches avec des caract`res dans le terminal). On peut e e parer ` cet inconvnient en crant par exemple des chiers jpg. a e e Noubliez pas de sauvegarder rguli`rement votre chier. e e

1.4

Aide

Le logiciel Maple peut tre vu comme une grosse calculatrice et ore de nombreuses e possibilits. Nhsitez pas ` consulter laide (en anglais : cela ne doit pas vous rebuter !). On e e a peut obtenir de laide sur un mot, en tapant ? suivi du mot (tout attach et sans ;). Par e exemple, pour tracer une fonction ?plot

1.5

Quelques suites avec Maple

Exercice 2. Une grenouille assoife cherche une mare pour se dsalterer. Son premier saut e e la porte 1 m`tre plus loin. Comme elle se fatigue a chaque saut, le suivant ne fait que 90% e ` de la longueur prcdente. Sachant que la mare la plus proche est a 9 m`tres de son point de e e ` e dpart, arrivera-t-elle a latteindre ? si oui, en combien de sauts ? e ` Exercice 3. La fonction rand() renvoie un entier positif a 12 chires (au plus), choisi de ` mani`re alatoire. Pour N assez grand, calculer la moyenne obtenue de N appels de cette e e fonction. Que remarque-t-on ?

CHAPITRE 1. UNE INTRODUCTION ET SA SUITE

Exercice 4. Les polynmes de Chebyshev sont dnis par la formule de rcurrence suivante : o e e T0 (x) = 1, T1 (x) = x, Tn+1 (x) = 2xTn (x) Tn1 (x), n 1.

La fonction simplify permet de simplier des expressions algbriques. Ainsi, par exemple e > simplify(2*x*(2*x^2-1)-x); donne pour rsultat 4x3 3x. En utilisant la fonction simplify, calculer alors T9 . Vrier e e le rsultat a laide de la commande e ` >orthopoly[T](9,x); Exercice 5. Calculer exp(1).
N 1 k=0 k! ,

pour N = 5, 10, 20 et comparer avec une valeur approche de e

Exercice 6. La formule de Machin fut dcouverte en 1706 et relie le nombre a la fonction e ` arctangente : 1 1 = 4 arctan arctan . 4 5 239 Dautre part, on a arctan(x) = (1)k x e k=0 2k+1 . En dduire un algorithme pour calculer une valeur approche de , en nutilisant que des oprations lmentaires (+, , , /), et comparer e e ee avec une valeur numrique de P i. On pourra tester direntes valeurs de la variable Digits. e e
2k+1

Chapitre 2

Variables, fonctions, tableaux et boucles


Dans le chapitre prcdent, nous avons vu que Maple nous permet de faire des calculs e e numriques de prcision arbitraire, en rglant la variable Digits convenablement. Nous avons e e e aussi aperu que les calculs peuvent tre faits sur des objets plus formels tels que les poc e lynmes. Pour linstant les calculs ont t faits dans la foule grce ` lutilisation des rsultats o ee e a a e prcdents obtenus par les symboles %,%% et %%%. Cela a dj` permis de faire de nombreux e e ea calculs sur les suites, mais reste nanmoins limit, car pour faire un calcul on peut avoir e e besoin dautres valeurs que celles que lon vient juste dutiliser ! Nous allons maintenant donc introduire dautres notions qui vont permettre de faire des calculs plus volus : les variables, e e les fonctions, les tableaux et les boucles.

2.1

Les variables

Nous avons dj` rencontr quelques variables : Pi,Digits, lindice de boucle i. Contraiea e rement ` dautres langages de programmation, comme le C ou le Fortran, les variables ne sont a pas dclares ` lavance et lutilisateur na pas besoin de prciser le type (rel,entier,caract`re, e e a e e e pointeur...). Il existe des variables prdnies : e e >Pi,Digits,I; I est le nombre complexe i (on a i2 = 1). Certaines de ces variables peuvent tre modies e e (comme Digits) et dautres non (comme I et Pi). Les autres variables sont dnies ` partir du moment o` elles sont aectes. Laectation dune e a u e variable se fait par linstruction := (comme nous lavons dj` vu pour la variable Digits). ea >a:=1:a; La valeur 1 est mise dans la variable a. Il peut parfois tre intressant de librer une variable, e e e cest-`-dire denlever la valeur quelle contenait. Cela se fait ` laide de la fonction unassign. a a >a:=1:a;unassign(a):a; Ainsi, dans cet exemple, a redevient une variable formelle (on pourrait ainsi dnir par e exemple des polynmes en fonction de a, comme cela avait t fait pour les polynmes de o ee o 9

10

CHAPITRE 2. VARIABLES, FONCTIONS, TABLEAUX ET BOUCLES

Chebychev). Pour rinitialiser toutes les variables et tout ce qui a t fait auparavant, on utilise la come ee mande >restart; Reprenons lexemple de la suite de Fibonacci >n:=10:u:=1:v:=1: for i to n-2 do w:=u+v:u:=v:v:=w:od:w; Remarquez quil a t ncessaire dutiliser ici une variable temporaire w. ee e Lorsque lon cherche ` rsoudre un probl`me, celui-ci va gnralement dpendre de quelques a e e e e e param`tres (param`tres physiques, de simulation,. . .), quil est important de bien identier. Il e e est conseill de dnir ces variables param`tres une fois pour toutes au dbut, pour la clart e e e e e et an de pouvoir les modier facilement. Exemple 1. On souhaite comparer lerreur obtenue pour le calcul de
1

exp(x)dx,
0 0

sin(x)dx.

par la mthode des rectangles et la mthode des trap`zes. Lintgrale exacte pour lexponentielle e e e e est donne par e >int(exp(x),x=0..1):evalf(%); La mthode des rectangles dune fonction f sur un intervalle [a, b] est donne par la formule e e ba N
N 1 k=0

f (a + k

ba ), N

tandis que la mthode des trap`zes est donne par e e e ba f (a) + f (b) + 2 2N On peut crire alors le code Maple suivant e >f:=exp:a:=0:b:=1: #cas1 #f:=sin:a:=0:b:=Pi:#cas2 N:=10: int(f(x),x=a..b):Iexact:=evalf(%); a:=evalf(a):b:=evalf(b):dx:=(b-a)/N: #methode des rectangles 0.:a:for i to N do %%+f(%):%%+dx:od: Irect:=%%*dx;Irect-Iexact; #methode des trapezes 0.5*(f(a)+f(b)):a+dx:for i to N-1 do %%+f(%):%%+dx:od: Itrap:=%%*dx;Itrap-Iexact; Ainsi, en commentant/dcommentant la deuxi`me ligne (i.e. en laissant ou en enlevant le e e premier # de la deuxi`me ligne), on peut passer de la premi`re a la deuxi`me intgrale. e e ` e e
N 1 k=1

f (a + k

ba ) . N

2.2. LES FONCTIONS

11

2.2
2.2.1

Les fonctions
Fonctions et expressions

Supposons que lon veuille dnir la fonction f (x) = x2 + 1, an de calculer par exemple e son intgrale, comme dans lexemple prcdent. Pour cela, il y a deux mani`res de faire : soit e e e e on crit e >f:=x->x^2+1: et dans ce cas, pour valuer la fonction en un point, par exemple pour x = 0.1, on crit e e >f(0.1): soit, on consid`re lexpression e >f:=x^2+1: et dans ce cas, pour valuer lexpression en x = 0.1, on crit e e >subs(x=0.1,f); Remarquons que lon peut passer dune forme ` lautre : a >f:=x^2+1:f:=unapply(f,x); >f:=x->x^2+1:f:=f(x); Notons que dans le cas dune fonction la variable est muette ; on peut la changer sans changer la dnition (on aurait pu crire par exemple f :=y->y^ 2 ;). Ceci nest pas vrai pour e e une expression o` il faut faire attention que la variable utilise soit libre (on peut toujours u e librer une variable avec unassign, comme nous lavons dj` vu). En gnral, on prf`rera les e ea e e ee expressions qui sont des objets plus simples. Exercice 7. Modier lExemple 1, pour pouvoir traiter le calcul de
1 1

1 dx, 1 + x2

1 1

exp(x2 )dx.

On traitera le cas o` lon utilise des fonctions et le cas o` lon utilise des expressions. u u

2.2.2

Procdures e

Lorsque lon veut faire plusieurs calculs avec des param`tres dirents, il peut tre intressant e e e e denglober le calcul dans une procdure. Cet objet se prsente de la mani`re suivante : e e e >toto:=proc(f,N) local i,tmp; tmp=0.; for i to N do tmp:=tmp+evalf(subs(x=i/N,f)):od: tmp/N; end proc: > f:=x^2:N:=10:toto(f,N);N:=20:toto(f,N);f:=exp(-x^2):toto(f,N);N:=40:toto(f,N);

12

CHAPITRE 2. VARIABLES, FONCTIONS, TABLEAUX ET BOUCLES

Pour le premier >, on dnit la fonction ; toto est le nom, f,N sont des variables param`tres e e qui sont utilises dans la procdure, i et tmp sont des variables locales cest-`-dire quelles e e a nexistent qu ` lintrieur de la procdure. Le dernier rsultat avant la n de la procdure a e e e e (matrialis par end proc :) est ce qui sera renvoy par la procdure lors de lappel. e e e e Pour le deuxi`me >, on appelle la fonction avec dirents param`tres. e e e Exercice 8. Ecrire une procdure rect(f,a,b,N) et trap(f,a,b,N) qui calcule lintgrale e e dune fonction f sur un intervalle [a, b], avec respectivement la mthode des rectangles et des e trap`zes. La tester pour dirents param`tres. e e e

2.3

Les tableaux

On a vu que pour lon pouvait calculer les termes dune suite a laide de variables. ` Considrons maintenant la suite dnie de la mani`re suivante : e e e 1 c1 = , 7 5k + 9 ck = 6
k1

jcj ckj +
j=1

1 3

k1

cj ,
j=1

k 2.

e Nous voyons que pour calculer le ki`me terme ck , nous avons besoin de tous les termes prcdents ck1 , . . . , c1 . Nous avons donc besoin de stocker ces valeurs une fois quelles sont e e calcules. e

2.3.1

La commande array

Pour cela, nous pouvons utiliser un tableau par la commande >N:=100:c:=array(1..N): Cela veut dire que lon a rserv des variables c1 , . . . , cN que lon pourra aecter par la suite. e e On peut crire ainsi : e c[6]:=1: Notons que les variables peuvent tre de nimporte quel type ; en particulier, lespace occup e e par les variables non encore aectes nest pas allou, mais sera allou lors de laectation. e e e Remarque 1. Lorsque lon connait la taille des objects, on peut parfois rserver a lavance e ` la place mmoire. Cela peut augmenter les performances pour le temps dacc`s au tableau. e e Nanmoins, on ne connait pas toujours la place occupe par les variables (par exemple, cere e tains entiers peuvent tre tr`s grands et ncessiteront donc beaucoup de stockage). Le lecteur e e e intress pourra consulter laide sur la commande rtable. e e Un intrt de la commande array est que lon peut faire commencer et terminer les indices ee o` lon souhaite. Ainsi, on peut crire u e >deb:=-10:fin:=15:c:=array(deb..fin): On peut galement indicer les tableaux en plusieurs dimensions e >N:=10:M:=12:L:=array(1..N,1..M):

2.3. LES TABLEAUX Lacc`s se fait alors par L[i,j]. Pour calculer la suite prcdente, on peut donc crire. e e e e N:=30:L:=array(1..N):L[1]:=1/7: for k from 2 to N do S:=add(L[j],j=1..k-1):T:=add(j*L[j]*L[k-j],j=1..k-1): L[k]:=(6/(5*k+9))*(T-S+1/3); od:evalf(%);

13

On a utilis ici la commande add qui fait la somme des lments de la liste (on aurait aussi e ee pu utiliser la commande for) et on a utilis from, pour faire commencer k par 2 et non la e valeur 1 par dfaut. e Pour acher tous les lments du tableau, on peut crire ee e >eval(L);

2.3.2

Les listes

On peut aussi dnir des tableaux par des listes de la mani`re suivante : e e L:=[1,4,7]; Un intrt est la dclaration qui est plus simple. On peut aussi accder au nombre dlments ee e e ee a ` laide de la commande nops >nops(L); La fonction nops compte le nombre doprandes de l objet L et les oprandes sont donnes e e e par la fonction op. Lachage de toute la liste se fait tout simplement en crivant e >L; Attention, dans une liste, les indices commencent par 1 : >L:=[3,6,7]:L[1];op(1,L); La valeur 3 est ici ache, puisque cest le premier lment de la liste, qui est aussi la premi`re e ee e oprande de L. e Notons aussi quune liste est une squence entre crochets et pour gnrer une squence, il est e e e e commode dutiliser la commande seq L:=[seq(i*i,i=1..5)]; Exercice 9. Calculer c200 lorsque c1 vaut 1/7 et 1./7, en mettant ces deux valeurs initiales dans une liste et on souhaite avoir le rsultat sous forme dune liste. e De mani`re gnrale (aussi en voyant lexercice prcdent), on prferera utiliser array pour e e e e e e des grands tableaux et des listes pour des petits tableaux (qui peuvent tre une liste de e param`tres ` tester, que lon mettra de prfrence au dbut du programme ). e a ee e Remarquons aussi la commande map qui applique une fonction ` une liste (ou un array) : a >N:=10:L:=[seq(k/N,k=0..N)]:f:=x->exp(x):fL:=map(f,L):

14

CHAPITRE 2. VARIABLES, FONCTIONS, TABLEAUX ET BOUCLES

2.4

Boucles et tests

Pour diverses raisons, on peut avoir besoin dexcuter une instruction que sous certaines e conditions. Prenons lexemple de la recherche dichotomique. On se donne une fonction continue sur un intervalle [a, b] tel que f (a) > 0 et f (b) < 0. On sait alors quil existe une racine de f sur lintervalle [a, b], cest-`-dire un nombre x [a, b] tel que f (x) = 0. La recherche a dichotomique permet alors de trouver une racine note x dans cet intervalle. On regarde e le signe de f ((a + b)/2), an de savoir si x [a, (a + b)/2] ou si x [(a + b)/2, b]. On recommence ensuite ce procd jusqu` lobtention dun intervalle assez petit pour avoir une e e a bonne approximation de x. On peut alors dnir la procdure suivante. e e >dicho:=proc(aa,bb,eps,Nmax,f) local fa,fb,err,i,c,a,b;a:=evalf(aa):b:=evalf(bb): fa:=evalf(subs(x=a,f));fb:=evalf(subs(x=b,f));err:=fa;i:=0: if(fa*fb>0) then error "Mauvais intervalle\n";end; while((abs(err)>eps) and (i<Nmax)) do c:=0.5*(a+b):err:=evalf(subs(x=c,f)): if(err<0) then b:=c:fb:=err:else a:=c:fa:=err:fi: i:=i+1: od: i,c,evalf(subs(x=c,f)); end proc: On a ici utilis linstruction conditionnelle if, la boucle while. Notez la syntaxe : e if (..) then .. else .. fi: while (..) do .. od: On a aussi utilis linstruction error suivie dune cha de caract`res qui est le message e ne e derreur. Lorsque lon est dans cette situation, le message derreur est renvoy et le reste de la e procdure nest pas excut (on sort de la procdure). Le symbole apr`s intervalle signie e e e e e que lon va ` la ligne. On a aussi utilis le signe logique and (et). Dans ce contexte, on pourra a e aussi utiliser les symboles ou, dirent, gal, ngation : e e e or,<>,=,not En particulier, on ne confondra pas le symbole = de test dgalit entre deux objets avec le e e symbole := qui est laectation dune variable. Exercice 10. Grce a la fonction prcdente, trouver une approximation de lunique solution a ` e e de lquation e tan(x) = x, pour x ]/2, 3/2[. Modier le code prcdent pour pouvoir traiter le cas o` f (a) < 0 et e e u tester sur un exemple. Comparer avec le rsultat obtenu par fsolve. e

Chapitre 3

Graphiques
Dans le chapitre prcdent, nous avons vu les principales bases pour faire un calcul. Avec e e certains param`tres dentre, on est capable de faire une suite dinstructions qui aboutit ` e e a un rsultat qui se prsente gnralement sous la forme dun ou plusieurs nombres ou dune e e e e expression formelle (comme un polynme). Pour rpondre a un probl`me donn, le rsultat o e ` e e e peut se prsenter come une suite importante de nombres quil est alors commode de visualiser e a ` laide dun outil graphique. Nous allons voir ici comment visualiser de rsultats en 1D, e 2D, 3D et comment faire des animations. Un autre point est de savoir comment stocker des informations.

3.1
3.1.1

La commande plot
Des fonctions

On peut visualiser des fonctions par : >f:=sin(4*x):plot(f,x=0..2*Pi); >f:=x->sin(4*x):plot(f,0..2*Pi); Dans le premier cas, on utilise la forme expression tandis que dans le deuxi`me cas, il sagit e de la forme fonction. On peut aussi visualiser plusieurs graphiques en mme temps ; cela peut e tre extrmement utile lorsque lon veut faire une comparaison. Pour cela, on utilise e e >plot([sin,cos],x=0..Pi,color=[red,blue],legend=["sin","cos"]); Remarquez les options utilises pour bien distinguer les courbes, grce aux couleurs et ` la e a a lgende. e
e Exercice 11. A laide de la fonction plot, localiser le 5i`me zro strictement positif de la e 2 pr`s ; vrier le rsultat avec fsolve. fonction x tan(x), a 10 ` e e e

Un autre moyen de dessiner deux courbes en mme temps est dutilise la fonction display e qui fait partie de la libraire plots. Pour cela, on charge dabord la librairie en crivant e >with(plots): Puis, on dnit les deux graphiques de chaque courbe avant de crer la graphique qui contiene e dra les deux courbes. >G1:=plot(sin,0..Pi,color=red,legend="sin"):G2:=plot(cos,0..Pi,color=blue,legend="cos"): display(G1,G2); 15

16

CHAPITRE 3. GRAPHIQUES

3.1.2

Un ensemble de points

On peut aussi dessiner un ensemble de points, ce qui peut tre utilis si on connait la e e fonction cherche seulement en un nombre ni de points. Pour cela, la commande est la e suivante >plot([[0,0.5],[1,0.2]]); Ainsi les points (0, 0.5) et (1, 0.2) sont relis par un segment (on peut ne tracer que les points e en rajoutant loption style=point). Exercice 12. Tracer sur un mme graphique la fonction sin avec une rsolution de 10 points e e et de 20 points, avec une lgende. Comparer avec e plot(sin,0..2*Pi,adaptive=false,numpoints=10); On peut galement tracer des courbes paramtres de la forme (x(t), y(t)) ; par exemple, e e e pour dessiner le cercle de centre (0, 0) et de rayon 1, on crit e plot([cos(t),sin(t),t=0..2*Pi],scaling=constrained); Loption est mise pour que les axes soient les mmes (sinon, on aurait une ellipse !). e

3.1.3

Faire une animation

Il peut tre intressant de vouloir dessiner lvolution dun graphique ; cela sobtient fae e e cilement avec la fonction display, en rajoutant loption insequence=true : on dnit tout e dabord la liste dimages et on appelle ensuite la fonction display que lon applique ` cette a suite. En cliquant sur limage, on voit ensuite appara des boutons play, pause,. . . qui pertre mettent de contrler lanimation. o Prenons lexemple de la cycloide : il sagit du mouvement dun point x ` un cercle qui roule ea sans glisser sur une droite. Regardez ce que fait ce code et cherchez ` comprendre toutes les a instructions. n:=50:R:=5:nbt:=2: t:=0:dt:=nbt*2*Pi/n: G:=[seq(0,k=1..n)]:G0:=plot([[0,0],[nbt*2*Pi*R,0]],color=black): for k to n do t:=t+dt: G1:=plot([R*(cos(s)+t),R*(sin(s)+1),s=0..2*Pi],color=red): G2:=plot([R*(s-sin(s)),R*(1-cos(s)),s=0..t],color=blue): G3:=plot([[R*(t-sin(t)),R*(1-cos(t))]],thickness=2,style=point,color=red): G[k]:=display([G0,G1,G2,G3]): od:display(G,insequence=true,scaling=constrained,axes=none); Exercice 13. Hypo/picycloides e 1. Tracez un cercle de rayon 1 et de centre (0, 0). 2. Soit R = 0 un nombre et t [0, 2]. On consid`re le cercle de rayon |R| et de centre e ((R + 1) cos(t), (R + 1) sin(t)). Que reprsente ce cercle par rapport au cercle de la question e 1, suivant le signe de R ? Que se passe-t-il lorsque t varie ? Faites une animation. 3. On consid`re la courbe dnie sur [0, t] par e e x(s) = (1 + R) cos(s) R cos((1/R + 1)s), y(s) = (1 + R) sin(s) R sin((1/R + 1)s).

3.2. AUTRES COMMANDES Rajoutez cette courbe a lanimation prcdente. ` e e 4. Comme dans le cas de la cycloide, rajoutez le point rouge. Exercice 14. On cherche un nombre L > 0 vriant e L= gT 2 2d tanh , 2 L

17

avec g = 9.81, tandis que T et d sont des param`tres qui varient. e 1. Pour un jeu de param`tres T, d, trouvez L a laide de la fonction dicho (que lon pourra e ` lg`rement modier). e e 2. Calculez lerreur maximale commise par rapport a la solution exacte obtenue a laide de ` ` fsolve. 3. Pour une valeur de T donne, fates une reprsentation de L en fonction de d. e e 4. Pour une valeur de d donne, fates une reprsentation de L en fonction de T . e e 5. Superposez plusieurs graphiques prcdents pour des valeurs de T direntes. e e e

3.2

Autres commandes

Il existe de nombreuses autres possibilits pour faire des graphiques : implicitplot,plot3d. e Il peut tre utile galement de sauvegarder des informations dans un chier pour pouvoir les e e utiliser plus tard, soit avec le mme logiciel ou mme avec dautres logiciels. e e Pour cela, on consultera la commande fprintf. On peut aussi sauvegarder des graphiques en format eps ou jpg. Voici quelques instructions qui peuvent tre utiles si lon veut par exemple utiliser Maple e sans mode graphique et avoir quand mme la possibilit de visionner des graphiques (sans e e animations nanmoins). e interface(plotdevice=ps,plotoutput=toto.ps); with(plots): plotsetup(ps); plot(sin,x=0..2*Pi); quitplotsetup(): system("xv toto.ps&"): la derni`re ligne permet de visualiser le chier ps avec le logiciel xv (qui doit tre install). e e e

3.3

Exercices

Exercice 15. Polynmes de Lagrange Etant donns un intervalle I = [a, b], une fonction o e f dnie sur I et un ensemble de k + 1 points {xn }n=0...k avec xn I n = 0 . . . k ; on dnit e e linterpole de Lagrange de f sur lensemble {xn }n=0...k comme lunique fonction polynmiale e o P de degr infrieur ou gal a k vriant e e e ` e P (xn ) = f (xn ) n = 0 . . . k.

Le programme suivant calcule linterpolation de Lagrange, grce a la fonction interp. a `

18

CHAPITRE 3. GRAPHIQUES

>restart:with(plots): >f:=exp(x):N:=3:a:=0:b:=1:#parametres h:=(b-a)/N:L:=[seq(a+k*h,k=0..N)]: g:=unapply(f,x):Pf:=interp(L,map(g,L),x): seq(subs(x=L[k],Pf-f),k=1..N+1); plot(f-Pf,x=a..b); >G1:=plot(f,x=a..b,color=blue):G2:=plot(Pf,x=a..b,color=red): display([G1,G2]); Que reprsentent h, le premier et le deuxi`me graphique ? Essayer avec dautres param`tres. e e e Modier le programme pour pouvoir faire une animation suivant le nombre de points de discrtisation. e Exercice 16. : La marche de livrogne Supposons quun ivrogne marche dans une rue droite et fait un pas a chaque seconde : ` tantt vers la gauche et tantt vers la droite de mani`re alatoire. On va aussi supposer quil o o e e peut rester immobile. Les 100 premiers pas de livrogne peuvent se modliser ainsi : e > hasard:=rand(-1..1): > positionivrogne:=0: > for k from 1 to 100 do a:=hasard(): positionivrogne:= positionivrogne + a: enddo; > positionivrogne; Voir laide sur la fonction rand() si ncessaire. Modions le programme prcdent an de e e e conserver en mmoire chacune des positions de livrogne : e > hasard:=rand(-1..1): > positionivrogne:=0: > for k from 1 to 100 do a:=hasard(): positionivrogne:= positionivrogne + a: position[k]:=positionivrogne: enddo; > positionivrogne; > l:=[seq([n,position[n]],n=1..100)]: > plot(l,0..100); Modliser une marche alatoire dans le plan. On stockera les positions successives de e e livrogne pour en tracer un graphique. Quelle est alors la distance parcourue par livrogne ? Quelle distance le spare de son point dorigine ? e

Chapitre 4

Quelques complments e
4.1 Rsolution dquations direntielles e e e

On souhaite simuler le dplacement x(t) dune masse accroche ` un ressort. Par applicae e a tion du thor`me de Newton, on obtient lquation direntielle : e e e e d d2 x(t) + x(t) + kx(t) = 0 2 dt dt Maple poss`de dirents outils permettant la rsolution dquations direntielles, comme la e e e e e commande dsolve ou encore la fonction odeplot pour la visualisation des solutions (voir laide sur ces deux fonctionnalits). e Dans un premier temps, on dnit lquation direntielle. Il existe plusieurs mani`res de e e e e dnir une drive. On utilisera de prfrence les commandes D ou diff. La drive dune e e e ee e e fonction f(x) est alors : diff(f,x) ou D(f). La drive de f en x=0 est D(f)(0). La drive e e e e seconde scrit par exemple diff(f(f,x,x) ou encore diff(f,x$2) (dautres formulations e sont donnes dans laide). e Lquation direntielle est donne ainsi : e e e m ressort:={m*diff(x(t),t,t)+alpha*diff(x(t),t)+k*x(t)=0}; Puis les dirents param`tres sont xs : la masse m, le coecient de frottement et la e e e raideur du ressort k : m:=2:alpha:=0.5:k:=5: On dnit galement les conditions initiales. A linstant initial, le ressort a une longueur l e e (soit x(0) = l) et une vitesse nulle (soit dx(0) = 0). De mani`re ` changer plus facilement les e a dt conditions initiales, on peut dnir une fonction CI telle que : e CI:=(a,b)->{x(0)=a, D(x)(0)=b}; On constatera que lquation direntielle et ses conditions initiales sont dnies comme des e e e ensembles (entours de {}), la commande dsolve ncessitant cette syntaxe. e e Enn on peut rsoudre lquation direntielle : e e e sol:=dsolve(ressort union CI(0.5,0), x(t), numeric); 19

20

CHAPITRE 4. QUELQUES COMPLEMENTS

Loption numeric indique que la solution de lquation est approche par une mthode e e e numrique e Grce ` la commande odeplot, on peut reprsenter le mouvement du ressort dans le temps : a a e odeplot(sol, [t, x(t)], 0..10, numpoints=400); et aussi modliser ltat du syst`me dans lespace des phases : e e e odeplot(sol, [x(t), diff(x(t),t)], 0..10, numpoints=400); Exercice 17 (Le pendule simple rigide). On souhaite simuler le mouvement dun pendule simple. On rappelle que lquation direntielle rgissant le mouvement est : e e e d d2 2 (t) + 2f (t) + w0 sin((t)) = 0 2 dt dt o` w0 est la pulsation propre du pendule et f le coecient de frottement (on donnera w0 = 1 u et f = 0.1). De plus on suppose qu` linstant initial, le pendule est forme un angle de 1.5rad avec laxe a vertical et que la vitesse angulaire vaut 2. Comme prcdemment, rsoudre lquation direntielle et donner une reprsentation grae e e e e e phique de la trajectoire et de ltat du syst`me dans lespace des phases. e e Exercice 18 (Attracteurs de Lorenz). On consid`re un uide chau (par exemple, de lair e e au dessus dun radiateur). Lair chaud tant moins dense que lair froid, il monte. En mone tant, il se refroidit et redescend. Le mouvement du uide sorganise autour de rouleaux dits de convection. Dapr`s le mod`le de Lorenz, ces rouleaux sont parall`les et tournent en sens e e e inverse lun de lautre. La position (x(t), y(t), z(t)) dun lment du uide est dcrite par le syst`me direntiel suiee e e e vant : d dt x(t) = s(y(t) x(t)) d dt y(t) = rx(t) y(t) x(t)z(t) d dt z(t) = x(t)y(t) bz(t)

o` s, r et b dpendent du volume chau et du mode de chauage (on choisit s = 10, r = 28, u e e 8 b = 3 ). On souhaite visualiser la trajectoire dun lment. Pour ce faire : ee 1. Utiliser le package DEtools, qui ore plus de fonctionnalits quant a la manipulation e ` dquations direntielles e e

2. Dnir le syst`me dquations direntielles (comme une suite, et non plus comme un e e e e ensemble, i. e., on ne met pas les accolades) et stocker cette suite dans la variable Lorenz 3. Dnir les conditions initiales (galement comme une suite) en posant x(0) = y(0) = e e z(0) = 1 et stocker cette suite dans la variable CI 4. Utiliser la fonction DEplot3d pour reprsenter la trajectoire : e DEplot3d({Lorenz},[x(t), y(t), z(t)], t=0..100, stepsize=0.01, [[CI]], orientation=[-35,75], linecolor=t, thickness=1);

4.2. PARTIEL JANVIER 2007

21

4.2

Partiel janvier 2007

Exercice 19. Rcrire les fonctions suivantes en MAPLE c : ee - abs, la valeur absolue dun rel. e - max, qui dtermine le maximum entre deux rels. e e - Heaviside, la fonction de Heaviside qui vaut 0 quand x < 0 et 1 quand x 0. Ecrire une version simplie de sum qui prenne en argument une fonction f et un entier n e n et qui retourne i=1 f (i). Comment calculer en MAPLE c limx0 Exercice 20. On donne la procdure e fact:=proc(n::nonnegint) local resu,y; y:=n; while y>0 do resu:=resu*y; y:=y-1; end do; return resu; end proc; Pourquoi cette procdure ne retourne-t-elle pas n! (la factorielle de n) ? (justier) e Modier cette procdure pour que celle-ci retourne n! si n est pair et n! si n est impair. e Donner une version de la factorielle en utilisant linstruction for. Exercice 21. On dnit les polynmes de Chebyshev par la formule suivante pour n 0 : e o Tn (x) = cos(n arccos(x)). On dmontre que ces polynmes vrient la relation de rcurrence suivante : e o e e Tn (x) = 2xTn1 (x) Tn2 (x). En utilisant cette relation, crire une procdure rcursive qui permette de calculer Tn (x). e e e Exercice 22. Dnissez a laide des commandes maple la fonction f suivante : e ` f (t) =
n=1 sin x x

2(1)n+1 sin(nt) n

Quelle ligne de commandes permet de tracer cette fonction sur lintervalle [, ]. Exercice 23. Soit les trois fonctions de trois variables : f [1](x[1], x[2], x[3]) = x[1] + 2x[2] + 5x[3] 1 f [2](x[1], x[2], x[3]) = x[2]x[3]2 2 f [3](x[1], x[2], x[3]) = x[3]5 5

22

CHAPITRE 4. QUELQUES COMPLEMENTS

On dnit la matrice Jacobienne (MJ ) associe a ces trois fonctions par : e e ` (MJ )i,j = df [i] dx[j]

Le but de lexercice est dutiliser la mthode de Newton-Raphson pour rsoudre ce syst`me e e e dquations. e La mthode de Newton-Raphson est une mthode itrative distine a rsoudre les syst`mes e e e e ` e e dquations non-linaire. e e On dcrit lalgorithme de la mthode de Newton-Raphson comme suit : e e Soient (x0 , y0 , z0 ) une donne initiale. e Rsoudre le syst`me matriciel (S) dinconnues t n , Yn , Zn ) : e e (X Xn f [1](xn , yn , zn ) MJ (xn , yn , zn ) Yn = f [2](xn , yn , zn ) , f [3](xn , yn , zn ) Zn o` MJ (xn , yn , zn ) dsigne lvaluation de la matrice Jacobienne MJ en (xn , yn , zn ) u e e (xn+1 , yn+1 , zn+1 ) = (xn , yn , zn ) + (Xn , Yn , Zn ) arrt de lalgorithme si |(xn+1 , yn+1 , zn+1 ) (xn , yn , zn )| < , e o` dsigne un param`tre ayant pour vocation a tre petit. u e e `e 1. Dnir en MAPLE c les trois fonctions f 1, f 2 et f 3 ; e 2. Ecrire une procdure qui, prenant pour arguments ces trois fonctions, retourne la mae trice Jacobienne MJ . 3. Ecrire une procdure qui, prenant pour arguments les trois fonctions , la matrice Jacoe bienne et un triplet (xn , yn , zn ), rsoud le syst`me S. e e 4. Ecrire nalement une succession de commandes MAPLE c , utilisant les procdures e pralablement dnies, pour rsoudre le syst`me E par lalgorithme de la mthode de e e e e e Newton-Raphson.

et le syst`me dquations suivant : e e f [1](x, y, z) = 0 f [2](x, y, z) = 0 f [3](x, y, z) = 0

4.3. PARTIEL SEPTEMBRE 2007

23

4.3

Partiel septembre 2007


1. Expliquez quelle est la dirence entre les commandes suivantes : e (a) > P:=x^3-2*x^2+3*x; (b) > solve(x^2-x-1,x);

Exercice 24.

2. Pourquoi les commandes suivantes renvoient-elles un message derreur ? (a) > I:=matrix(3,3,[a,b,c,d,e,f,g,h,i]); (b) > i:=matrix(3,3,[a,b,c,d,e,f,g,h,i]); Exercice 25. Ecrire une boucle qui ache a lcran la somme ` e
k n=1

1 + 2 + + n 1n + 2n + + nn

pour les k paires de 1 a 100 ` Exercice 26. On consid`re la procdure suivante e e >blob:=proc(S) >global T: >local i,n,temp: >n:=nops(S): >temp:=S[n]: >for i from n to 2 by -1 do >T[i]:=S[i-1]: >end do: >T[1]:=temp: >return T: >end proc; Quels seront les rsultats des commandes suivantes : e i. >T:=[1,2,3,4]; >blob(T); ii. >T:=[1,2,3,4]; >blob(blob(T)); iii. >T:=[1,2,3,4]; >blob(T); >blob(blob(T)); Exercice 27. Ecrire une procdure SecDeg(a, b, c) qui rsout lquation du second degr a e e e e ` coecients rels ax2 + bx + c = 0 en distinguant 3 cas selon le signe du discriminant. e Exercice 28. On dnit des entiers truc(k, n), o` n est un entier positif ou nul et k est un e u entier quelconque, par la procdure rcursive suivante : e e >truc:=proc(k,n) >option remember: >local i,n,temp:

24 >if (n=0) then >return k; >else >truc(k,n-1)+truc(k-5,n-1); >end if >end proc; Que vaut truc(2, 3). Exercice 29.

CHAPITRE 4. QUELQUES COMPLEMENTS

o` a, b, x0 et x1 sont des rels donns (b = 0). u e e

On appelle suite rcurrente dordre 2 toute suite dnie de la mani`re suivante e e e un = aun1 + bun2 , n 2 u = x0 0 u1 = x1

1. Ecrire une boucle qui permet de stocker dans une squence les 101 premiers termes e dune telle suite. 2. On appelle polynme caractristique associ a la suite le polynme o e e` o X 2 aX b. Si ce polynme admet deux racines relles distinctes r1 et r2 alors un est aussi determin o e e explicitement sous la forme n n un = r1 + r2 o` et sont deux rels a dterminer a partir des donnes initiales x0 et x1 ; plus u e ` e ` e prcisment et sont solutions du syst`me e e e + = x0 . r1 +r2 = x1 Donner une succession de commandes MAPLE qui permet : (a) de dterminer les racines du polynme caractristique (la commande solve(eqn,var) e o e renvoie les solutions de lequation eqn en fonction de la variable var sous la forme dune structure de liste), (b) de dterminer et (pour assigner les solutions dun syst`me utiliser la commande e e assign(S), o` S dsigne la solution du syst`me), u e e (c) de vrier si la suite dnie de mani`re explicite est bien gale (pour les 101 e e e e premiers termes) a la suite dnie par rcurrence. ` e e 3. Dterminer a la main r1 , r2 , et pour la suite de Fibonacci et vrier que les deux e ` e formes (explicite et rcurrente) correspondent sur u0 , u1 et u2 . e