Contenus Articles Mathématiques avec Python et Ruby 1 Nombres entiers en Python
Contenus Articles Mathématiques avec Python et Ruby 1 Nombres entiers en Python 4 Fractions en Python 8 Nombres réels en Python 12 Nombres complexes en Python 15 Quaternions et octonions en Python 19 Ensembles en Python 27 Nombres pseudoaléatoires en Python 31 Simulation avec Python 36 Statistique inférentielle avec Python 39 Suites en Python 46 Fonctions en Python 50 Analyse numérique en Python 54 Points en Python 55 Vecteurs en Python 59 Droites en Python 62 Une tortue qui accélère la résolution de problèmes 65 Résolution de systèmes en Python 74 Triplets pythagoriciens en Python 78 Systèmes congruentiels en Python 78 Freudenthal en Python 81 Nombres entiers en Ruby 84 Fractions en Ruby 90 Nombres réels en Ruby 94 Nombres complexes en Ruby 97 Quaternions et octonions en Ruby 100 Ensembles en Ruby 107 Nombres pseudo-aléatoires en Ruby 112 Suites en Ruby 117 Fonctions en Ruby 125 Analyse numérique en Ruby 129 Points en Ruby 130 Vecteurs en Ruby 136 Droites en Ruby 139 Résolution de systèmes en Ruby 142 Triplets pythagoriciens en Ruby 143 Systèmes congruentiels en Ruby 143 Freudenthal sous Ruby 146 Joukovski et Ruby 150 Références Sources et contributeurs de l’article 158 Source des images, licences et contributeurs 159 Licence des articles Licence 160 Mathématiques avec Python et Ruby 1 Mathématiques avec Python et Ruby Introduction Les deux langages de programmation Python et Ruby ont en commun : 1. 1. d'être libres (en particulier on peut aisément consulter leur code source, écrit dans le langage lui-même) ; 2. 2. d'être des langages objets (et des objets mathématiques, il y en a) ; 3. d'être munis de consoles légères et interactives (IDLE pour Python, irb (interactive Ruby) pour Ruby) Il est donc intéressant d'explorer ces langages pour résoudre des problèmes de nature mathématique. Dans ce livre, nous énumèrerons ce que ces langages apportent à l'enseignement des mathématiques et à celui de l'algorithmique. En particulier, nous étudierons comment certaines structures mathématiques sont gérées par ces deux langages. Important : Certaines fonctionnalités de Python 3.2 seront utilisées ici (par exemple, le fait que la division par défaut est la division exacte et pas la division euclidienne, la présence de print, le fait que l'objet fraction est fourni avec Python 3.2...). Deux moyens ont été utilisés pour mettre au point les scripts Python ci-dessous : 1. la console IDLE qui est interactive ; 2. l'écriture d'un fichier test.py puis l'écriture dans une console système de python test.py ou python3.2 test.py selon le cas. Pour Ruby, c'est la version 1.9.1 qui sera utilisée. Là encore, deux moyens ont été utilisés : 1. l'interpréteur irb (Interactive Ruby) qui est écrit en Ruby (son code source est donc consultable) et qui est interactif ; 2. l'écriture d'un script dans un fichier test.rb puis l'exécution dans la console système, de ruby test.rb. 3. Freeride est un éditeur léger qui fonctionne bien avec Ruby. FreeRide peut exécuter le programme Ruby dans la fenêtre active sans avoir à quitter l'éditeur, en cliquant simplement sur Exécuter. On peut préférer NetBeans pour son jeu de fonctionnalités plus étendues et l'intégration avec Java, mais NetBeans requiert plus de ressources système. Les deux programmes sont disponibles pour Windows, Mac OS X, et Linux, et les deux peuvent gérer Mathématiques avec Python et Ruby 2 des projets Ruby, qui peuvent inclure plusieurs fichiers texte (connexe) contenant des programmes Ruby. 4. 4. Quoi qu'il en soit, pour ce livre, Geany a été utilisé, principalement parce qu'il gère à la fois Python et Ruby (parmi beaucoup d'autres), et est assez petit. 5. bien que cette fonctionnalité n'ait pas été utilisée ici, Ruby possède un interpréteur en ligne, qui permet donc de faire du Ruby sans installation (certes, il y a un équivalent pour Python, c'est SAGE). L'interpréteur en ligne de Ruby est disponible en suivant ce lien : [1]. Sommaire Python • Nombres • Nombres entiers • Fractions • Réels • Complexes • Quaternions • Probabilités • Évènements • Nombres pseudoaléatoires • Simulation du hasard • Statistique inférentielle • Analyse • Suites • Fonctions • Analyse numérique • Géométrie • Points • Vecteurs • Droites • Résolution de problèmes • Exploration du module "turtle" • Systèmes • Triplets pythagoriciens • Systèmes congruentiels • Problème de Freudenthal Mathématiques avec Python et Ruby 3 Ruby • Nombres • Nombres entiers • Fractions • Réels • Complexes • Quaternions • Probabilités • Évènements • Nombres pseudo-aléatoires • Analyse • Suites • Fonctions • Analyse numérique • Géométrie • Points • Vecteurs • Droites • Résolution de problèmes • Systèmes • Triplets pythagoriciens • Systèmes congruentiels • Problème de Freudenthal • Théorie de Joukovski Pour aller plus loin • Pour faire des mathématiques sous Python, on consultera avec bonheur et intérêt les recettes de Tyrtamos [2]. • Pour approfondir votre découverte de ces langages, Programmation Ruby, Exemples de code ruby, Programmation Python, Utilisons Python pour enseigner les algorithmes ou encore Apprendre à programmer avec Python Références [1] http:/ / tryruby. org/ [2] http:/ / python. jpvweb. com/ mesrecettespython/ doku. php? Nombres entiers en Python 4 Nombres entiers en Python Les nombres entiers ne sont pas les seuls nombres, comme on le verra dans les chapitres suivants. Alors comment fait Python pour savoir qu'un nombre est entier? Comme le langage est faiblement typé, il doit le deviner. Le critère est simple: Pour qu'un nombre soit entier, il ne doit pas avoir de virgule (représentée dans Python par un point décimal). Les nombres entiers dans Python Ainsi, si on entre a=3 print(type(a)) b=3.14 print(type(b)) c=int(b) print(c) on constate que Python sait que a est entier, que b ne l'est pas, et que c peut être entier bien qu'obtenu à partir de b (qui est réel). Certains calculs devant donner un résultat entier ne le font pas toujours en Python. Par exemple, alors que , Python considère ce nombre comme un réel (non entier)! from math import * a=sqrt(100) print(a.is_integer()) Nombres entiers en Python 5 Opérations Addition, soustraction et multiplication Les trois premières opérations se notent avec les symboles +, - et * comme dans la plupart des langages de programmation. La somme, la différence et le produit de deux entiers (ou plus) sont des entiers (relatifs): a=5 b=-8 print(a+b) print(a-b) print(a*b) La tortue On peut représenter l'addition par des mouvements successifs de la tortue. Pour cela il faut bien entendu importer le module turtle. Après ça pour additionner 55 et 34, on peut faire avancer la tortue successivement de 55 pixels puis 34 pixels, et regarder où elle est: from turtle import * forward(55) forward(34) print(position()) Pour soustraire le deuxième nombre au lieu de l'additionner, il suffit de faire reculer la tortue au lieu de la faire avancer; et ça marche même avec des nombres négatifs: from turtle import * forward(55) backward(-34) print(position()) Divisions Il y a deux sortes de divisions d'entiers en Python: Le quotient euclidien, qui est un entier, et le quotient exact, qui est une fraction (pour Python, un réel): Quotients Dans les anciennes versions de Python, le script suivant a=3 b=2 print(a/b) affichait 1 au lieu de 1.5, parce que pour Python, comme a et b sont entiers, leur quotient était logiquement euclidien. Ceci a changé, maintenant le script ci-dessus produit bien 1.5; mais du coup, si par hasard on voulait quand même calculer une division euclidienne avec Python? Et bien dans ce cas il faudrait dédoubler le slash qui code la division: a=3 b=2 print(a//b) Nombres entiers en Python 6 Ce peut être utile parce que même en divisant 4 par 2, le résultat est un réel non entier, alors que la division euclidienne produit bien le nombre entier 2. Reste euclidien Le reste de la division euclidienne de 13 par 8 est 5. Pour le calculer, on utilise l'opérateur infixé %: a=13 b=8 print(a%b) Cette opération permet de travailler sur les congruences. Remarque: Si b=0, on a le même message d'erreur que lorsqu'on divise par 0. Divisibilité Deux entiers quelconques on un pgcd. En Python, on l'obtient avec gcd. Mais cette fonction ne se trouve pas par défaut dans Python; elle se trouve dans le fichier fractions.py, dont on peut importer la totalité des objets par from fractions import *: a=13572468 b=12345678 print(gcd(a,b)) Comme Python est libre, on peut consulter le source de fractions.py, où on trouve ceci: def gcd(a, b): while b: a, b = b, a%b return a On reconnaît (d'autant plus aisément que le langage est concis) l'algorithme d'Euclide. Puissances Beaucoup de langages de programmation utilisent le chapeau pour représenter les puissances. Pas Python pour qui le chapeau est déjà pris par une autre opération (le ou exclusif bit à bit). Alors c'est l'astérisque de la multiplication qui est utilisé pour les puissances, mais en le dédoublant: a=4 b=2 print(a**b) print(b**a) Remarque: Si l'exposant est négatif ou non entier, le résultat est un réel. En particulier, les deux opérations ci-dessous ont le même effet: print(100**0.5) from math import * print(sqrt(100)) Nombres entiers en Python 7 Priorités opératoires En Python comme en algèbre, on effectue dans l'ordre 1. 1. Les parenthèses 2. uploads/Management/ mathematiques-avec-python-amp-ruby.pdf
Documents similaires
![](https://b3c3.c12.e2-4.dev/disserty/uploads/preview/biFPp0vitaX9BwmMJ5iqL6OZJl9iW9bbpsrOSi2wS2bl4DA5OYoITPCKwnFra5oyT4oOl8K3ZsDm9MjgRIT6VqY1.png)
![](https://b3c3.c12.e2-4.dev/disserty/uploads/preview/PYGF7noxkRxpUK3sR1lji9D9Z9BHkXfiaTCPLqIJJBmO7GM83pVLwyzWLD2HE7OLPzsBC9ncHGvWk8eeIE4Bdhw2.png)
![](https://b3c3.c12.e2-4.dev/disserty/uploads/preview/4HugbzCrD392xiiLohVyVDqFSbiQpgVn0SHSjPXNQR8v9v96bRM9HDZr4ez16tRquaGvMuz2sCFJ7ySajZAn9BeU.png)
![](https://b3c3.c12.e2-4.dev/disserty/uploads/preview/ElVjeGzb34uD44FoZZHmh0lndpZiIzXhyqsWufgvCmJBx0Km0RvXNfmJsJOZbBhGomgrA1NrnaQyoF9ItYpzGNz7.png)
![](https://b3c3.c12.e2-4.dev/disserty/uploads/preview/zqzflmqJNAW0pS3tWmRD17wpLiLsaU4sAy1D269LAXkUMjbI9GyaQrXI60X43plOvFYOy97YVDJ7JNbmdHf4Cgn5.png)
![](https://b3c3.c12.e2-4.dev/disserty/uploads/preview/KZGEAV6tfQxXwh15bwmO2XuzMbPRzKzWHrgXmIMfBc2ztDonJxKAxVhsBohUNWI3fP1nI0dbXXrprmKsNYmQobjC.png)
![](https://b3c3.c12.e2-4.dev/disserty/uploads/preview/EtLTx7RuryB1RZogB9Ya5qAfzvn7KA1MN08fDCcQL8eJQDfHf1NUjpYVVlmoBhI3HvCfBaZUhxtOxrNcoAYp9hl4.png)
![](https://b3c3.c12.e2-4.dev/disserty/uploads/preview/xqrbilwz4XX4Q1KgI0eE6gx90Qtj0f222Fo0OH3dXNjtxk5ZtbKVOExhyT7ESeorUYdbsEnkSg8qqlJhTGp85E0C.png)
![](https://b3c3.c12.e2-4.dev/disserty/uploads/preview/I8eJek6Cagdp5o5ZtD7Atm3i8FqTPxsr7FeNj5JpZuCspGH2TmOiP3xp9aaHsTy575pUByyxOrct5mSPkIDrY1a3.png)
![](https://b3c3.c12.e2-4.dev/disserty/uploads/preview/C58k2vRLDiDDYT5PJUNmvAvzY3N7suqY5YQo2mmFeHFhgfZ3rnOyEdKtLmjIIL8o0aqPq4lSf0MFCTvSZE4LgSf6.png)
-
27
-
0
-
0
Licence et utilisation
Gratuit pour un usage personnel Attribution requise- Détails
- Publié le Nov 13, 2022
- Catégorie Management
- Langue French
- Taille du fichier 2.5068MB