Entier de type 'sage.rings.integer.integer' Entier de type 'int' c=2 Entier de type 'sage.rings.integer.integer'



Documents pareils
Recherche dans un tableau

STAGE IREM 0- Premiers pas en Python

Introduction à MATLAB R

Initiation à la programmation en Python

Présentation du langage et premières fonctions

TP 1. Prise en main du langage Python

Maple: premiers calculs et premières applications

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

Structures algébriques

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

avec des nombres entiers

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

Quelques tests de primalité

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

Représentation d un entier en base b

Cours Informatique Master STEP

Algorithmique et Programmation, IMA

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)

IMPORTATION, CRÉATION, MANIPULATION, EXPORTATION DE DONNÉES STATISTIQUES

LES TYPES DE DONNÉES DU LANGAGE PASCAL

Utilisation d objets : String et ArrayList

L ALGORITHMIQUE. Algorithme

Licence Sciences et Technologies Examen janvier 2010

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

Programmation VBA/Excel. Programmation VBA. Pierre BONNET. Masters SMaRT & GSI - Supervision Industrielle P. Bonnet

Introduction à l étude des Corps Finis

1. Structure d'un programme FORTRAN 95

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

Chapitre VI - Méthodes de factorisation

Calcul Formel et Numérique, Partie I

Raisonnement par récurrence Suites numériques

Licence Bio Informatique Année Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...

Initiation à l algorithmique

Algorithmique et programmation : les bases (VBA) Corrigé

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

Mathématiques Algèbre et géométrie

Exo7. Calculs de déterminants. Fiche corrigée par Arnaud Bodin. Exercice 1 Calculer les déterminants des matrices suivantes : Exercice 2.

Sub CalculAnnuite() Const TITRE As String = "Calcul d'annuité de remboursement d'un emprunt"

Découverte de Python

Programmation C++ (débutant)/instructions for, while et do...while

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


MISE A NIVEAU INFORMATIQUE LANGAGE C - EXEMPLES DE PROGRAMMES. Université Paris Dauphine IUP Génie Mathématique et Informatique 2 ème année

Correction de l examen de la première session

Chapitre 2 Devine mon nombre!

Exo7. Matrice d une application linéaire. Corrections d Arnaud Bodin.

Définition : On obtient les nombres entiers en ajoutant ou retranchant des unités à zéro.

1 Recherche en table par balayage

SHERLOCK 7. Version du 01/09/09 JAVASCRIPT 1.5

Programmation avec Xcas ou Python

TD3: tableaux avancées, première classe et chaînes

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

ALGORITHMIQUE ET PROGRAMMATION En C

Cours 7 : Utilisation de modules sous python

Initiation à la Programmation en Logique avec SISCtus Prolog

Initiation à LabView : Les exemples d applications :

Extrait du poly de Stage de Grésillon 1, août 2010

2 Comment fonctionne un ordinateur, dans les grandes lignes

IMAGES NUMÉRIQUES MATRICIELLES EN SCILAB

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

INF111. Initiation à la programmation impérative en C amini/cours/l1/inf111/ Massih-Reza Amini

DOCM Solutions officielles = n 2 10.

Chap III : Les tableaux

Exercices Types Algorithmique et simulation numérique Oral Mathématiques et Algorithmique Banque PT Propositions de réponses

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

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

Initiation à la programmation OEF pour Wims (exercices).

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Système binaire. Algèbre booléenne

Corrigé des TD 1 à 5

DM 1 : Montre Autoquartz ETA

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

AWS avancé. Surveiller votre utilisation d EC2

Cours de Programmation en Langage Synchrone SIGNAL. Bernard HOUSSAIS IRISA. Équipe ESPRESSO

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme

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

Algorithmes et Programmes. Introduction à l informatiquel. Cycle de vie d'un programme (d'un logiciel) Cycle de vie d'un programme (d'un logiciel)

Java Licence Professionnelle Cours 7 : Classes et méthodes abstraites


Programmation Classique en langage C


Peut-on tout programmer?

I. Polynômes de Tchebychev

Exercices Corrigés Premières notions sur les espaces vectoriels

# let rec concat l1 l2 = match l1 with [] -> l2 x::l 1 -> x::(concat l 1 l2);; val concat : a list -> a list -> a list = <fun>

Compléments de documentation Scilab : affichage de texte et formatage de nombres

I. Introduction aux fonctions : les fonctions standards

Théorie et codage de l information

COURS EULER: PROGRAMME DE LA PREMIÈRE ANNÉE

Cours 02 : Problème général de la programmation linéaire

ACTIVITÉ DE PROGRAMMATION

Cours d Algorithmique et de Langage C v 3.0

Cours d arithmétique Première partie

Python - introduction à la programmation et calcul scientifique

Vous revisiterez tous les nombres rencontrés au collège, en commençant par les nombres entiers pour finir par les nombres réels.

Cours d algorithmique pour la classe de 2nde

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

as Architecture des Systèmes d Information

Transcription:

Les types. Sage est un langage typé : quand on utilise une fonction, il faut que les entrées soient de type compatible avec cette fonction. Par exemple, a^b fonctionne si a et b sont des entiers, mais pas si a et b sont deux matrices. Pour connaitre le type d'un élément a, on utilise la commande type(a). Il existe deux variantes du type ''entier''. On les obtient de la façon suivante. a=zz(2) b=int(2) Entier de type 'sage.rings.integer.integer' Entier de type 'int' c=2 Entier de type 'sage.rings.integer.integer' Certaines fonctions ne sont définies que pour un des deux types d'entiers. On passe de l'un à l'autre avec ces mêmes commandes : b=zz(b) a=int(a) b est maintenant un entier de type 'sage.rings.integer.integer' a est maintenant un entier de type 'int' Voici une liste de quelques types classiques : ZZ(4) int(4) 'sage.rings.integer.integer' (entier Sage) 'int' (entier Python) 5/2 'sage.rings.rational.rational' 5,367 'sage.rings.real_mpfr.realliteral' 5*CC(i) L=[7,14,21] true un polynôme en une variable à coefficients entiers 'sage.rings.complex_number.complexnumber' 'list' 'bool' Dans le même ordre d'idée,voici quelques ensembles : 'sage.rings.polynomial.polynomial_integer_dense_flint.polynomial_ integer_dense_flint' NN ZZ QQ RR CC Non negative integer semiring Integer Ring Rational Field Real Field with 53 bits of precision Complex Field with 53 bits of precision

Les booléens et les tests False True faux vrai a==c a!=c a>c a>=c égalité (ok si mélange d'entiers Sage et Python) différence supérieur supérieur ou égal x or y x and y not x x in E x is y ou logique et logique non logique test d'appartenance test d'identité Structure partagée, structure dupliquée Lorsqu'on ''copie'' un élément, deux cas peuvent se présenter : un deuxième élément distinct du premier, mais ayant la même valeur, est créé il n'y a qu'un seul élément, mais celui-ci a deux noms Pour savoir dans quel cas on se trouve, on utilise le test x is y qui répond vrai si x et y désignent le même objet. L1=[1,2,3,4,5,6,7,8,9] L2=L1 L2[5]=10 L1 L1 is L2 En modifiant L2, on a également modifié L1 car L1 et L2 font référence à la même liste. Quelques façons de dupliquer un élément : L1=[1,2,3,4,5,6,7,8,9] L3=L1[:] L3[2]=100 L1 L1 is L3 L3 et L1 sont deux listes distinctes, modifier l'une ne change pas l'autre. L2=L1[:] M2=copy(M1) def copyrec (L): if type(l)==list: return map(copyrec,l) else : return L liste matrice pour dupliquer des listes de plusieurs niveaux.

Quelques opérations élémentaires sur les entiers Sage a**b a^b a/b a//b a%b exponentiation division exacte (le résultat est une fraction ou parfois un entier) quotient de la division euclidienne reste de la division euclidienne /!\ Ces commandes sont valables avec des entiers de type 'sage.rings.integer.integer'. Avec des type 'int', on obtient des résultats différents. ZZ(5)/ZZ(2) 5/2 int(5)/int(2) 2 De manière générale, à un type donné sont associées des méthodes. Une méthode est une fonction dont la syntaxe est différente de ce que vous avez vu jusque là en Maple, Matlab, Scilab ou autre. Par exemples, pour obtenir les diviseurs d'un entier, on fait : 36.divisors() On applique la méthode divisors à l'entier 36, sans paramètres supplémentaires (d'où les parenthèses vides). Certaines méthodes nécessitent d'autres paramètres, comme par exemple 8.inverse_mod(13). Voici une liste non-exhaustives de méthodes disponible sur les entiers : a.ndigits(b) a.divisors() a.prime_divisors() a.factor() a.is_prime() nombre de chiffres en base B (défaut : B=10) les diviseurs de a les diviseurs premiers de a la factorisation de a test de primalité a.is_pseudoprime() test de pseudo-primalité (???) a.next_prime() a.lcm(b) a.gcd(b) le prochain nombre premier (basé sur is_prime) ppcm de a et b pgcd de a et de b

Les listes, séquences, n-uplets, ensembles L=[2,3,5,7,11] L[2] L[m:n] L[p:] L[:p] L[-1] L[3]=13 L+M range(a,b,c) range(a,b) range(b) [a..b] L.remove(x) len(l) définir une liste extraire un élément. On commence à 0. extrait les éléments de m à n-1 à partir de l'indice p jusqu'à l'indice p exclus dernier élément de la liste modifier un élément concaténer deux listes liste d'entier 'int' allant de a à b-1, et de pas c. liste d'entier 'int' allant de a à b-1, et de pas 1. liste d'entier 'int' allant de 0 à b-1, et de pas 1. liste d'entier Sage allant de a à b enlève la première occurrence de x dans la liste L longueur de L Un n-uplet fonctionne comme une liste, mais ne peut être modifié. L=(2,3,5,7,11) définir un n-uplet L[2] extraire un élément. On commence à 0. len(l) longueur de L Une séquence est une liste dont tous les éléments appartiennent à un ensemble commun. Les fonctions sur les listes s'appliquent aux séquences. Il y a deux types d'ensembles : les ensembles Python et les ensembles Sage. s=set([1,2,3,2]) S=Set([1,2,3,2] définir un ensemble Python définir un ensemble Sage On trouvera les fonctions basique comme l'union ou l'intersection en faisant S. ou s. suivi de tabulation.

Les matrices Il y a plusieurs façons de définir une matrice ou un vecteur à coefficients entiers. Voici quelques exemples équivalents. Comme pour les listes, la numérotation des lignes et colonnes commence à 0. M=matrix([[1,2],[3,4]]) M=matrix(2,2,[1,2,3,4]) M=matrix(ZZ,2,2,[1,2,3,4]) matrix(a,n,m,l) v=vector([1,2,3]) M[1,2] M[:,1] M[1,:] définir une matrice A anneau (ou corps) des coefficients n nombre de lignes m nombre de colonnes L liste des coefficients définir un vecteur extraire un coef (ici, ligne 2 et colonne3) extraire une colonne (matrice) extraire une ligne Et voici une liste de méthodes sur les matrices : M.ncols() M.column(i) M.columns() M.base_ring() M.transpose() M.conjugate() M.conjugate_transpose() M.rank() M.trace() M.det() M.determinant() M.inverse() M.LU() M.gram_schmidt() M.minpoly() M.minimal_polynomial() M.minpoly(var='X') nombre de colonnes colonne n i liste des colonnes de M affiche l'anneau des coefficients de M la transposée de M la conjuguée de M la transposé de la conjuguée de M le rang de M la trace de M le déterminant de M l'inverse de M factorisation LU (pas exactement celle vue en MF) orthogonalisation par lignes polynôme minimal. On peut éventuellement préciser la variable. M.charpoly() polynôme caractéristique de M. (idem) M.characteristic_polynomial() M.eigenvalues() M.right_eigenvectors() les valeurs propres de M les vecteurs (+ valeurs) propres de M

M.right_eigenmatrix() M.right_eigenspaces() M.add_multiple_of_column M.swap_column M.rescale_col M.pivots() M.echelon_form() M.rref() M.echelonize() P et D telles que M=P*D*P^(-1) Les sous-espaces propres opérations élémentaires sur les colonnes (voir l'aide pour l'ordre des arguments) Les colonnes contenant des pivots après le pivot de Gauss forme échelonnée forme échelonnée réduite remplace M par sa forme échelonnée

Les polynômes Avant de pouvoir définir un polynôme, il faut définir l'anneau auquel il appartient. A.<X>=PolynomialRing(ZZ) A.<X,Y>=PolynomialRing(K) A=Z[X] A=K[X,Y] On peut ensuite définir un polynôme, qui est automatiquement développé. P=2*(X+2)^2 Voici quelques méthodes sur les polynômes : P.coefficients() P.coeffs() P.list() P.constant_coefficient() P.leading_coefficient() P.exponents() P.variables() P.degree() P.subs(X=5) P(5) P.substitute(X=5) P.is_irreducible() P.gcd(Q) P.lcm(Q) P.roots() P.roots(R) P.complex_roots() P.real_roots() P.real_root_intervals() liste des coeffs non-nuls de P liste des coeffs de P (constant en premier) coefficient constant de P coefficient dominant de P liste des exposants ayant un coefficient non nul n-uplet des indéterminées de P le degré de P évaluer P savoir si P est irreductible pgcd de P et Q ppcm de P et Q affiche les racines de P : -dans l'anneau des coeffs -dans l'anneau spécifié -dans CC -dans RR Donne des intervalles contenant les racines réelles.

Un peu de programmation for indice in liste: instructions if test: instructions if test: instructions_1 instructions_2 if test: instructions_1 elif autre test: instructions_2 instructions_3 initialisation while condition: instructions def fonction (param1, param2): instructions return resultat fonction(valeur1, valeur2) L=[] M=[] for i in [1..10]: L=L+[i^2] M=M+[i^3] L M if a%2==0: print('a est pair') if a%2==0: print('a est pair') print('a est impair') a=randint(1,10) if a==1: print ('echec critique') elif a<7: print ('echec') print ('succes') L=[] i=0 while i^2<=1000: L=L+[i] i=i+1 def LanceUnDe20 (difficulte): a=randint(1,20) if a==1: s='echec critique' elif a==20: s='reussite critique' elif a<difficulte: s='echec' s='reussite' return(a,s) LanceUnDe20(14)