Calcul symbolique avec Maple
Transcription
Calcul symbolique avec Maple
Calcul symbolique avec Maple Fabrice Colin, Julien Dompierre, Abdellatif Serghini Département de mathématiques et d’informatique Université Laurentienne Sudbury, 29 avril 2010 Maple Maple est un logiciel propriétaire de calcul formel édité par la société canadienne Maplesoft sise à Waterloo, Ontario. Le logiciel permet aussi bien de travailler sur des quantités numériques (entières, réelles, complexes) qu’avec des polynômes, fonctions, séries. Maple réalise des dérivations, intégrations, résolutions de systèmes d’équations linéaires, inversions de matrices, développements asymptotiques et résolutions d’équations différentielles sous forme symbolique, c’est-à-dire en gardant des inconnues dans la résolution. Le système Maple offre aussi de nombreuses fonctionnalités en arithmétique des nombres et en combinatoire. Voir www.maplesoft.com. Chaque instruction doit se terminer par un point-virgule ; > 5 + 9; 14 > sin( Pi ); 0 > exp( 1 ); e1 Calcul numérique avec Maple Dès qu’un point décimal apparaı̂t dans une expression, Maple fait une approximation numérique de l’expression. > 1/2 + 1/3; 5/6 > 1./2 + 1/3; 0.8333333333 > sqrt(2); √ 2 > sqrt(2.0); 1.414213562 Évaluation numérique d’une expression symbolique > sin( Pi ); 0 > > > > sin( 3.1415 ); 0.00009265358966 Pi; π evalf(Pi); 3.141592654 evalf( Pi, 40 ); 3.141592653589793238462643383279502884197 Le pgcd et le ppcm La commande gcd (greatest common divisor) retourne le plus grand commun diviseur de deux nombres et la commande lcm (least common multiple) retourne le plus petit commun multiple de deux nombres. > gcd( 24, 36 ); 12 > lcm( 24, 36 ); 72 Nombres premiers et nombres composés La commande isprime retourne true si un nombre est premier et false sinon. La commande ifactor retourne la décomposition en nombres premiers. > isprime( 11 ); true > ifactor( 11 ); (11) > isprime( 24 ); false > ifactor( 24 ); (2)3 (3) > isprime( 36 ); false > ifactor( 36 ); (2)2 (3)3 Exercice Êtes-vous plus astucieux qu’un élève de neuvième année ? Il s’agit ici de la question 9, section 1.1, page 9, du livre de mathématiques de mon fils (Principes de Mathématiques 9, par Dearling, Erdman, Ferneyhough, McCudden, McLaren, Meisil et Speijer. McGraw-Hill Ryerson, 2006) : Donnez la liste de tous les carrés parfaits qui divisent 8820. (Juste au cas où vous n’étiez déjà plus capable d’apprendre quoi que ce soit en neuvième année, un entier n est appelé un carré parfait s’il existe un entier a tel que n = a × a. Les premiers carrés parfaits sont 1, 4, 9, 16, 25, 36, 49, ...) Indice Faites la décomposition en nombres premiers de 8820. Solution > ifactor( 8820 ); (2)2 (3)2 (5)(7)2 Premièrement, la décomposition en nombres premiers de 8820 est 22 · 32 · 5 · 72 . Pour obtenir des facteurs de 8820 qui soient des carrés parfaits, on doit choisir des facteurs premiers qui viennent en paires. Donc, la liste de tous les carrés parfaits qui divisent 8820 est ◮ 12 = 1 ◮ 22 = 4 ◮ 32 = 9 ◮ 72 = 49 ◮ (2 · 3)2 = 62 = 36 ◮ ◮ ◮ (2 · 7)2 = 142 = 196 (3 · 7)2 = 212 = 441 (2 · 3 · 7)2 = 422 = 1764 Définition : factorielle Definition La fonction factorielle f : N → Z+ , notée f (n) = n! est le produit des n premiers entiers positifs, c’est-à-dire n! = 1 × 2 × 3 × · · · × (n − 1) × n. et f (0) = 0! = 1. Par exemple, 5! = 1 × 2 × 3 × 4 × 5 = 120. Cette fonction croı̂t très vite. 10! = 3628800, 20! = 2432902008176640000, 30! = 265252859812191058636308480000000, 40! = 815915283247897734345611269596115894272000000000. Pour √ n grand, n! peut être approximée par la formule de Stirling : n! ≈ 2πn (n/e)n . La factorielle > 1*2*3*4*5; 120 > 5!; 120 > 10!; 3628800 > 20!; 2432902008176640000 > 30!; 265252859812191058636308480000000 40!; 815915283247897734345611269596115894272000000000 > Exercice Combien y a-t-il de zéros à la fin dans 2009 ! Indice : Qu’est-ce qui fait apparaı̂tre un zéro à la fin de n! Solution Polynômes avec Maple Remarque : Notez bien le deux points égal := dans les expressions suivantes : > poly1 := (x-4)*(x+1); > poly1 := (x − 4) (x + 1) poly2 := (x-4)*(x-3)*(x+5); > poly2 := (x − 4) (x − 3) (x + 5) poly3 := poly1 * poly2; > poly3 := (x − 4)2 (x + 1) (x − 3) (x + 5) expand( poly3 ); > x 5 − 5 x 4 − 21 x 3 + 137 x 2 − 88 x − 240 factor( % ); > (x − 4)2 (x + 1) (x − 3) (x + 5) roots( poly3 ); [[3, 1], [4, 2], [−5, 1], [−1, 1]] L’unité imaginaire Définition Par définition, l’unité imaginaire i est une solution de l’équation quadratique x2 + 1 = 0 ou de façon équivalente x 2 = −1. Ça signifie que i 2 = −1. Comme il n’y a pas de nombre réel tel que son carré soit un nombre réel négatif, ce nombre est imaginaire et on lui attribue le symbole i . Le terme ”imaginaire” pour ces valeurs est dû à René Descartes en 1637. L’unité imaginaire avec Maple Dans Maple, l’unité imaginaire i est notée I. > sqrt( -1 ); I > > I*I; I^2; −1 −1 Les nombres complexes Définition Un nombre complexe z est un nombre de la forme z = a + bi où a et b sont des nombres réels, et i est l’unité imaginaire, ayant la propriété i 2 = −1. Le nombre réel a est appelé la partie réelle du nombre complexe z et est noté ℜ(z) = Re(z) = a. Le nombre réel b est appelé la partie imaginaire du nombre complexe z et est noté ℑ(z) = Im(z) = b. Les nombres complexes > z := 3 + 4*I; z := 3 + 4 I > Re( z ); 3 > Im( z ); 4 Opérations sur les nombres complexes Définition Soient z1 = a + bi et z2 = c + di deux nombres complexes. Addition : z1 + z2 = (a + c) + (b + d)i Soustraction : z1 − z2 = (a − c) + (b − d)i . Multiplication : z1 z2 = (a + bi )(c + di ) = a(c + di ) + bi (c + di ) = ac + adi + bci + bdii = ac + bdi 2 + (ad + bc)i = (ac − bd) + (ad + bc)i Opérations sur les nombres complexes > z1 := 3 + 4*I; > z2 > z1 > z1 > z1 z1 := 3 + 4 I := -2 + 3*I; z2 := −2 + 3 I + z2; 1 + 7I - z2; 5+I * z2; −18 + I Division par un nombre complexe Définition Soient z1 = a + bi et z2 = c + di deux nombres complexes. z1 a + bi c − di a + bi = = z2 c + di c + di c − di (a + bi )(c − di ) ac − bdi 2 + (bc − ad )i = = 2 (c + di )(c − di ) c − cdi + cdi − d 2 i 2 (ac + bd) + (dc − ad)i = c2 + d2 > > > z1 := 3 + 4*I; z1 := 3 + 4 I z2 := -2 + 3*I; z2 := −2 + 3 I z1 / z2; 6 13 − 17 13 I Théorème fondamental de l’algèbre Théorème Tout polynôme de degré supérieur ou égal à 1 avec des coefficients complexes an x n + an−1 x n−1 + · · · + a2 x 2 + a1 x + a0 = 0 a au moins une racine complexe. Notes : Ce théorème fut énoncé pour la première fois par Albert Girard. Jean le Rond d’Alembert en donna une démonstration presque complète, dans son Traité de dynamique. Carl Friedrich Gauss en donna la première démonstration rigoureuse au début du √ XIXe siècle. Gauss utilisa i pour −1, introduisit le terme nombre complexe pour a + bi . Théorème fondamental de l’algèbre > poly := x^2 - 2*x + 2; > poly := x 2 − 2 x + 2 factor( poly ); > x2 − 2 x + 2 factor( poly, I ); > (x − 1 + I ) (x − 1 − I ) roots( poly ); [] > roots( poly, I ); [[1 − I , 1], [1 + I , 1]] Graphiques avec Maple with(plots): Warning, the name changecoords has been redefined > plot( 2*x + 4, x=-5..5 ); > 14 12 10 8 6 4 2 0 −5 −4 −3 −2 x 0 −1 −2 −4 −6 1 2 3 4 5 Graphiques avec Maple plot( [2*x + 4, -x +2], x=-5..5 ); > 14 12 10 8 6 4 2 0 −5 −4 −3 −2 x 0 −1 −2 −4 −6 1 2 3 4 5 Graphiques avec Maple > plot( sin(x), x=0..4*Pi ); 1,0 0,8 0,6 0,4 0,2 0,0 −0,2 −0,4 −0,6 −0,8 −1,0 0,0 2,5 5,0 7,5 x 10,0 12,5 Graphiques avec Maple > plot3d( sin(x)*cos(y), x=-5..5, y=-5..5); Exercice Pierre est trois fois plus âgé que Marie. Dans deux ans, Pierre sera deux fois plus âgé que Marie. Quel âge ont-ils maintenant ? Exercice Pierre est trois fois plus âgé que Marie. Dans deux ans, Pierre sera deux fois plus âgé que Marie. Quel âge ont-ils maintenant ? Quelles sont les inconnues ? On pose : P est l’âge de Pierre M est l’âge de Marie Quelles sont les équations ? Exercice Pierre est trois fois plus âgé que Marie. Dans deux ans, Pierre sera deux fois plus âgé que Marie. Quel âge ont-ils maintenant ? Quelles sont les inconnues ? On pose : P est l’âge de Pierre M est l’âge de Marie Quelles sont les équations ? P = 3M (P + 2) = 2(M + 2) Solution graphique Les deux équations P = 3M (P + 2) = 2(M + 2) peuvent être réécrites P = 3M P = 2M + 2 Solution graphique > plot( [3*M, 2*M + 2], M=0..3 ); 8 6 4 2 0 0,0 0,5 1,0 1,5 M 2,0 2,5 3,0 Solution avec la commande solve > solve( {P = 3*M, (P+2) = 2*(M+2)}, {P,M} ); {M = 2, P = 6}