530 likes | 766 Views
Calcul numérique (avec Maple). Maplesoft http://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).
E N D
Calcul numérique(avec Maple) Maplesoft http://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 ? • ; : % + - * ^ / # := • evalf • convert • sin cos ln exp • floor ceil round trunc • isprime ithprime • restart unassign • if while for seq sum product
5 3 Calculs numériques • Effectuer une évaluation numérique d’une expression à valeur dans : evalf >5/3; evalf(%); 1.666666667
Calculs numériques • Effectuer une évaluation numérique d’une expression à valeur dans les booléens : evalb >2=3; evalb(%); 2=3 false
5 3 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’ 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 ligneprint("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 ligneprintf("coucou\n"): #coucou avec retour à la ligne coucou coucou
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
3 2 Nombres complexes • Exemple : >z:=2+3*I; Re(z); Im(z); argument(z); conjugate(z); unassign('z'); z := 2+3I 2 3 arctan( ) 2-3I
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.
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); false 11 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 0 12
Exercice • Donner les instructions Maple pour répondre à la question. • Factoriser les polynômes suivants : P1 = x4 -1 et P2 = x3 +x4 -5x -5
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 • 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
É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
Pas de solution Intervalle 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.
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 = 22x + 3y + z = 4x - y + 5z = 7 • Déterminer toute les solutions strictement positives de l’équation tan(x) - 3x = 0