![]() | ![]() | ![]() | Pari GP |
Pari GP, un logiciel surdoué pour la calcul.
PARI-GP est un ensemble de logiciels destiné principalement à la pratique du calcul sur les nombres, les fonctions ou les matrices, dans un contexte à coloration très arithmétique.
Il y a tout d'abord un calculateur en mode texte qu'on peut appeler au moyen de la commande gp. Le calculateur gp n'est pas a priori un outil de calcul formel, mais il possède néanmoins quelques capacités dans ce domaine. Les fonctions mathématiques accessibles sont très avancées et couvrent bien entendu tout le champ de l'enseignement secondaire (même très au delà, jusqu'à la recherche pointue en arithmétique ; mais il n'est bien sûr pas nécessaire d'avoir de telles connaissances pour exploiter les possibilités de base de PARI).
PARI comporte par ailleurs une librairie libpari permettant l'inclusion de routines mathématiques avancées dans des programmes en code C, sur laquelle nous ne nous étendrons pas.
Pour les premiers pas, on pourra appeler l'aide en ligne en tapant un simple point d'interrogation ?, et la documentation complète en tapant deux points d'interrogations consécutifs (??). L'aide en ligne contextuelle sur une fonction s'obtient en précédant le nom de la fonction d'un point d'interrogation:
? ? exp exp(x): exponential of x
Notons tout d'abord qu'une interface utilisateur pour pari existe dans le logiciel de traitement de textes TeXmacs, permettant simplement d'insérer dans un document en cours d'élaboration le résultat d'un calcul.
PARI se distingue par un niveau de performances absolument phénoménal pour les calculs en multiprécision sur les nombres. Les calculs suivants faits avec une précision de 1000 décimales exactes s'effectuent en un temps si faible que ce temps reste imperceptible à l'utilisateur...
GP/PARI CALCULATOR Version 2.1.0 (released) i586 running linux (ix86 kernel) 32-bit version (readline v4.1 enabled, extended help available) Copyright (C) 2000 The PARI Group PARI/GP is free software, covered by the GNU General Public License, and comes WITHOUT ANY WARRANTY WHATSOEVER. Type ? for help, \q to quit. Type ?12 for how to get moral (and possibly technical) support. realprecision = 28 significant digits seriesprecision = 16 significant terms format = g0.28 parisize = 4000000, primelimit = 500000 ? \p 1000 realprecision = 1001 significant digits (1000 digits displayed) ? Pi %1 = 3.14159265358979323846264338327950288419716939937510582097494459 2307816406286208998628034825342117067982148086513282306647093844 6095505822317253594081284811174502841027019385211055596446229489 5493038196442881097566593344612847564823378678316527120190914564 8566923460348610454326648213393607260249141273724587006606315588 1748815209209628292540917153643678925903600113305305488204665213 8414695194151160943305727036575959195309218611738193261179310511 8548074462379962749567351885752724891227938183011949129833673362 4406566430860213949463952247371907021798609437027705392171762931 7675238467481846766940513200056812714526356082778577134275778960 9173637178721468440901224953430146549585371050792279689258923542 0199561121290219608640344181598136297747713099605187072113499999 9837297804995105973173281609631859502445945534690830264252230825 3344685035261931188171010003137838752886587533208381420617177669 1473035982534904287554687311595628638823537875937519577818577805 32171226806613001927876611195909216420199 ? exp(Pi*sqrt(163)) %2 = 262537412640768743.999999999999250072597198185688879353856337336 9908627075374103782106479101186073129511813461860645041930838879 4975386404490572871447719681485232243203911647829148864228272013 1178317065010452226878014448417703469694633557076817238876810009 2370653951938650636275765788855822394811427691210083088665110728 4710623465811298183012459132836100064982665923651726178830863710 7864521955281542746651096110014725020979046393817787125750098036 5779223064312165113108738059929824233558494561239956769997843596 4864096003266482443521306491599303270530753256568618388265483309 8028466962428738847518444368385307341150444694788400594644691316 8212059294605454216375489189006015035687286293314006363226814635 1612163764864131429342351600214180513528287731960179813917884407 1506629949190934962773962072341353025575781802811802102063409749 9392383729033036173981663360032261262088666411718053832855897000 2735722645233287010649586367726698687384859165698266261741988551 15684430332735123103243307572733164953615
Bien entendu, l'intérêt d'effectuer des calculs avec une telle précision n'est en général que purement "sportif", mais c'est agréable de savoir qu'on peut le faire... Il est possible à tout moment de rappeler les commandes déjà effectuées à l'aide des flèches du clavier, et de réutiliser les variables
? \p 40 realprecision = 48 significant digits (40 digits displayed) ? %1+%2 %3 = 262537412640768747.1415926535890433110598
PARI-gp est donc une calculatrice d'une puissance et d'une efficacité considérable. Un point commode est qu'une variable littérale non affectée est considérée comme une variable libre (c'est-à-dire une indéterminée d'un polynôme)
? (3*x+1)*(2*x-1)*(x-4) %4 = 6*x^3 - 25*x^2 + 3*x + 4 ? (3*x+1)*(2*x-1)*(x-4)/((3*x-1)*(2*x+1)*(x-4)) %5 = (6*x^2 - x - 1)/(6*x^2 + x - 1)
On peut donc faire aisément des calculs sur les polynômes et fractions rationnelles, les simplifications étant faites de façon automatique lorsque c'est possible. Dans le cas de fonctions transcendantes, gp va calculer sans préavis le développement en série au lieu du développement polynomial :
? sin(x) %6 = x - 1/6*x^3 + 1/120*x^5 - 1/5040*x^7 + 1/362880*x^9 - 1/39916800*x^11 + 1/6227020800*x^13 - 1/1307674368000*x^15 + O(x^16)
Mais nous dépassons ici largement le niveau du Lycée... Noter qu'on peut utiliser plusieurs variables ou paramètres simultanément, et affecter ensuite les valeurs de certaines :
? (1+a*x)*(a+x) %7 = a*x^2 + (a^2 + 1)*x + a ? a=2 %8 = 2 ? (1+a*x)*(a+x) %9 = 2*x^2 + 5*x + 2
Bien entendu, on dispose aussi d'un arsenal impressionnant de fonctions arithmétiques (taper ? 4 pour en avoir la liste, 4 étant le numéro de la rubrique NUMBER THEORETICAL functions)
? primes(20) %10 = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71] ? gcd(360,336) %11 = 24 ? binomial(120,71) %12 = 12930805958841513897337547991361800
Dans tous ces contextes, il y a un certain nombre de possibilités de calcul formel, notamment la dérivation des fractions rationnelles et des séries :
? deriv(1/x) %13 = -1/x^2 ? deriv(sin(x))-cos(x) %14 = O(x^15) ? deriv(1/sin(x)) %15 = -x^-2 + 1/6 + 7/120*x^2 + 31/3024*x^4 + 127/86400*x^6 + 73/380160*x^8 + 1414477/59439744000*x^10 + 8191/2874009600*x^12 + O(x^13)
Signalons pour terminer que gp est une puissante calculatrice programmable, dotée d'instructions de programmation interne dont voici la liste :
? ? 11 addhelp alias allocatemem break default error extern for fordiv forprime forstep forsubgroup forvec getheap getrand getstack gettime global if input install kill next print print1 printp printp1 printtex quit read reorder return setrand system trap type until whatnow while write write1 writetex
et que Pari possède aussi de fortes capacités de calcul matriciel. Nous ne nous étendrons pas longuement sur ces aspects puisqu'aussi bien les concepts de base de la programmation que de l'algèbre linéaire ne figurent plus aujourd'hui au programme du Lycée (on peut sans doute le regretter... amateurs ne pas s'abstenir) :
? [1,2;-2,1]*[3,4;-5,7] %16 = [-7 18] [-11 -1] ? [1,2;-2,1]^(-1) %17 = [1/5 -2/5] [2/5 1/5]
![]() | ![]() | ![]() | Pari GP |