1
|
Nombre de visiteurs : | 2 260 340 | actuellement : (record : |
2 connectés 45) |
Dernière mise à jour le 17/09/2024 | Version mobile |
Nous avons déjà vu de manière "rapide" au premier chapitre qu'une fonction f se déclare schématiquement de la manière suivante : f := variables -> définition. La partie variables peut contenir aussi bien un seul paramètre (par exemple x), ce qui donnera un graphique en 2D si représente la fonction correspondante, ou plusieurs paramètres mis entre parenthèses (par exemple (x,y)), ce qui donnera dans le cas de deux paramètres un graphe 3D. Exemples :
> f := x -> 2*x^2-3*x+4; f(2); plot(f(x), x=-5..5); |
|
|
|
> f := (x,y) -> sin(x)*cos(y); plot3d(f(x,y), x=-5..5, y=-5..5); 'f(15, 2)' = f(15, 2); 'f(Pi, 7)' = f(Pi, 7); |
|
|
Remarquons qu'en écrivant 'f(Pi, 7)', Maple écrit en langage mathématique cette quantité sans la calculer. Pratique pour voir à l'écran à la fois ce qu'on calcule et le résultat correspondant.
Compositions : Maple sait aussi composer des fonctions entre elles. L'opérateur @ sert à ça. Il existe aussi l'opérateur @@ qui compose une fonction avec elle même (autrement dit, l'instruction f@@2 est équivalente à f@f, de même que f@@3 est équivalente à f@f@f...). Voyez plutôt les exemples ci-dessous :
> (sin @ cos)(x); > f := x -> x^3+2: g := y -> ln(y): 'f(g(x))' = (f @ g)(x); 'g(f(x))' = (g @ f)(x); '(exp @ g)(x)' = (exp @ g)(x); '(g@@2)(x)' = (g@@2)(x); '(g@@3)(x)' = (g@@3)(x); |
|
sin(cos(x)) |
On remarquera que certaines fonctions sont déjà implicitement définies par Maple. Ainsi, par exemple, exp représente la fonction exponentielle définie pour tout réel. Il en va de même pour cos, sin, ln, et d'autres moins courants...
Les suites définies par des fonctions : Les suites sont en particulier des fonctions, à la différence près qu'elles ne sont définies que pour les entiers au lieu des réels. Attention cependant au fait que comme la syntaxe est la même pour la définition d'une fonction et d'une suite, on peut très bien demander à Maple d'évaluer une suite u pour un réel 3,5 (!!), il faut alors penser à n'évaluer qu'en des entiers. Plus tard, dans le chapitre de la programmation (procédures), nous verrons comment définir une suite uniquement pour des entiers !!
> u := n -> 3*n+4: u(3); u(3.5); |
|
13 |
Les suites définies par récurrence : On procède comme précédemment, sauf que comme la définition est récurrente, il faut préciser à Maple un cran d'arrêt :
> u := n -> 2*u(n-1)+1; u(0)=1; > u(1); u(2); u(3); |
|
u := n → 2 u(n – 1) + 1 |
La syntaxe traditionnelle pour calculer la limite d'une fonction f en un point a est la suivante : limit(f(x), x=a);. Comme la remarque précédente, lorsqu'on calcule une limite, il peut être utile de voir à l'écran quelle limite on calcule et son résultat. Ainsi pour dire à Maple d'afficher une limite sans la calculer, on l'indique en remplaçant le premier l par un L, comme le montrent les exemples suivants :
> Limit(sin(x)/x, x=0) = limit(sin(x)/x, x=0); Limit((1+a)^(1/a), a=0) = Limit((1+a)^(1/a), a=0); Limit((1+x^2+3*x^3)/(2-3*x+x^3), x=infinity) = limit((1+x^2+3*x^3)/(2-3*x+x^3), x=infinity); |
|
|
Notez que l'infini ∞ en Maple s'écrit infinity. Pour cette fonction, il existe une option qui indique à Maple selon quelle direction calculer cette limite : left, right, real, complex. Les deux premières sont fréquemment utilisées, utiles pour quelques fonctions. Remarquons que Maple n'hésite pas à nous dire si une fonction n'admet pas de limite au point demandé !
> Limit(1/x, x=0) = limit(1/x, x=0); Limit(1/x, x=0, left) = limit(1/x, x=0, left); Limit(1/x, x=0, right) = limit(1/x, x=0, right); |
|
|
Dérivées ordinaires : Elles sont obtenues par la commande diff, dont la syntaxe typique est la suivante : diff(f(x), x);. Tout comme limit, le fait de remplacer le premier d par un D affichera simplement le résultat à l'écran sans le calculer. Par contre, lorsque Maple affiche la dérivée en tant que telle (cf. exemples ci-dessous), il indique en fait un d ronde (∂) au lieu d'un d droit (d) (vu qu'on dérive par rapport à la seule variable de la fonction), il faut donc faire attention à cette petite erreur de notation...
> Diff(sin(x), x) = diff(sin(x), x); Diff((1+x^2+3*x^3)/(2-3*x+x^3), x) = diff((1+x^2+3*x^3)/(2-3*x+x^3), x); |
|
|
Dérivées successives : Il est desfois demandé dans des exercices de calculer la dérivée seconde (ou plus généralement n-ième) d'une fonction. Pour des dérivées successives pas trop nombreuses (par exemple une dérivée troisième), on peut utiliser la syntaxe diff(f(x), x, x, x);, mais il est préférable d'écrire de manière équivalente diff(f(x), x$3);. La syntaxe générale est alors diff(f(x), x$n);, où n est l'ordre de dérivation entier (et non symbolique : n en tant que lettre n'apportera aucun résultat, si ce n'est diff(f(x), x $ n) !).
Dérivées partielles : De manière similaire, Maple peut calculer des dérivées partielles pour une fonction d'au moins deux variables. On peut ainsi calculer une dérivée partielle selon une seule variable, ou selon une variable puis une autre, ou deux fois par rapport à une variable puis par rapport à l'autre, etc. Il faut ici remarquer que l'ordre de dérivation de Maple est l'ordre dont vous écrivez les variables, et cet ordre peut parfois (mais rarement) être important ! Les exemples suivants seront sûrement plus parlants :
> diff(cos(x*tan(y)), x); diff(cos(x+y^2), x,y); diff(cos(x+y^2), y,x); diff((x^2+y^2)*(ln(x)-ln(y)), x$2,y); diff((x^2+y^2)*(ln(x)-ln(y)), y,x$2); |
|
–sin(x tan(y)) tan(y) |
Dans les exemples précédents, les dérivées partielles sont successivement d'ordre 1, 2, 2, 3 et 3. L'ordre de dérivation est le nombre total de dérivées que l'on calcule.
L'opérateur D : Il existe un autre moyen en Maple pour calculer des dérivées, sans avoir à donner les arguments des fonctions, il s'agit de l'opérateur D. Il a de nombreuses applications, mais les seules que nous verrons ici est le développement des formules que nous devrions tous connaître (!!). Gardons à l'esprit que D est un opérateur, il prend donc des fonctions (comme sin) en argument et non pas des valeurs de fonctions (comme sin(x)) :
> D(sin); D(f@g); D(f*g); D(u/v); |
|
|
La dérivée n-ième s'obtient dans ce cas par l'opérateur (D@@n) à la place de D.
Primitives : Elles sont calculées par la commande int, qui possède exactement la même syntaxe que diff : int(f(x), x);. Tout comme diff et limit, le remplacement du premier i par un I fait afficher le résultat à l'écran sans pour autant le calculer.
> Int(tan(x), x) = int(tan(x), x); Int((1-x^2)/(1+x^2), x) = int((1-x^2)/(1+x^2), x); Int(-x^2*exp(-x^2), x) = int(-x^2*exp(-x^2), x); |
|
|
erf(x) est en fait ce que Maple appelle "The Error Function". Consultez l'aide en ligne pour savoir à quoi elle est égale.
Intégrales : Outre les primitives, Maple peut aussi calculer des intégrales, à condition que l'on dise quel est l'intervalle d'intégration. Le paramètre x est alors remplacé par x=a..b dans les expressions précédentes. Reprenons alors les exemples précédents, que nous allons intégrer de 0 à +∞ :
> Int(tan(x), x=0..infinity) = int(tan(x), x=0..infinity); Int((1-x^2)/(1+x^2), x=0..infinity) = int((1-x^2)/(1+x^2), x=0..infinity); Int(-x^2*exp(-x^2), x=0..infinity) = int(-x^2*exp(-x^2), x=0..infinity); |
|
|
Remarquons que tout comme les dérivées, Maple sait différencier les intégrales convergentes (comme la dernière), divergentes (comme celle du milieu) et celles qui ne sont pas définies (comme la première : en effet, sachant que la primitive est un logarithme de cosinus, ce dernier ne possède pas de limite en l'infini, donc l'intégrale n'est pas définie...). De manière générale (intégrales, dérivées et limites), lorsque le symbole est en noir, c'est que l'on a demandé à Maple de ne pas calculer l'expression (donc première lettre en majuscule), sinon c'est qu'elle n'est pas définie.
Les intégrales multiples ne peuvent être calculées que par intégrations itératives. La syntaxe est alors (par exemple pour une fonction de trois variables) : int(int(int(f(x,y,z), x=a..b), y=c..d), z=e..f);. L'ordre peut compter aussi, si les hypothèses du théorème de Fubini ne sont pas respectées... Une alternative à cela (pour le cas d'intégrales doubles ou triples) est d'utiliser les commandes Doubleint ou Tripleint du package student. Attention : Puisque la première lettre est en majuscule, cela n'écrira que l'intégrale sous forme mathématique à l'écran, sans effectuer le calcul. Entourez alors l'instruction de value(...); pour avoir la valeur du résultat. Consultez l'aide en ligne pour savoir comment les utiliser.
> int(int(int(exp(x+y+z), x=0..1), y=0..2), z=0..3); value(student[Tripleint](exp(x+y+z), x=0..1, y=0..2, z=0..3)); |
|
e6 – e5 – e4 + e2 + e – 1 |
Remarque sur value : de la même manière, value(Int(x, x)); donne le même résultat que int(x, x);. Ou encore, value(Diff(x^2, x)); donnera le même résultat que diff(x^2, x);.
Exercice 17
a. Définissez la fonction f (x) = sin(x) cos(x), et tracez-la entre 0 et
π. Calculer f (0) et
f (π). f est-elle injective ou surjective dans IR ?
b. Définissez la fonction g(x, y) = exp(xy) cos(x) sin(y). Tracez sa courbe
représentative pour x et y variant de –π à
π. g est-elle injective ? Sinon, trouvez un contre-exemple.
c. Définissez la fonction h(x) = 3x / ln(x). Que vaut alors (exp o g) ? Et (g o exp) ?
d. Soit (un) une suite définie par récurrence par u0 = 3 et pour tout entier n non nul,
un = (un–1)1/2 + 6. Calculer les termes 5, 10 et 100. Refaire le calcul
en prenant u0 = 10. Dans les deux cas, quelle semble être la limite de la suite ? Pouvez-vous le montrer ?
Exercice 18
a. Trouvez les limites en +∞ et –∞ de la fonction f (x) = sin(x) cos(x) / x.
b. Quelle est la limite en 0 de la fonction g(x) = 4 cos(x) / (1 – x2) ?
c. Si E désigne la fonction partie entière, quelle est la limite à gauche et à droite en 1 de E(x) ?
Exercice 19
a. Calculer de deux manières différentes la dérivée du quotient u(x) / v(x) ? Quelle en est la
dérivée seconde ?
b. Donnez les deux dérivées partielles d'ordre 1, puis les 4 dérivées partielles d'ordre 2 de la fonction f (x,
y) = exp(xy) cos(x) sin(y).
c. Définissez la fonction g(x) = x2 + ln(3x). En une seule instruction, tracez sur un
même graphique les représentations des fonctions g, g' et g'' (où g' désigne la dérivée de g et
g'' la dérivée seconde de g), pour x compris entre 0,5 et 2.
Exercice 20
a. Soit f (x) = exp(–x2). Calculer l'intégrale de f entre 0 et +∞, puis sur tout IR.
b. Soient g et h les fonctions g(x) = 2 x1/2 et h(x) = x / 2.
Tracez leurs représentations sur un même graphique, lorsque x varie de entre 0 et 16. Sur cet intervalle, calculez l'aire qui
se situe entre les deux courbes.
c. Calculez une primitive en x de la fonction p(x, y, z) = exp(x + y) – 3
sin(xz) + ln(z) / x. Déterminez ensuite une primitive en y, puis en z, de cette fonction.