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}