Introduction à Sage-Python

Documents pareils
Maple: premiers calculs et premières applications

Présentation du langage et premières fonctions

STAGE IREM 0- Premiers pas en Python

Licence Sciences et Technologies Examen janvier 2010

L informatique en BCPST

Python - introduction à la programmation et calcul scientifique

Initiation à la programmation en Python

Premiers pas avec Mathematica

Cours 7 : Utilisation de modules sous python

Corrigé des TD 1 à 5

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

TP 1. Prise en main du langage Python

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

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

Introduction à MATLAB R

Découverte de Python

1 Recherche en table par balayage

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

MATLAB : COMMANDES DE BASE. Note : lorsqu applicable, l équivalent en langage C est indiqué entre les délimiteurs /* */.

Algorithmique et Programmation, IMA

Algorithmes et mathématiques. 1. Premiers pas avec Python. Exo Hello world!

Manuel d utilisation 26 juin Tâche à effectuer : écrire un algorithme 2

Représentation d un entier en base b

Chapitre 2 Devine mon nombre!

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

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

Introduction à l informatique en BCPST

ET 24 : Modèle de comportement d un système Boucles de programmation avec Labview.

Calcul Formel et Numérique, Partie I

Définitions. Numéro à préciser. (Durée : )

Continuité et dérivabilité d une fonction

Calcul Formel et Numérique, Partie I

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Plan du cours. Historique du langage Nouveautés de Java 7

Représentation des Nombres

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

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

Introduction à l étude des Corps Finis

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

La fonction exponentielle

V- Manipulations de nombres en binaire

Etude de fonctions: procédure et exemple

Correction de l examen de la première session

Programmation C. Apprendre à développer des programmes simples dans le langage C

TOUT CE QU IL FAUT SAVOIR POUR LE BREVET

La Clé informatique. Formation Excel XP Aide-mémoire

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

Initiation à LabView : Les exemples d applications :

Utilisation d objets : String et ArrayList

Aide - mémoire gnuplot 4.0

I. Introduction aux fonctions : les fonctions standards

Pour l épreuve d algèbre, les calculatrices sont interdites.

Conventions d écriture et outils de mise au point

Initiation à l algorithmique

Cours de C++ François Laroussinie. 2 novembre Dept. d Informatique, ENS de Cachan

Introduction à R. Florence Yerly. Dept. de mathématiques, Université de Fribourg (CH) SP 2011


Langage Java. Classe de première SI

INF 321 : mémento de la syntaxe de Java

Conversion d un entier. Méthode par soustraction

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples

Fonctions de deux variables. Mai 2011

NOMBRES COMPLEXES. Exercice 1 :

SINE QUA NON. Découverte et Prise en main du logiciel Utilisation de bases

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

Dérivation CONTENUS CAPACITÉS ATTENDUES COMMENTAIRES

2 Comment fonctionne un ordinateur, dans les grandes lignes

Algorithmes récursifs

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

Cours 1 : La compilation

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

Le Langage C Version 1.2 c 2002 Florence HENRY Observatoire de Paris Université de Versailles florence.henry@obspm.fr

Solutions du chapitre 4

Exercices - Nombres complexes : corrigé. Formes algébriques et trigonométriques, module et argument

I00 Éléments d architecture

Développements limités, équivalents et calculs de limites

Développements limités. Notion de développement limité

Algorithme. Table des matières

Cours Informatique Master STEP

Optimisation, traitement d image et éclipse de Soleil

Calcul matriciel. Définition 1 Une matrice de format (m,n) est un tableau rectangulaire de mn éléments, rangés en m lignes et n colonnes.

Factorisation Factoriser en utilisant un facteur commun Fiche méthode

Cours d initiation à la programmation en C++ Johann Cuenin

Programmation Web. Madalina Croitoru IUT Montpellier

CHAPITRE 10. Jacobien, changement de coordonnées.

Présentation du logiciel

1. Structure d'un programme FORTRAN 95

Arithmétique binaire. Chapitre. 5.1 Notions Bit Mot

Exercices - Fonctions de plusieurs variables : corrigé. Pour commencer

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


Chapitre 1 : Évolution COURS

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

Recherche dans un tableau

Cours3. Applications continues et homéomorphismes. 1 Rappel sur les images réciproques

4. Les structures de données statiques

Initiation aux calculatrices graphiques formelles TI

MICROINFORMATIQUE NOTE D APPLICATION 1 (REV. 2011) ARITHMETIQUE EN ASSEMBLEUR ET EN C

Transcription:

Introduction à Sage-Python Aurélien Greuet Université de Versailles http://lmv.math.cnrs.fr/annuaire/aurelien-greuet/ 1 Python? Sage?! Calcul formel?!? 1.1 Python Python est un langage de programmation interprété (contrairement aux langages compilés) multiplateforme et libre. Il sert à faire plein de choses. Par exemple la NASA l utilise et il sert aussi à coder Sage. On va plutôt s intéresser à Sage donc on ne s étend pas trop sur Python, le lecteur intéressé pourra trouver plein d informations sur le web, en particulier sur le site officiel http://www.python.org/. 1.2 Sage Sage est un logiciel libre de calcul formel initialement développé par William Stein, un enseignantchercheur américain, en 2005. Il est disponible pour Windows, Mac, Linux, en live CD ou même utilisable directement en ligne sur http://www.sagemath.org/. Sage est écrit en Python et s utilise en écrivant des commandes qui sont interprétées par Python. Concrètement, cela signifie que tout ce qu on peut faire en Python peut être fait en Sage. Inversement, la plupart des commandes de base de Sage restent valable en Python. On peut donc voir Sage comme Python à qui on a rajouté des fonctionnalités de calcul formel. Sage utilise parfois d autres logiciels libres de calcul formel, mais de manière complètement transparente pour l utilisateur. Cela lui permet d être relativement efficace dans plusieurs domaines. 1.3 Calcul formel Mais qu est-ce que le calcul formel? En général on parle de calcul formel par opposition au calcul numérique. En calcul numérique, seuls les nombres entiers d une douzaine de chiffres peuvent être manipulés de manière exacte. Au delà ou pour des nombres qui ne sont pas entiers, des approximations sont faites, ce qui peut entraîner des erreurs. Au contraire en calcul formel, les calculs sont effectués sur des formules, de façon algébrique, en manipulant formellement des symboles et en faisant des transformations exactes. 2 Prise en main Nous allons donner une liste de fonctions ou opérations avec un descriptif très court ou simplement des commandes tapées dans Sage, suivies de quelques questions qu on peut être amené à se poser (ce ne sont pas les seules, n hésitez pas à les partager si vous en avez d autres). L objectif est que vous manipuliez ces fonctions pour comprendre par vous-même leur fonctionnement et que vous soyez capable de vous débrouiller seul face à un problème en consultant l aide, une documentation ou simplement en bidouillant. Avant de commencer, quelques petites choses à savoir : 1

lorsqu on tape <Entrée>, on passe à la ligne. Pour évaluer l expression courante, on peut faire <Maj>+<Entrée> ; complétion automatique : si on tape le début d un mot suivi de le touche <Tab>, Sage affiche toutes les commandes, fonctions ou constantes commençant par ce début de mot ; aide en ligne : on peut accéder au manuel de toute commande, fonction ou constante en la faisant suivre d un point d interrogation ; si l aide en ligne ne suffit pas, on peut consulter l excellent Calcul mathématique avec Sage, dit le Sagebook ; si le Sagebook ne suffit pas, il reste internet et ses moteurs de recherche ; en cas d erreur, on peut cliquer à gauche de l erreur (le curseur de la souris change de forme) pour obtenir plus de détails. 2.1 Calculs élémentaires 2.1.1 Liste de fonctions addition, soustraction, etc : a+b, a-b, a/b, a*b puissance : a^b ou a**b division entière : a//b reste de la division (calcul de modulo) : a % b approximation : numerical_approx racine carrée : sqrt(a) racine n-ième : a^(1/n) valeur absolue : abs(a) fonctions usuelles : sin, cos, tan, log, exp,... π : pi affectation de variable : y = 1 + 3 nombre de chiffres d un entier : ndigits(a) écriture binaire : bits(a), bits(a, padto = i) 2.1.2 Exemples 2+2 4 2*(2+1) 6 2**3 8 2^3 8 40/28 10/7 Pas de limite sur la taille des nombres : 2^1000 2

10715086071862673209484250490600018105614048117055336074437\ 50388370351051124936122493198378815695858127594672917553146\ 82518714528569231404359845775746985748039345677748242309854\ 21074605062371141877954182153046474983581941267398767559165\ 54394607706291457119647768654216766042983165262438683720566\ 8069376 20 // 6 3 20 % 6 2 y = sqrt (2) + sqrt (2); y 2* sqrt (2) numerical_ approx ( y /2) 1. 41421356237310 numerical_ approx ( sqrt (2), digits = 100) 1.414213562373095048801688724209698078569671875376948073176\ 679737990732478462107038850387534327641573 40.0/28 1. 42857142857143 2.1.3 Autres questions intéressantes (ou pas) Si on fait y = 3 suivi de y = y + 2, que vaut y? Comment définir une fonction (par exemple cos (x) + 2 sin (x)), que vaut cos(π), que vaut cos 2 (x) + sin 2 (x), que vaut ( 2 ) 2, que vaut x2? 2.2 Manipulations symboliques 2.2.1 Simplifications Pour ne pas avoir à déclarer chaque variable symbolique : automatic_name(true) factor, expand, simplify simplify_trig, reduce_trig, expand_trig simplify_radical 2.2.2 Questions intéressantes (ou pas) Trouver une expression simple de x 3 y 3, retrouver les identités remarquables, développer l expression (x + y + z) 10, factoriser x 5 + 5x 4 y + 10x 3 y 2 + 10x 2 y 3 + 5xy 4 + y 5, factoriser x 2 2 2x + 2, retrouver les formules de trigo, etc. 2.3 Résolution d équations 2.3.1 Les outils résolution symbolique : solve racines de polynômes : roots 3

2.3.2 Questions intéressantes (ou pas) Peut-on résoudre des systèmes? Des inéquations? Les solutions sont-elles toujours exactes, approchées? Sait-on résoudre avec des coefficients qui ne sont pas des nombres? 2.4 Outils pour l analyse 2.4.1 Les outils limites : limit( f(x), x=a ) fonction symbolique : function( f,x) dérivation : diff( f(x),x ) tracé d une courbe : plot( f(x), x, a, b) 2.4.2 Questions intéressantes (ou pas) Peut-on retrouver les formules de la dérivée d une somme, d un produit, d une composée? De la racine carrée d une fonction? L équation de la tangente à une courbe? La tracer sur le même graphique que la courbe? Peut-on calculer la limite de la suite u n = n100? Peut-on deviner cette limite en calculant les 100n premiers termes? En traçant une fonction? Peut-on tracer des courbes de couleurs différentes? 2.5 Programmation 2.5.1 Boucles, fonctions et tests On donne quelques exemples. Essayez de les comprendre et d en faire d autres. Pour les tests et comparaisons, on peut essayer ==,!=, <, >, <=, >=. for i in range (4) : print i On fera très attention à l indentation (et on demandera ce que c est si on ne sait pas), primordiale en Python et Sage : i = 1 while i < 10 : i = i+1 print (i) i = 1 while i < 10 : i = i+1 print (i) i = 1 while i < 10 : i = i+1 print (i) j = 0 i = 1523489753 while i > 1000 : i = i/2 j = j+1 j 4

def vaut_quatre (x) : if x == 4 : print x, vaut bien 4 return True else : print x, ne vaut pas 4 return False toto = vaut_ quatre ( 2 + 2 ); toto 4 vaut bien 4 True titi = vaut_ quatre ( 42 ); titi 42 ne vaut pas 4 False for i in range ( 100) : if i %10 == 0 : print i Que fait la fonction (récursive) suivante (attention, n doit être un nombre entier)? def factorielle (n) : if n < 1 : raise ValueError ( n doit etre >= 1 ) if n == 1 : return n else : return n* factorielle (n -1) Peut-on obtenir la même fonction avec une boucle? Peut-on utiliser des boucles pour calculer la somme des termes d une suite? Pour calculer des approximations de π en utilisant l égalité π 4 = 1 1 3 + 1 5 1 7 + 1 9 1 11 +? Pour calculer une approximation de 2 par dichotomie? Par la méthode de Babylone ( grâce à la suite u n+1 = 1 2 (u n + 2/u n ) avec n importe quel premier terme )? 2.5.2 Listes L = [2,3,5,7,11,13,42,0]; L [2,3,5,7,11,13,42,0] print L[0], L[1], L[ -1], L[ -2], len (L), len ([]) 2 3 0 42 8 0 L [2:5] [5,7,11] [1..3, 7, 10..13] [1,2,3,7,10,11,12,13] On dispose des outils suivants pour manipuler les listes : concaténation : L1 + L2 itération de la concaténation : 3*[1,2] application d une fonction aux éléments : map tri, renversement (change la valeur de L) : reverse(l), sort(l), L.sort(), L.reverse() suppression, indice, ajout d éléments : L.append(x), append(l,x), insert(l,i,x), L.insert(i,x), pop(l,i) 5

2.5.3 Chaînes de caractères Pour faire de la cryptographie ou des codes correcteurs d erreur, on va avoir besoin de manipuler du texte. On donne d abord quelques commandes. phrase = hello world len ( phrase ) 11 print phrase [0], phrase [1], phrase [2], phrase [3] h e l l ord ( u ) 117 chr (117) u 2.5.4 Questions intéressantes (ou pas) Peut-on afficher tous les caractères manipulables avec Sage? Convertir une chaîne de caractères en une liste de nombre? Une chaîne de majuscules en minuscules? Une liste de nombres en caractères? 2.6 Aléatoire Pour obtenir un élément aléatoire, il faut préciser à Sage où doit vivre cet élément. Par exemple, pour obtenir un entier relatif compris entre 3 e t3 : ZZ. random_element ( -3,3) Pour les ensembles, on pourra essayer RR, QQ, GF(7), MatrixSpace(QQ, GF(2)), etc. Pour les polynômes, QQ[x], QQ[x,y]. On peut préciser un degré : QQ[x,y].random_element(degree = 12). 2.6.1 Questions intéressantes (ou pas) Comment jouer à pile ou face? À un lancer de dé? Écrire une fonction qui simule 20 lancers de pile ou face et qui affiche le résultat? Compter le nombre moyen de tirages à faire pour obtenir 42 Piles au pile ou face? 2.7 Si le temps le permet On peut faire du crible d Ératosthène (efficace ou pas), du square and multiply, des matrices, des divisions euclidiennes, des corps finis, des matrices, des matrices à coefficients dans des corps finis, du chiffrement par décalage, du chiffrement par permutations, etc. 6