Calcul numérique(avec Maple)
Maplesofthttp://www.maplesoft.com/
Maple version 9.5
Le logiciel de calcul formel Maple
• Sources utilisées pour ce cours :– Raphaël Giromini
http://www.giromini.org/maple/index.html
– M. Chare (cours-tds années précédant 2006).– José-Marconi Rodrigues (tps précédant 2006).
Brainstorming …qu’a t-on vu la dernière fois ?
Brainstorming …qu’a t-on vu la dernière fois ?
• ; : % + - * ^ / # := • evalf • convert • sin cos ln exp • floor ceil round trunc• isprime ithprime• restart unassign • if while for seq sum product
Calculs numériques
• Effectuer une évaluation numérique d’une expression à valeur dans : evalf>5/3; evalf(%);
53
1.666666667
Calculs numériques
• Effectuer une évaluation numérique d’une expression à valeur dans les booléens : evalb>2=3; evalb(%);
2=3false
Calculs numériques
• « type » d’une expression numérique :– Cela peut être un entier ou un rationnel. Ex:2,
– Cela peut être un réel. Ex: 3.141592654, .8– Cela peut être un imaginaire. Ex: 2*I, 2+4*I, – Cela peut être un booléen : Ex: true, false– Cela peut être un caractère : Ex: ‘c’, ‘0’
53
evalf
evalb
Remarque : I est le nombre imaginaire (noté i en maths) ;On a donc en Maple : I2 = -1
Exercice
• Évaluer le programme suivant :>restart;evalf(Pi);ln(2);evalf(%);exp(1);evalf(%);1./2 + 3/10;
Exercice
• Évaluer le programme suivant :>restart;evalf(Pi);ln(2);evalf(%);exp(1);evalf(%);1./2 + 3/10;
3.141592654 ln(2).6931471806 e.8000000000
Calculs numériques
• Le nombre de chiffres après la virgule lors de l’évaluation d’un réel peut être fixé par la commande Digits.>sin(0.2); Digits:=3; sin(0.2); .1986693308 Digits:=3; .199
Calcul symbolique• Développement d’une expression : expand()• Factorisation d’une expression : factor()• Simplification d’une expression : simplify()
>(1+x)^2; expand(%); factor(%); cos(x)^2+sin(x)^2; simplify(%); (1+x)2
1+2x+x2
(1+x)2
cos(x)2+sin(x)2
1
Représentations graphiques
• Maple permet de tracer n’importe quelle fonction, aussi bien sur le plan que dans l’espace via l’utilisation des commandes :– plot– plot3d
>plot(x^2, x=-5..5);
>plot3d(x*sin(y), x=-5..5, y=-5..5);
Sortie écran (affichage de texte à l’écran)
> "il y a ",10," erreurs"; # ;print("il y a ",10," erreurs"): # print"il y a ",10," erreurs""il y a ",10," erreurs"
> print("coucou"): print('``'): #Retour à la ligne
print("coucou"):"coucou"
"coucou"
Sortie écran (affichage de texte à l’écran)
> "il y a ",10," erreurs"; # ;print("il y a ",10," erreurs"): # printprintf("il y a %f erreurs", 10): # printf "il y a ",10," erreurs""il y a ",10," erreurs" il y a 10.000000 erreurs
> printf("coucou\n"): #coucou avec retour à la ligne printf("\n"): #Retour à la ligne
printf("coucou\n"): #coucou avec retour à la lignecoucou
coucou
Chapitre 2 : Arithmétique
Nombres complexes
• Commandes spécifiques aux calculs sur les complexes :– Partie réel : Re– Partie imaginaire : Im– Module d’un complexe : abs– Argument : argument– Conjugué : conjugate
Nombres complexes
• Exemple :>z:=2+3*I; Re(z); Im(z); argument(z); conjugate(z); unassign('z');
z := 2+3I 2 3arctan( )
2-3I
32
Représentation usuelle et représentation polaire
• Un complexe peut également être représenté sous la forme e ou est le module et l’argument grâce à la commande polar> polar (2, Pi/4);
evalc(%);
> convert(sqrt(2)+sqrt(2)*I, polar);
Exercice
• Donnez les commandes pour :– passer en polaire l’expression z= 6+i– donner les parties réelle et imaginaire de z– donner le module et l’argument de z.
Exercice
Calcul modulaire
• Calcul du reste de la division de n par m :– mod– Exemple : > 3+22 mod 4;
1
Other modular arithmetic operations are stated in their natural form: i+j mod m; i-j mod m; i*j mod m; j^(-1) mod m; i/j mod m;
Pgcd, ppcm
• Le Plus Grand Commun Diviseur (pgcd) de plusieurs nombres entiers se calcule à l’aide de la commande igcd (« Integer Greater Common Divisor »).
• Le Plus Petit Commun Multiple (ppcm) de plusieurs nombres entiers se calcule à l’aide de la commande ilcm (« Integer Lower Common Multiple »).
Pgcd, ppcm> igcd(24,4); igcd(6160,8372,56);
4 28
> ilcm(38,341);ilcm(6,9,18); 12958
18
Nombres premiers
• Un nombre premier est un nombre entier dont les diviseurs positifs sont 1 et lui-même.– isprime indique si un nombre est premier ;– ithprime donne le ième nombre premier ;– nextprime donne le plus petit nombre premier qui
succède un nombre donné.
> isprime(12); ithprime(5);
nextprime(200);false11
211
Factorisation en nombre premier
• La commande ifactor permet de factoriser des nombres entiers en facteurs premiers .
> ifactor(2850375285); (3)3(5)(631)(33461)
> expand(%);2850375285
Exercice
• Donner les instructions Maple pour répondre aux questions. Soit a = 1049427 et b = 17493;– Quel est le pgcd de a et b ?– Ce pgcd est-il premier ?– Décomposer a et b en nombres premiers– Donner le ppcm de a et b– Donner le 500ème nombre premier– Quel est le nombre premier qui succède à 4000 ?
Calculs sur les polynômes
• Illustration du calcul symbolique avec les polynômes :
> P1:= 3 * x^2 + 4 * x + 7; # On assigne à P1 un polynôme. P2:= x^3 -1; # On assigne à P2 un polynôme. P1^2; # On calcul le carré de P1 P1/P2; # Division de P1 par P2 eval(%, x=2); # Evaluation de P1/P2 pour x=2 eval(%%, x=-4); # Evaluation de P1/P2 pour x=-4 evalf(%); # Evaluation numérique de P1/P2 pour x=-4
Calcul symbolique• Développement d’une expression : expand()• Factorisation d’une expression : factor()• Simplification d’une expression : simplify()
>(1+x)^2; expand(%); factor(%); cos(x)^2+sin(x)^2; simplify(%); (1+x)2
1+2x+x2
(1+x)2
cos(x)2+sin(x)2
1
La commande collect• La commande collect permet de grouper les termes
d’une expression suivant une variable donnée : > collect(a*x^3 + y*x -(x^2+1)*(y-2) + 4, x); collect(a*x^3 + y*x -(x^2+1)*(y-2) + 4, y);ax3+(-y+2)x2+yx+6-y (x-x2-1)y+ax3+2x2+6
• On peut factoriser en indiquant un ordre :> collect(a*x^3 + y*x -(x^2+1)*(y-2) + 4, [x,y]); collect(a*x^3 + y*x -(x^2+1)*(y-2) + 4, [y,x]);ax3+(-y+2)x2+yx+6-y (x-x2-1)y+ax3+2x2+6
La commande normal• La commande normal permet de mettre des
fractions de polynômes au même dénominateur :
La commande sort• La commande sort permet de classer les
coefficients d’un polynôme suivant la valeur croissante des puissances.
> poly:=x + x^2 - x^3 - x^3 + 7 - x^6 + x^22: sort(poly);
x22-x6-2x3+x2+x+7> x*y^3 + 2*x^2*y^5 + 4*x*y^4 +y^3:
sort(%,[x,y]);2x2y5+4xy4+xy3+y3
Degrés et coefficients
• La commande degree permet d’obtenir le degré d’un polynôme. Si le polynôme a plusieurs variables, on peut préciser suivant quelles variables on veut le degré. Si l’on ne précise pas la variable, on obtient le degré total de l’expression.
> Q:=4*y^2*x^4 + 12*y^5 + 7*x^2*y^2 + 7; degree(Q,x); degree(Q,y); degree(Q);
Q := 4y2x4 +12y5 +7x2y2 +7 4 5 6
Degrés et coefficients
• La commande coeff permet d’obtenir la valeur d’un coefficient du polynôme
• La commande lcoeff permet d’obtenir la valeur du coefficient du terme de plus haut degré.
> Q:=4*y^2*x^4 + 12*y^5 + 7*x^2*y^2 + 7; coeff(Q, x^4);
coeff(Q, x^3); lcoeff(Q); Q := 4y2x4 +12y5 +7x2y2 +7
4y2
012
Exercice
• Donner les instructions Maple pour répondre à la question. – Factoriser les polynômes suivants :
P1 = x4 -1et P2 = x3 +x4 -5x -5
Exercice
Exercice
• Donner les instructions Maple pour répondre à la question. poly:=(x^2-a)*(x*y+b)*(x^4-y^4)*(3*x+z)*(z-x);
– Développez, simplifiez et ordonnez suivant x, puis suivant y et enfin suivant z.
Exercice
Exercice
• Donner les instructions Maple pour répondre aux questions. poly:=(x^2-a)*(x*y+b)*(x^4-y^4)*(3*x+z)*(z-x);
– Développez, simplifiez et ordonnez suivant x, puis suivant y et enfin suivant z.
– Donnez la valeur du coefficient x5 et du coefficient y3
Exercice
Équations
• Maple sait résoudre presque n’importe quelle équation. La principale commande pour résoudre une équation est solve :
> eqn1:= x^2 -4 = 0; solve(eqn1, x); solve(eqn1, {x});
eqn1 := x2-4 = 0 2, -2
{x = 2}, {x = -2}
Attention à bien spécifier quelles sont les inconnues
Système d’équations
Solutions numériques
• La commande fsolve donne les solutions numériques mais uniquement réelles…
> solve(x^2+1=0); fsolve(x^2+1=0);
fsolve(x^2+1=0, x, complex);I, -I
-1.000000000*I, 1.*I > fsolve(x^2-1=0); fsolve(x^2-1=0, x, 0..infinity);
-1.000000000, 1. 1.
Pas de solution
Intervalle
Solutions numériques
• La commande isolve permet de donner les solutions entières.
• La commande msolve(…, m) permet de donner les solutions modulo un certain entier m.
> isolve(5*x-3*y=4); msolve({x+7*y=1, 3*x+2*y=2}, 17);
{y = 2+5_Z1, x = 2+3_Z1}{x = 6, y = 9}
_Z1, _Z2, ... : are variables that have integer values and occur in the solution> 6+7*9 mod 17; # vaut 1 3*6+2*9 mod 17; # vaut 2
Exercice
• Donner les instructions Maple pour répondre aux questions. – Résoudre le système suivant : x + y + 2z = 2
2x + 3y + z = 4x - y + 5z = 7
– Déterminer toute les solutions strictement positives de l’équation tan(x) - 3x = 0
Exercice