ChapXIII CalculPython
ChapXIII CalculPython
Scientific Processing
("init"," "):("final"," ", "N"),
}
final_states = ["final"]
Version
initial_state = "init",
4
Introduction (Historique).
Python est un langage intéressant pour sa facilité et sa richesse en possibilités d’utilisation. En
version de base, Python dispose de nombreuses fonctionnalités intégrées en standard.
Autour des aptitudes de base standard, Il est extensible par des modules de tout bord, qui sont les
contributions de développeurs dévoués à la cause de l’Open Source. Ce sont des bibliothèques qui
aident le développeur à travailler sur des projets particuliers. Plusieurs bibliothèques peuvent ainsi
être installées pour, par exemple, développer des interfaces graphiques en Python (cas de tkinter).
Python est un langage de programmation, dont la première version est sortie en 1991. Créé par
Guido van Rossum, il a été porté du Macintosh, de son développeur, qui travaillait à cette époque
au Centrum voor Wiskunde en Informatica aux Pays-Bas, jusqu'à se voir associer une organisation
à but non lucratif particulièrement dévouée, la PSF (Python Software Foundation), créée en 2001. Ce
langage a été baptisé ainsi en hommage à la troupe de comiques les «Monty Python».
Développeur Informaticien
Néerlandais (langage Python)
Guido van Rossum
31 janvier 1956 Monty Python est le nom d'une troupe célèbre
d'humoristes britanniques (1969).
5
Introduction (Open Source vs. Proprietary).
La PSF (Python Software Foundation), créée en 2001, appartient à Open Source Initiative, et à la FSF
(Free Software Foundation)
Un logiciel propriétaire, appelé parfois de manière militante logiciel privateur, ou encore logiciel non
libre, est un logiciel dont la duplication, la modification ou l'usage est limité.
La désignation Open Source ou ‘Code Source Ouvert’, s'applique aux logiciels dont la licence
respecte des critères précisément établis par l'Open Source Initiative, c'est-à-dire les possibilités de
libre redistribution, d'accès au code source et de création de travaux dérivés. Mis à la disposition du
grand public, ce code source est généralement le résultat d'une collaboration entre développeurs.
6
Python Software environnment
Installation
Beaucoup de méthodologies sont valable pour développer un environnement compatible pour une programmation avec le
langage Python (Celui-ci est téléchargeable sous deux version 2.X ou 3.X, version de base qui ne sont pas forcement
totalement compatible). Le langage Python est utilisable sous différent système d’exploitation (Win, Linux/UNIX ou Mac OS).
Une autre alternative, encore plus interessante que la première
est d’installer le logiciel ANACONDA.
Notre choix
Environneme
nt
Notre
7
choix
IDE
Elaboration d’un environnement logiciel
Python
Installation
La plateforme ANACONDA installe tout le nécessaire (l’environnement PYTHON 3.X/2.X) et donnera accès aux possibilités
d’étendre l’installation aux modules PYTHON nécessaires pour le développement de calcul scientifique de l’ingénieur ou du
chercheur.
Notre choix
Les différents modules (librairies) nécessaire sont : Environneme
nt
NUMPY : Analyse numérique & Matrices
SCIPY : Extension pour calcul scientifique
MATPLOTLIB : Dessin de courbe
SYMPY : calcul symbolique
NETWORKX : manipulation et gestion des graphes
PLOTLY : Librairie en ligne pour dessin de courbes
EVENTLET :
TKINTER : Librairie pour manipulation d’interface graphique
IPYTHON : Bibliothèque pour calcul scientifique
CYTHON : Interface pour environnement C/C++
JPYTHON : Interface pour environnement JAVA
Notre choix
Environneme
nt Notre
choix
De l’IDE
9
La plateforme ANACONDA = {Python, Modules}
Elaboration d’un environnement logiciel
Python
Personnalisation : Sous PyCharm, en mode TEREMINAL, nous ajoutons
les modules nécessaires à la plateforme ANACONDA .
Dans la fenêtre TERMINAL, nous utiliserons CONDA
H:\PycharmProjects\essai>conda install mpi4py
Using Anaconda Cloud api site
https://api.anaconda.org Commande
Fetching package metadata: .... installation
Solving package specifications: .......... modules
Package plan for installation in environment h:\
Anaconda325:
The following packages will be downloaded:
package | build
mpi4py-2.0.0 | py35_0 264 KB
The following NEW packages will be INSTALLED:
mpi4py: 2.0.0-py35_0 (copy)
Idée du
Proceed ([y]/n)? Y
jour
Fetching packages ...
mpi4py-2.0.0-p 100% |###| Time: 0:00:01 169.26 kB/s
Extracting packages …
[COMPLETE]|##################################| 100%
Fenêtre
Linking packages ...
10
ABOUT de
[mpi4py]| | 0%
PyCharm
[COMPLETE]|##################################| 100%
Elaboration d’un environnement logiciel
Python
Utilisation : Sous PyCharm, en mode TEREMINAL, nous ajoutons les
modules nécessaires à la plateforme ANACONDA .
Caractéristiques du langage script Python :
Avantages :
• Très riches librairies pour le calcul scientifique.
• Langage bien structuré, permettant d’écrire des
programmes lisibles ‘we code what we think’.
• D’autres librairies hors le cadre du calcul scientifique
(Gestion des services Web, Accès aux ports série, etc.)
• Graticiel ‘Open Source’, derrière une large communauté.
• Compacité du programme développé.
• Beaucoup d’alternatives pour l’édition (IDE).
Inconvénients:
• Environnement de développement moins.
• Pas tous les algorithmes qui peuvent être trouvés dans
le logiciel.
11
ABOUT de
2. Exécution de fichier script .py
PyCharm
Elaboration d’un environnement logiciel
Python
Utilisation : Sous PyCharm,.
Caractéristiques du langage script Python :
Python est un langage script informatique générique et
moderne.
• Langage Python intègre tous les types de données
(chaîne, réel, entier), les contrôles, des collections de
données (listes, tuples ou dictionnaires), et des modèles
de flux, etc.
• La bibliothèque standard intègre plusieurs Modules.
• Un grand nombre de modules spécialisés ou des
applications sont écrites en Python: protocoles web,
Mode framework web, etc ... Ainsi que le calcul scientifique.
programme - Outils de développement (test automatique, génération de
(.py) documentation).
- et encore plus…
Graphiqu
e 3D
14
Domaines d’utilisation (Qui Utilise de Python)
YouTube
DropBox
Survey Monkey
Google
Quora
Bitly
Reddit
Yahoo Maps
Hipmunk
Pinterest
Instagram
Disqus
Spotify
Washington Post
Firefox
NASA
Bitbucket
Reddit Gifts
Prezi
Playfire
Eventbrite 15
Domaines d’utilisation
Les domaines utilisant le langage script Python sont nombreux :
Calcul scientifique de base (Modèle (Non-) linéaire)
Python pour traitement du signal
Calcul de probabilité et statistiques
Développement de graphiques interactive avec Plotly
Visualisation des données avec Lightning
Lissage et régression non Paramétrique
Solveur d’équations différentielles partielles
Librairie Python d’analyse des données (Panda)
Analyse de Big-Data en python
Machine Learning sous Python avec le package scikit-learn
Econométrie sous Python avec le package StatsModels
Introduction à la programmation parallèle avec MPI Python
Théorie des graphes
Commande de processus et systèmes embarqués
Plateforme CAD 2D/3D
Bioinformatique et manipulation du génome
Développement de sites Web (Framework Django)
16
Domaines d’utilisation Importation de
Les domaines utilisant le langage script Python sont nombreux : la librairie
Calcul scientifique de base (Modèle (Non-) linéaire) Numpy
import numpy as np
Python pour traitement du signal systeme = np.array([[1,2],[3,-4]])
Calcul de probabilité et statistiques valeur=np.array([[3],[1]])
Développement de graphiques interactive avec Plotly sol=np.linalg.solve(systeme,valeur)
Visualisation des données avec Lightning print("x=",sol[0,0]," et y=",sol[1,0])
Lissage et régression non Paramétrique x= 1.4 et y= 0.8
Solveur d’équations différentielles partielles # Résolution de système linéaire A.X=b
>>> import numpy as np
Librairie Python d’analyse des données (Panda)
>>> from scipy import linalg
Analyse de Big-Data en python >>> A = np.array([[1, 2], [3, 4]])
Machine Learning sous Python avec le package scikit-learn >>> A
Econométrie sous Python avec le package StatsModels array([[1, 2],[3, 4]])
Introduction à la programmation parallèle avec MPI Python >>> b = np.array([[5], [6]])
Théorie des graphes >>> b
Commande de processus et systèmes embarqués array([[5],[6]])
>>> linalg.inv(A).dot(b) # slow
Plateforme CAD 2D/3D
array([[-4. ],[ 4.5]])
Bioinformatique et manipulation du génome
>>> A.dot(linalg.inv(A).dot(b)) - b # Vérification
Développement de sites Web (Framework Django) array([[8.88178420e-16],[2.66453526e-15]])
>>> np.linalg.solve(A, b) # fast
array([[-4. ],[ 4.5]])
>>> A.dot(np.linalg.solve(A, b)) - b # Vérification
array([[ 0.],[ 0.]])
17
Domaines d’utilisation
Les domaines utilisant le langage script Python sont nombreux :
Calcul scientifique de base (Modèle (Non-) linéaire)
Python pour traitement du signal
Calcul de probabilitéimport numpy as np
et statistiques
from scipy import signal, misc
Développement de graphiques interactive avec Plotly
import matplotlib.pyplot as plt
Visualisation des données avec Lightning
Lissage et régression non Paramétrique
image = misc.face(gray=True).astype(np.float32)
Solveur d’équationsderfilt
différentielles partielles
= np.array([1.0, -2, 1.0], dtype=np.float32)
Librairie Python d’analyse des données (Panda)
ck = signal.cspline2d(image, 8.0)
deriv
Analyse de Big-Data en python= (signal.sepfir2d(ck, derfilt, [1]) +signal.sepfir2d(ck, [1], derfilt))
Machine Learning sous Python avec le package scikit-learn
laplacian = np.array([[0, 1, 0], [1, -4, 1], [0, 1, 0]], dtype=np.float32)
Econométrie sous Python avec le package StatsModels
deriv2 = signal.convolve2d(ck,laplacian,mode=“same”,boundary=“symm”)
Introduction à la programmation
plt.figure() parallèle avec MPI Python
Théorie des graphes plt.imshow(image)
Commande de processus et systèmes embarqués
plt.gray()
Plateforme CAD 2D/3D plt.title(”Image original”)
plt.show() du génome
Bioinformatique et manipulation
Développement de plt.figure()
sites Web (Framework Django)
plt.imshow(deriv)
plt.gray()
plt.title(“sortie avec filtre spline”)
18
plt.show()
Domaines d’utilisation
Les domaines utilisant le langage script Python sont nombreux :
Calcul scientifique de base (Modèle (Non-) linéaire)
Python pour traitement du signal
Calcul de probabilité et statistiques
Développement from matplotlib.pyplot
de graphiques import
interactive avec figure, hold, plot, legend, draw
Plotly
from numpy import linspace
Visualisation des données avec Lightning
import scipy.stats as stats
Lissage et régression
from non Paramétrique
numpy.random import randn
Solveur d’équations
x = randn(100) partielles
différentielles
Librairie Python d’analyse des données (Panda)
fig = figure()
Analyse de Big-Data
ax = en python
fig.add_subplot(111)
Machine Learning ax.hist(x,
sous Python bins=30, label=’Empirical’)
avec le package scikit-learn
xlim = ax.get_xlim()
Econométrie sous Python avec le package StatsModels
ylim = ax.get_ylim()
Introduction à la programmation parallèle avec MPI Python
pdfx = linspace(xlim[0], xlim[1], 200)
Théorie des graphes
pdfy = stats.norm.pdf(pdfx)
Commande de processus
pdfy = pdfy et systèmes embarqués
/ pdfy.max() * ylim[1]
Plateforme CADhold(True)
2D/3D
Bioinformatique et manipulation
plot(pdfx, du génome
pdfy, ’r-’, label=’PDF’)
Développement ax.set_ylim((ylim[0],
de sites Web (Framework 1.2 * ylim[1]))
Django)
legend()
hold(False)
draw()
19
Domaines d’utilisation
Les domaines utilisant le langage script Python sont nombreux : 20
Calcul scientifique de base (Modèle (Non-) linéaire)
Python pour traitement du signal
Calcul de probabilité et statistiques
Développement de graphiques interactive avec Plotly
Visualisation des données avec Lightning
Lissage et régression non Paramétrique
Solveur d’équations différentielles partielles
Librairie Python d’analyse des données (Panda, QtGraph)
Analyse de Big-Data en python
Machine Learning sous Python avec le package scikit-learn
Econométrie sous Python avec le package StatsModels
Introduction à la programmation parallèle avec MPI Python
Théorie des graphes
Commande de processus et systèmes embarqués
Plateforme CAD 2D/3D
Bioinformatique et manipulation du génome
Développement de sites Web (Framework Django)
Domaines d’utilisation
Les domaines utilisant le langage script Python sont nombreux :
Calcul scientifique de base (Modèle (Non-) linéaire)
%matplotlib inline
Python pour traitement du signal from pylab import plot, show, title, xlabel, ylabel, subplot, savefig
Calcul de probabilité et statistiques from scipy import fft, arange, ifft
from numpy import sin, linspace, pi
Développement de graphiques interactive avec Plotly from scipy.io.wavfile import read,write
Visualisation des données avec Lightning
Code du
def plotSpectru(y,Fs):
n = len(y) # lungime semnal
Lissage et régression non Paramétrique
Solveur d’équations différentielles partielles
k = arange(n)
T = n/Fs
traitement audio
21
frq = k/T # two sides frequency range
Librairie Python d’analyse sonore du coran frq = frq[range(n/2)] # one side frequency range
Y = fft(y)/n # fft computing and normalization
Y = Y[range(n/2)]
Analyse de Big-Data en python plot(frq,abs(Y),'r') # plotting the spectrum
xlabel('Freq (Hz)')
Machine Learning sous Python avec le package scikit-learn ylabel('|Y(freq)|')
Econométrie sous Python avec le package StatsModels
Fs = 44100; # sampling rate
Introduction à la programmation parallèle avec MPI Python rate,data=read('fatiha.wav')
Théorie des graphes y=data
lungime=len(y)
Commande de processus et systèmes embarqués timp=len(y)/44100.
Plateforme CAD 2D/3D t=linspace(0,timp,len(y))
subplot(2,1,1)
Bioinformatique et manipulation du génome plot(t,y)
xlabel('Time')
ylabel('Amplitude')
subplot(2,1,2)
plotSpectru(y,Fs)
show()
Exemple
de
22
graphe
Domaines d’utilisation
Les domaines utilisant le langage script Python sont nombreux :
Importation
Calcul scientifique de base (Modèle (Non-) linéaire)
Python pour traitement du signal librairie GPIO
import RPi.GPIO as GPIO
Calcul de probabilité et statistiques
Développement de graphiques interactive avec Plotly
GPIO.setmode(GPIO.BCM) # set board mode to Broadcom
Visualisation des données avec Lightning
GPIO.setup(17, GPIO.OUT) # set up pin 17
Lissage et régression non Paramétrique
GPIO.setup(18, GPIO.OUT) # set up pin 18
Solveur d’équations différentielles partielles
Librairie Python d’analyse sonore du coran
GPIO.output(17, 1) # turn on pin 17
Analyse de Big-Data en python
GPIO.output(18, 1) # turn on pin 18 Module
Machine Learning sous Python avec le package scikit-learn RaspBerry PI 3
Module
Econométrie sous Python avec le package StatsModels
Introduction à la programmation parallèle Galileo
avec MPI Gen
Python
Théorie des graphes 2
Commande de processus et systèmes embarqués
23
Domaines d’utilisation
Les domaines utilisant le langage script Python sont nombreux :
from OCC.STEPControl import STEPControl_Reader
Calcul scientifique de base (Modèle (Non-) linéaire) from OCC.IFSelect import IFSelect_RetDone, IFSelect_ItemsByEntity
Maillage
Python pour traitement du signal
from OCC.Display.SimpleGui import init_display
Dauphin
Calcul de probabilité et statistiques step_reader = STEPControl_Reader()
Importation
status = step_reader.ReadFile('./models/wind_turbine.stp')
Développement de graphiques interactive avec Plotly librairie OCC
Visualisation des données avec Lightning if status == IFSelect_RetDone: # check status
failsonly = False
Lissage et régression non Paramétrique step_reader.PrintCheckLoad(failsonly, IFSelect_ItemsByEntity)
Solveur d’équations différentielles partielles step_reader.PrintCheckTransfer(failsonly, IFSelect_ItemsByEntity)
Logo de
BioPython Séquence d’ADN
26
Domaines d’utilisation # Installer à partir de PyPI
$ pip install mezzanine
Les domaines utilisant le langage script Python sont nombreux :
Calcul scientifique de base (Modèle (Non-) linéaire) # Instantier un projet
Python pour traitement du signal
Calcul de probabilité et statistiques
$ mezzanine-project monproject
Développement de graphiques interactive avec Plotly $ cd monproject Installation en mode
commande
Visualisation des données avec Lightning
Lissage et régression non Paramétrique # Instantier une Base de données
Solveur d’équations différentielles partielles $ python manage.py createdb
Librairie Python d’analyse sonore Version
du coran
Administration
Analyse de Big-Data en python
Machine Learning sous Python avec le package scikit-learn
# Lancer le serveur Web
Econométrie sous Python avec le package StatsModels $ python manage.py runserver
Introduction à la programmation parallèle avec MPI Python
Théorie des graphes URL du site
Commande de processus et systèmes embarqués
Plateforme CAD 2D/3D (Python CAD, FreeCAD)
instantié
Bioinformatique et manipulation du génome
Développement de sites Web (Framework Django)
Version Normal
28
Ils sont de trois grandes catégories :
Les applications bureaux (Desktop)
Les consoles de commande en ligne
Les interfaces orientées Web
Outils d’élaboration de code Python (IDE)
Les environnements de développement intégrés de code Python sont nombreux, des solutions propriétaires à celles portant le
label GPL.
Ils sont de trois grandes catégories :
Les applications bureaux (Desktop) 29
Les consoles de commande en ligne
Les interfaces orientées Web
Outils d’élaboration de code Python (IDE)
Les environnements de développement intégrés de code Python sont nombreux, des solutions propriétaires à celles portant le
label GPL.
Ils sont de trois grandes catégories :
Les applications bureaux (Desktop)
Les consoles de commande en ligne
30
Les interfaces orientées Web
31
Base de représentation des données
Nom de Symbole : Les noms de variables en Python peuvent contenir des caractères alphanumériques a-z, A-Z,
0-9 et certains caractères spéciaux tel que _. Les noms de variables normales doivent commencer par une lettre.
Par convention, les noms de variables commencent par une lettre minuscule, et les noms de classe commencent par
une lettre majuscule. En outre, il y a un certain nombre de mots-clés Python qui ne peuvent pas être utilisés comme
noms de variables. Ces mots-clés sont les suivants:
and, as, assert, break, class, continue, def, del, elif, else, except, exec, finally, for, from, global, if, import, in,
is, lambda, not, or, pass, print, raise, return, try, while, with, yield
Affectation :
# assignement d’une valeur à une variable
x = 1.0
my_variable = 12.2
type(x) #fonction TYPE retourne le type de la variable entre parenthèse
builtins.float
Verification de type :
x = 1.0
# vérifier si la variable est réelle
type(x) is float
isinstance(x, float)
True
z = complex(x)
32
print(z, type(z))
(1+0j) <class 'complex‘>
Base de représentation des données
Operateurs et comparaisons
Opérateurs arithmétiques +, -, *, /, // (division entière), '**' puissance.
3.0 // 2.0
1.0
# NB: operators puissance en python n’est pas ^, mais **
2 ** 2
4
Les opérateurs de comparaison sont >,<,>=,<=,==.
# objects identiques ?
x1 = x2 = [1,2]
x1 is x2
True
2 >= 2, 2 <= 2
(True, True)
Chaines de caractères, les liste et les dictionnaires
s = "Hello world"
type(s)
builtins.str
# length of the string: the number of characters
len(s)
11
# replace a substring in a string with somethign else
s2 = s.replace("world", "test")
print(s2)
33
Hello test
s[0]
'H'
Base de représentation des données
Chaines de caractères, les liste et les dictionnaires
s = "Hello world“
# remplacer une partie de chaine de caractères
s2 = s.replace("world", "test")
Hello test
print(s2)
s[0:5]
'Hello‘
s[0:5]
'Hello‘
s[:]
'Hello world‘
print("value = %f" % 1.0) # Formatage C des variables
value = 1.000000
s2 = "value1 = %.2f. value2 = %d" % (3.1415, 1.5)
print(s2)
value1 = 3.14. value2 = 1
Listes
l = [1,2,3,4]
print(type(l))
print(l)
<class 'list'>
[1, 2, 3, 4]
l = [1, 'a', 1.0, 1-1j] # peuvent être hétérogène
print(l)
[1, 'a', 1.0, (1-1j)] 34
Base de représentation des données
Listes
start = 10
stop = 30
step = 2
range(start, stop, step)
range(10, 30, 2)
list(range(start, stop, step))
[10, 12, 14, 16, 18, 20, 22, 24, 26, 28]
s2 = list(s)
S2
['H', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd']
# Tri de la liste
s2.sort()
print(s2)
[' ', 'H', 'd', 'e', 'l', 'l', 'l', 'o', 'o', 'r', 'w']
l = []
l.append("A")
l.append("d")
l.append("d")
print(l)
['A', 'd', 'd']
Tuples
Ce sont des variables comme les listes mais pas altérables
point = (10, 20)
print(point, type(point))
(10, 20) <class 'tuple'> 35
Base de représentation des données
Tuples
x, y = point
print("x =", x)
print("y =", y)
x = 10
y = 20
Dictionaries
params = {"parameter1" : 1.0, "parameter2" : 2.0, "parameter3" : 3.0,}
print(type(params))
print(params)
<class 'dict'>
f'parameter2': 2.0, 'parameter3': 3.0, 'parameter1': 1.0}
params["parameter1"] = "A"
params["parameter2"] = "B"
# Ajouter une nouvelle entrée
params["parameter4"] = "D"
print("paramètre = " + str(params["parameter1"]))
print("paramètre = " + str(params["parameter2"]))
print("paramètre = " + str(params["parameter3"]))
print("paramètre = " + str(params["parameter4"]))
paramètre = A
paramètre = B
paramètre = 3.0
paramètre = D 36
37
Base de programmation scientifique
Affectation & Contrôle conditionnel de flue
statement1 = False # C’est une affectation
statement2 = False
if statement1: # Test validé condition (statement1) est VRAIE
print("statement1 is True")
elif statement2: # Exécutée condition (statement2) est VRAIE
print("statement2 is True")
else: # Exécutée sinon
print("statement1 and statement2 are False")
Boucles
for x in [1,2,3]: # [1,2,3] peut être désigné par range(3) avec print(x+1)
print(x)
1
2
3
for word in ["scientific", "computing", "with", "python"]:
print(word) # condition de répétition dépendante du contenu de la liste
scientific
computing
with
python
38
l1 = [x**2 for x in range(0,5)] # à remarquer la compacité du Python
print(l1)
[0, 1, 4, 9, 16]
Base de programmation scientifique
Boucles
var = 0
while var != 1:
print " .... " # j‘écris mon programme ici
choix = raw_input("voulez vous recommencer ? ( o/n ) : ")
if choix == "n":
var = 1
else:
‘vous allez être renvoyé au début du programme’
X = y / 2
while x > 1:
If y % x == 0:
print y, ‘ est facteur de ’, x
break Utilisation et
x -= 1
else: puissance de MAP
print y, ‘ est premier‘
L’utilisation de zip et map, peut s’avérée encore plus efficace
l1 = [1, 2, 3] s='0123456789'
l2 = [4, 5, 6] print map(int, s)
for (x, y) in zip(l1, l2): [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print x, y, '--', x + y
1 4 -- 5
2 5 -- 7
3 6 -- 9 Utilisation de ZIP 39
Base de programmation scientifique
Intervalles
range(start, stop, step)
range(5, 10)
5 jusqu’à 10 (borne inférieur (start) incluse alors que celle supérieure
(stop) est exclue) avec un pas (step) de 1.
range(0, 10, 3)
0, 3, 6, 9
range(-10, -100, -30)
-10, -40, -70
41
Base de programmation scientifique
Définition de fonction (procédure avec retour)
def fib(n): # Ecrire la suite de Fibonacci jusqu’à n
a, b = 0, 1
while a < n:
print(a, end=' ')
a, b = b, a+b
print()
fib(2000)
0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597
f = fib # désignation par référence f à la fonction fib
f(100)
0 1 1 2 3 5 8 13 21 34 55 89
# autre type de définition de fonction
def ask_ok(prompt, retries=4, complaint="Oui or Non, s’il vou plait !"):
while True:
ok = input(prompt)
if ok in (‘o', ‘oui', ‘Oui'):
return True
if ok in (‘n', 'no', 'non', ‘Non'):
return False
retries = retries - 1
if retries < 0:
42
raise OSError(‘Utilisateur non coopératif')
print(complaint)
Base de programmation scientifique
L’instruction lambda
def make_incrementeur(n):
return lambda x: x + n
f = make_incrementeur(42)
f(0)
42
f(1)
43
# un autre cas d’utilisation
pairs = [(1, 'one'), (2, 'two'), (3, 'three'), (4, 'four')]
pairs.sort(key=lambda pair: pair[1])
pairs
[(4, 'four'), (1, 'one'), (3, 'three'), (2, 'two')]
43
Arguments: spam eggs
'spam and eggs‘
Base de programmation scientifique
Les décorateurs python
# Notre décorateur
def decorate(func):
print u"Je suis dans la fonction 'decorate' et je décore '%s'." % func.__name__
print u"Exécution de la fonction '%s'." % func.__name__
return func
Une utilisation fréquente, consiste en la validation des valeurs des emails saisis.
# Utilisation des expressions régulière
import re
48
Base de programmation scientifique
Les fichiers, Créer lire et écrire dans un fichier en python
# Utilisation des expressions régulière
fichier = open("donnees.txt", "r")
print fichier
<open file ‘donnees.txt', mode 'r' at 0x7ff6cf3fe4b0>
Le descripteur permet de renseigner la machine sur la manière avec laquelle le fichier est utilisé.
r, pour ouverture en mode READ.
w, pour ouverture en mode WRITE, chaque fois, le contenu du fichier est écrasé sinon python le crée.
a, pour ajout ‘APPEND’. Si le fichier n'existe pas python le crée.
b, Ouverture en mode Binaire.
t, Ouverture en mode Texte.
x, crée un nouveau fichier et l'ouvrir pour écriture
49
50
Structures algorithmiques du python
Le langage Python, est un langage script interprété. Le programme, portant l’une des extension .py, .pyw ou .pwc est
structuré selon le canevas suivant :
Les codifications
#!/usr/bin/python2.7
# -*-coding:encodage -*
Les instructions
Le langage Python passe, pour être exécuté sur deux étapes, la première UNE PRECOMPILATION génération du code
machine et finalement un écriture en code machine exécutable (selon la machine).
L’environnement d’exécution des scripts écrits en Python, regroupe les avantages des TRADUCTEURS (travaille en
ligne par ligne) et les COMPILATEURS (puissance de la structure algorithmique).
La bibliothèque cx_Freeze sert à transformer les fichiers scripts Pyhon .py en exécutable .exe.
51
52
Matrices & Systèmes
linéaires Soit la matrice A
0 1 2
A 3 4 5
6 7 8
La matrice A (ARRAY), de trois (03) lignes trois
(03) colonnes (SHAPE), ci-dessous est le résultat
d’un système linéaire dont les équations sont
Ipython dans dépendantes (NDIM).
une Notebook Une matrice 3x3 de ‘1’ (2*ONES), multipliée par
Jupyter un scalaire égale à 2 donne un résultat matriciel
3x3 d’éléments égaux à 2.
La diagonale (DIAG) est un vecteur de trois
éléments [0, 4, 8].
Ipython dans
une fenêtre
console
53
Matrices & Systèmes
linéaires
SciPy et NumPy procure différentes fonctions pour former
des matrices speciales.
Les lignes de commande Terminal sont utilisées pour le
calcul des valeurs propres.
54
3.23682852457e-16
55
Systèmes non-linéaires
SciPy.Optimize présente différentes stratégies pour
faire le traitement et l’optimisation de systèmes non
linéaire. Importation de la
Fonction
import numpy as np
from scipy.optimize import minimize
MINIMIZE
def rosen(x):
"""La fonction de Rosenbrock"""
return sum(100.0*(x[1:]-x[:-1]**2.0)**2.0 + (1-x[:-1])**2.0)
56
57
Interpolation & Approximation des
données
58
Interpolation & Approximation des
données
59
60
Intégration & Différentiation
61
62
Le calcul scientifique
63
Références
L.-V. Bertallanfy, ‘General System Theory’, Edition MASSON, 1972.
64