Atelier : L'Enseignement de l'analyse, avec Maple, aux étudiants en Maths (en licence, maitrise ou prépa Agreg). Michel Mizony Note 1 : tous les résultats des instructions ne sont pas affichés, afin de ne pas trop alourdir ce bref compte-rendu. Note 2 : Ici l'illustration est faite avec le logiciel Maple car c'est le logiciel de calcul formel que les candidats à l'agrégation doivent utiliser pour passer une des épreuves. Mutatis mutandis, ces exemples peuvent s'écrire avec d'autres logiciels (Mupad, Matematica, etc). Note 3 : Les exemples traités ont comme but non seulement une bonne utilisation d'un logiciel de calcul formel, mais encore de revenir sur des concepts mathématiques et donc de ``faire des maths''. Par ailleurs, je vois mal comment faire comprendre des choses profondes sans ^etre devant un écran de travail avec de tels logiciels. 1- Verifier Calcul de la limite en 0 de la fonction suivante: >f:=x -> (sinh(sin(x))-sin(sinh(x)))/(tan(tanh(x))-tanh(tan(x))); sinh(sin(x)) - sin(sinh(x)) f := x -> --------------------------- tan(tanh(x)) - tanh(tan(x)) >limit(f(x),x=0); # reponse :1/2 Comment vérifier ? voici une vérification possible : >Num:=op(1,f(x)):Den:=1/op(2,f(x)): >taylor(Num,x,15),taylor(Den,x,15); 7 11 15 7 26 11 15 1/45 x - 1/1575 x + O(x ), 2/45 x - ---- x + O(x ) 4725 Trouver une autre vérification. Que pensez de la réponse à l'instruction suivante ? >Limit(a*sin(x),x=infinity)=limit(a*sin(x),x=infinity); lim a sin(x) = min(a, -a) .. max(a, -a) x -> infinity Maple répond par l'ensemble des valeurs d'adhérence, ici un segment; ainsi la procédure limit calcule les valeurs d'adhérence et si il y en a une seule, cette procédure donne la limite. Cet exemple permet aux étudiants de retravailler sur un concept qu'ils n'ont pas beaucoup d'occasions de manipuler. (Par ailleurs, pour beaucoup d'instructions concernant l'analyse, celle avec une majuscule copie sans calculer, celle avec une minuscule écrit le résultat.) On considère la fraction rationnelle R=(X^6+1)/(X^5+X^2+2) ; Calculer une primitive de R. >R:=(X^6+1)/(X^5+X^2+1);P:=int(R,X=0..x); Que penser de ce résultat ? est-il effectif ? Quelles vérifications ? >plot(P,x=-1..1); >normal(diff(P,x)); Pour cette fraction, Maple ne sait pas trouver les zéros du dénominateur. Et pourtant il donne une primitive; il faut avoir le reflexe de vérifier, en dérivant par exemple, que le résultat est correct. Cet exemple est destiné \`a faire comprendre que la boite noire ``int'' du logiciel Maple n'utilise pas forcemment la décomposition en éléments simples pour intégrer les fractions rationnelles. 2- réagir (sur Maple V.5) Trouver plusieurs méthodes pour calculer l'intégrale de 0 à 2Pi de (x-Pi)/(2+cos(x)) et comparer les résultats >f:=(x-Pi)/(2+cos(x));int(f,x=0..2*Pi); >plot(f,x=0..2*Pi); >g:=subs(x=y+Pi,f);int(g,y=-Pi..Pi); Pourquoi la première réponse est-elle fausse ? >int(f,x); Maple a intégré dans les complexes, ...avec une détermination du logarithme non usuelle. >int(g,y); calculer la fonction définie par l'intégrale de ln(x^2 +2xcos(t)+1), t variant de 0 à 2Pi. 3- "théorèmes Maple" - a) Calculer la limite, lorsque y tend vers 0 de l'intégrale de ay à by d'une fonction formelle f, où a et b sont fixés. b) Calculer cette limite lorsque f(x)=sin(x)/x^2 quelle conclusion s'impose ? Ecrire le "théorème Maple" sous-jacent. >restart: >Theoreme:=Limit(Int(f(x),x=a*y..b*y),y=0)=limit(int(f(x),x=a*y..b*y),y=0); b y / | Theoreme := lim | f(x) dx = 0 y -> 0 | / a y >f:=x->sin(x)/x^2:Theoreme; b y / | sin(x) lim | ------ dx = 0 y -> 0 | 2 / x a y >Limit(Int(f(x),x=a*y..b*y),y=0)=limit(int(f(x),x=a*y..b*y),y=0); b y / | sin(x) lim | ------ dx = ln(b) - ln(a) y -> 0 | 2 / x a y On ne peut évidemment pas permutter limite et intégrale. Riemann ou Lebesgue ? Soit IA la fonction indicatrice de A, une partie de R, et g et h deux fonctions. Calculer la fonction c -> intégrale de 0 à c de g(x)I(R-Q)+h(x)IQ ; A-t-on la formule (générique pour Maple} : diff(int(f(x),yo..y),y)=f(y) ? Conclusions. >f:=proc(x) if type(x,rational) or type(x,float) then h(x) else g(x) fi end: >seq(f(1/n),n=1..5),f(Pi); h(1), h(1/2), h(1/3), h(1/4), h(1/5), g(Pi) F:=c->int(f(x),x=0..c),F(c),evala(subs(g(x)=x,F(c))); c / | F := c -> | f(x) dx | / 0 c / | 2 | g(x) dx, 1/2 c | / 0 >subs(y=1/2,diff(F(y),y));D(F)(1/2),D(F)(e); g(1/2) h(1/2), g(e) Commentaires ...Il y a une différence entre diff et D. (donc deux "théorèmes" sous-jacents). 4- Du générique au particulier, exemple de l'équation hypergéométrique: >restart:eq:=x*(1-x)*diff(f(x),x,x)+(c-(a+b+1)*x)*diff(f(x),x)-a*b*f(x); / 2 \ |d | /d \ eq := x (1 - x) |--- f(x)| + (c - (a + b + 1) x) |-- f(x)| | 2 | \dx / \dx / - a b f(x) >solgene:=dsolve(eq,f(x)); solgene := f(x) = _C1 hypergeom([a, b], [c], x) (1 - c) + _C2 x hypergeom([b - c + 1, a - c + 1], [2 - c], x) C'est la solution générale; étudions le cas particulier c=1: >solc1:=subs(c=1,solgene); solc1 := f(x) = _C1 hypergeom([a, b], [1], x) + _C2 hypergeom([b, a], [1], x) >solc1bis:=dsolve(subs(c=1,eq),f(x)); solc1bis:=dsolve(subs(c=1,eq),f(x)); solc1bis := f(x) = _C1 hypergeom([a, b], [1], x) + _C2 hypergeom([a, b], [1], x) / (-a - b) | (-(-1 + a + b) (-1 + x)) | -------------------------------- dx/(-1 + a + b) | 2 / x hypergeom([a, b], [1], x) Les deux résultats ne coïncident pas, le cas particulier de la solution générique n'est pas la solution générale du cas particulier. Le nécessaire retour à la théorie s'impose; ici c'est le théorème de Fuchs qui permet de controler que solc1bis est bien le bon résultat (intégration partielle). Sur le théorème de fuchs : l'équation indicielle . >p:=(c-(a+b+1)*x)/x/(1-x);q:=a*b/x/(1-x);P:=normal(x*p);Q:=normal(x*x*q); >eqIndicielle:=simplify(s*(s-1)+subs(x=0,P)*s+subs(x=0,Q)); >S:=solve(eqIndicielle,s); Sur l'identité d'Abel : >with(linalg):unassign(p): >w:=det(Wronskian([g1(x),g2(x)],x))=K*exp(-int(p(x),x));# c'est l'identité d'Abel / /d \ /d \ | w := g1(x) |-- g2(x)| - g2(x) |-- g1(x)| = K exp(- | p(x) dx) \dx / \dx / | / >Abel:=dsolve(w,g2(x));# c'est la forme "intégrée" de l'identité d'Abel. / | / K exp(- | p(x) dx) | | | / Abel := g2(x) = g1(x) | ------------------- dx + g1(x) _C1 | 2 | g1(x) | / Remarquer l'intégration formelle. Application - vérification >p:=x->(1-(a+b+1)*x)/x/(1-x);f1:=x->hypergeom([a,b],[1],x); >A2:=subs(g1(x)=f1(x),Abel);simplify(A2); #Cette forme de la formule d'Abel permet de vérifier la solution des cas particuliers. Sur la théorie des intégrales multiples (exercice très intéressant en licence ou en maitrise) - Intégrer sur le pavé [0, 1]x[0, 1] la fonction (x^2-y^2)/(x^2+y^2)^2; conclusions? >f:=(x^2-y^2)/(x^2+y^2) ^2: >I1:=int(int(f,x=0..1),y=0..1); I1 := - 1/4 Pi >I2:=int(int(f,y=0..1),x=0..1); I2 := 1/4 Pi Cette intégrale double n'est pas absolument convergente; connaissez-vous une définition d'une intégrale multiple au sens de Riemann?