Calculer avec SAGEMATH



Documents pareils
Tutoriel Sage. Version 6.8. The Sage Group

Sage : un logiciel libre de mathématiques

Cours 7 : Utilisation de modules sous python

Présentation du langage et premières fonctions

Table des matières. I Mise à niveau 11. Préface

Calculer avec Sage. Revision : 417 du 1 er juillet 2010

Premiers pas avec Mathematica

Maple: premiers calculs et premières applications

Python - introduction à la programmation et calcul scientifique

Mathématiques I Section Architecture, EPFL

Continuité d une fonction de plusieurs variables

FONCTIONS DE PLUSIEURS VARIABLES (Outils Mathématiques 4)

Rapport de stage de fin de première année : exemples de groupes, leur traitement par MAGMA, et applications en cryptographie

Section «Maturité fédérale» EXAMENS D'ADMISSION Session de février 2014 RÉCAPITULATIFS DES MATIÈRES EXAMINÉES. Formation visée

Nombres premiers. Comment reconnaître un nombre premier? Mais...

ÉdIteur officiel et fournisseur de ServIceS professionnels du LogIcIeL open Source ScILab

L informatique en BCPST

Master of Science en mathématiques

Calcul de développements de Puiseux et application au calcul du groupe de monodromie d'une courbe algébrique plane

Calcul Scientifique avec 3

Des réels aux flottants : préservation automatique de preuves de stabilité de Lyapunov

Master of Science en mathématiques

Vision industrielle et télédétection - Détection d ellipses. Guillaume Martinez 17 décembre 2007

Chapitre 4: Dérivée d'une fonction et règles de calcul

Fonctions de plusieurs variables

Notes du cours MTH1101 Calcul I Partie II: fonctions de plusieurs variables

Les équations différentielles

Calcul mathématique avec Sage

Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT

Cours d Analyse. Fonctions de plusieurs variables

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application

Sites web éducatifs et ressources en mathématiques

Maîtrise universitaire ès sciences en mathématiques

Quelques tests de primalité

Rappels sur les suites - Algorithme

Né le 13/06/1984 Russe Célibataire Langues : Russe, Anglais,

Correction de l examen de la première session

F411 - Courbes Paramétrées, Polaires

Assistante de recherche (Wissenschaftlicher Mitarbeiterin), Institut de Mathématiques, Université de Münster, Allemagne, Groupe du Prof. Urs Hartl.

Polynômes à plusieurs variables. Résultant

Exercices Alternatifs. Quelqu un aurait-il vu passer un polynôme?

Exercices Alternatifs. Quelqu un aurait-il vu passer un polynôme?

La Licence Mathématiques et Economie-MASS Université de Sciences Sociales de Toulouse 1

Exemple d implantation de fonction mathématique sur ST240

pythonocc: une plateforme de développement agile d applications CAO.

Fonctions de deux variables. Mai 2011

Introduction à MATLAB R

Introduction à la présentation graphique avec xmgrace

Baccalauréat ES Pondichéry 7 avril 2014 Corrigé

1 Comment faire un document Open Office /writer de façon intelligente?

Tp 1 correction. Structures de données (IF2)

Tutoriel Mathematica Les graphiques

Optimisation, traitement d image et éclipse de Soleil

Pourquoi R devient incontournable en recherche, enseignement et développement

Grandes lignes ASTRÉE. Logiciels critiques. Outils de certification classiques. Inspection manuelle. Definition. Test

LES TYPES DE DONNÉES DU LANGAGE PASCAL

MATHÉMATIQUES 10 e 12 e ANNÉE

Découverte du logiciel ordinateur TI-n spire / TI-n spire CAS

LES GRAPHIQUES SOUS MAPLE

TP 1 Introduction à Matlab Février 2009

Notes du cours MTH1101N Calcul I Partie II: fonctions de plusieurs variables

Le Master Mathématiques et Applications

ALGORITHMIQUE II NOTION DE COMPLEXITE. SMI AlgoII

Bases de programmation. Cours 5. Structurer les données

Programmation linéaire

Les formations de remise à niveau(!) l'entrée des licences scientifiques. Patrick Frétigné CIIU

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

Qualité du logiciel: Méthodes de test

3.2. Matlab/Simulink Généralités

Equations différentielles linéaires à coefficients constants

Aide - mémoire gnuplot 4.0

Suivant les langages de programmation, modules plus avancés : modules imbriqués modules paramétrés par des modules (foncteurs)

Entraînement au concours ACM-ICPC

Calcul intégral élémentaire en plusieurs variables

Exercices - Polynômes : corrigé. Opérations sur les polynômes

Filtrage stochastique non linéaire par la théorie de représentation des martingales

F7n COUP DE BOURSE, NOMBRE DÉRIVÉ

STAGE IREM 0- Premiers pas en Python

Baccalauréat ES/L Amérique du Sud 21 novembre 2013

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

Rencontre des personnes-ressources en déficience motrice et organique RÉCIT MST - RÉCIT Adaptation scolaire Pierre Couillard

La cryptographie du futur

ALGORITHMIQUE ET PROGRAMMATION En C

3 Approximation de solutions d équations

Algebra & Trigonometry High School Level Glossary English / French

Logiciel Libre Cours 3 Fondements: Génie Logiciel

Introduction à l étude des Corps Finis

Optimisation et programmation mathématique. Professeur Michel de Mathelin. Cours intégré : 20 h

8.1 Généralités sur les fonctions de plusieurs variables réelles. f : R 2 R (x, y) 1 x 2 y 2

Continuité en un point

Chapitre 3. Les distributions à deux variables

Circuits RL et RC. Chapitre Inductance

Efficient Object Versioning for Object- Oriented Languages From Model to Language Integration

Quatrième partie IV. Test. Test 15 février / 71

I - PUISSANCE D UN POINT PAR RAPPORT A UN CERCLE CERCLES ORTHOGONAUX POLES ET POLAIRES

MATHÉMATIQUES EN PREMIER CYCLE PRÉSENTATION DU PROGRAMME

Éditorial. Tangente ÉDUCATION. Scratch, AlgoBox, Python. Trimestriel - n 15 - janvier 2011 Numéro spécial 16 activités TICE pour le lycée

Théorème du point fixe - Théorème de l inversion locale

Mathcad Ces capacités font de Mathcad l outil de calcul technique le plus utilisé au monde.

Transcription:

Calculer avec SAGEMATH Pierre Navaro (navaro@math.unistra.fr) Institut de Recherche Mathématique Avancée, Strasbourg IRMA, 25 janvier 2012 http://www-irma.u-strasbg.fr/~navaro/sagemath.pdf

Pourquoi Sage? William Stein (University of Washington) était un utilisateur et un contributeur de Magma mais... Logiciel cher Système de licence très restrictif Impossible d accéder aux algorithmes issus pourtant de la recherche publique. Code peu dynamique, il est impossible de créer ses propres types. Langage limité (pas de gestion des exceptions) Communauté de développeurs très réduite. Pas de graphiques... Maple et Matlab possède des outils de visualisation puissants mais sont très inférieurs à Magma pour la théorie des nombres. Impossible de compiler ses scripts.

Historique William Stein commence en 2005. Code une alternative à Magma en Python. Collaboration avec David Joyner (Théorie des codes et des groupes) GAP et PARI sur cette plateforme Python. Software for Algebraic and Geometric Experimentation. sage: E = EllipticCurve('389a'); E Elliptic Curve defined by y^2 + y = x^3 + x^2-2*x over Rational Field sage: E.gens() [(-1 : 1 : 1), (0 : -1 : 1)] sage: G = matrix(gf(5), 4, 7, [1,1,1,0,0,0,0,1,0,1,1,1,0,0,1,0,0,1,1,1,0,0,1,1 sage: C = LinearCode(G); C Linear code of length 7, dimension 4 over Finite Field of size 5 sage: C.minimum_distance() 2

Ajout de fonctions pour le calcul formel Ajout de l interface Maxima en 2006 pour l enseignement. Bobby Moretti le rejoint en 2007, finit l interface mais Maxima est lent. Burcin Erocal en 2008 collabore pour créer Pynac (issu de Ginac) sage: f = 1 /sqrt(x^2+2*x-1) sage: timeit('f*f') 625 loops, best of 3: 112 µs per loop sage: g = maxima(f) sage: timeit('g*g') 25 loops, best of 3: 16 ms per loop

Présentation générale Toutes les fonctions sont accessibles depuis une plateforme commune codée en Python. Tout code Python fonctionne dans sage. Tous les composants sont libres. Un système de calcul + un notebook accessible via un navigateur. Le système dépend le moins possible de la machine hôte. Il contient sa propre distribution Python et tous les packages sont compilés. Packages spkg : sources et scripts d installation. Le logiciel est extensible à l infini. Inconvénient : peu pratique sous Windows

Quelques composants de SAGE Algèbre : GAP, Maxima, Singular. Géométrie algébrique : Singular, Macaulay. Arithmétique : GMP, MPFR, MPFI, NTL. Géométrie arithmétique : PARI, NTL, mwrank, ecm. Calcul formel : Maxima, Sympy, Pynac. Combinatoire : Symmetrica, MuPaD-Combinad. Algèbre : Linbox, IML. Théorie des graphes : NetworkX. Visualisation graphique : Matplotlib, Tachyon 3d, Jmol. Théorie des groupes : GAP. Analyse et algèbre numérique : GSL, Scipy, Numpy. http://www.sagemath.org/packages/standard/

Objets mathématiques Le langage est fortement typé! Aucun objet n a de type ambigu La complétion automatique permet de guider l utilisateur vers la bonne méthode. On ne peut pas calculer sans savoir à quel ensemble appartiennent les variables. sage: parent(x) Symbolic Ring sage: parent(1.2) Real Field with 53 bits of precision sage: parent(1/2) Rational Field

entiers relatifs : ZZ rationnels : QQ sage: 1.2 in QQ True sage: sqrt(2) in QQ False flottants doubles : RDF sage: pi in RDF True complexes Ensembles de nombres sage: CC Complex Field with 53 bits of precision p-adiques sage: Zp(5) 5-adic Ring with capped relative precision 20 sage: Zp(5,prec=5)(18) 3 + 3*5 + O(5^5)

Calcul formel sage: (x+2)^3 (x + 2)^3 sage: type(x) <type 'sage.symbolic.expression.expression'> sage: x+y NameError: name 'y' is not defined sage: var('y') sage: f = (x+y)^3 sage: expand(f) x^3 + 3*x^2*y + 3*x*y^2 + y^3 sage: f.expand() x^3 + 3*x^2*y + 3*x*y^2 + y^3 sage: f.roots() [(-y, 3)] sage: f.subs(x=y) 8*y^3 sage: latex(f) {\left(x + y\right)}^{3}

Fonctions Fonction en calcul symbolique sage: norme(x,y) = sqrt(x^2+y^2) sage: f (x, y) --> sqrt(x^2 + y^2) sage: norme(2,3) sqrt(13) Fonction python sage: def norme(x, y):...: return sqrt(x*x+y*y)...: sage: norme(2,3) sqrt(13) Lambda fonction (renvoie une valeur unique) sage: norme = lambda x,y: sqrt(x*x+y*y) sage: norme(2,3) sqrt(13)

Algèbre linéaire sage: A=Matrix(QQ,[[4,8,12],[3,8,13],[2,9,18]]) sage: Y=vector([4,5,11]) sage: A.solve_right(Y) (1, -3, 2) sage: A=Matrix(RDF,[[4,8,12],[3,8,13],[2,9,18]]) sage: A \ Y # \ == solve_right (1.0, -3.0, 2.0) sage: A = Matrix(SR,[[4,x],[3,8]]) sage: A.inverse() [-3/4*x/(3*x - 32) + 1/4 x/(3*x - 32)] [ 3/(3*x - 32) -4/(3*x - 32)] QQ et SR => systèmes résolus avec LinBox. RDF => systèmes résolus avec Lapack (scipy).

Polynômes Polynôme dans l espace des rationnels. sage: x = QQ['x'].0 sage: f = x^3 + 1; g = x^2-17 sage: h = f/g; h (x^3 + 1)/(x^2-17) sage: h.parent() Fraction Field of Univariate Polynomial Ring in x over Rational Field p-adiques sage : W=Zp(5, prec=5) sage : var('x') sage : A.<X> = PolynomialRing(W) sage: X (1 + O(5^5))*X sage: A Univariate Polynomial Ring in X over 5-adic Ring with capped relative pre sage : P = X^2+1 sage : diff(p,x) (2 + O(5^5))*X

Résolution exacte d équations Solution exacte avec un paramètre sage: x, b, c = var('x b c') sage: solve([x^2 + b*x + c == 0],x) [x == -1/2*b-1/2*sqrt(b^2-4*c), x == -1/2*b+1/2*sqrt(b^2-4*c)] Plusieurs variables sage: x, y = var('x, y') sage: solve([x+y==6, x-y==4], x, y) [[x == 5, y == 1]] Système non linéaire sage: var('x y p q') (x, y, p, q) sage: eq1 = p+q==9 sage: eq2 = q*y+p*x==-6 sage: eq3 = q*y^2+p*x^2==24 sage: solve([eq1,eq2,eq3,p==1],p,q,x,y) [[p==1, q==8, x== -4/3*sqrt(10) - 2/3, y== 1/6*sqrt(2)*sqrt(5) - 2/3], [p==1, q==8, x== 4/3*sqrt(10) - 2/3, y== -1/6*sqrt(2)*sqrt(5) - 2/3]]

Résolution numérique d équations Solution du système précédent sage: solns = solve([eq1,eq2,eq3,p==1],p,q,x,y, solution_dict=true) sage: [[s[p].n(30), s[q].n(30), s[x].n(30), s[y].n(30)] for s in solns] [[1.0000000, 8.0000000, -4.8830369, -0.13962039], [1.0000000, 8.0000000, 3.5497035, -1.1937129]] solve ne renvoie pas forcément une information utile. sage: theta = var('theta') sage: solve(cos(theta)==sin(theta), theta) [sin(theta) == cos(theta)] Si on choisit l intervalle ]0, π/2[ : sage: phi = var('phi') sage: find_root(cos(phi)==sin(phi),0,pi/2) 0.785398163397448... Graphes 2D => matplotlib sage: plot(sin(x),0,pi/2)+plot(cos(x),0,pi/2)

Dérivées, Intégrales,... Dérivées sage: u = var('u') sage: diff(sin(u), u) cos(u) sage: diff(sin(u),u,u) -sin(u) sage: diff(sin(u),u,2) -sin(u) sage: x, y = var('x,y') sage: f = x^2 + 17*y^2 sage: f.diff(x),f.diff(y) (2*x, 34*y) Intégrales sage: integral(x*sin(x^2), x) -1/2*cos(x^2) sage: integral(x/(x^2+1), x, 0, 1) 1/2*log(2)

Equations différentielles x + x 1 = 0 sage: t = var('t') # la variable t sage: x = function('x',t) # x est une fonction de t sage: DE = diff(x, t) + x - 1 sage: desolve(de, [x,t]) (c + e^t)*e^(-t) sage: DE = diff(x, t) + x - 1 == t sage: desolve(de, [x,t]) ((t - 1)*e^t + c + e^t)*e^(-t) Transformée de Laplace sage: s, t = var("s t") sage: f = t^2*exp(t) - sin(t) sage: f.laplace(t,s) 2/(s - 1)^3-1/(s^2 + 1)

Tracé d une fonction Graphe 3D import matplotlib.cm hotmap = map(tuple,matplotlib.cm.hot(srange(0,1,.1))) plot3d(sin(x)*y,(x,-3,3),(y,-3,3),color=hotmap, adaptive=true) Bibliothèque d objets from sage.plot.plot3d.shapes import Cone, Torus Cone(.5,.5,color='lightblue').translate(0,0,.3)+Torus(1,.1,color='green')

Quelques démos Calcul formel = http://irma-sage/home/navaro/81/ Graphes 3D = http://irma-sage/home/navaro/82/ Courbe de Béziers quadratique rationnelle = http://irma-sage/home/navaro/83/ Cython-f2py-PyOpenCL = http://irma-sage/home/navaro/49/ Animation = http://irma-sage/home/navaro/36/

Références Documentation officielle http://www.sagemath.org/doc/ Wiki http://wiki.sagemath.org/ Serveur de l IRMA http://irma-sage.u-strasbg.fr Notebook public http://www.sagenb.org/ Pages de Franco Saliola http://thales.math.uqam.ca/~saliola/sage/ Paul Zimmermann et al. Calcul mathématique avec Sage http://sagebook.gforge.inria.fr/.