Python pour le calcul scientifique

Documents pareils
Cours 7 : Utilisation de modules sous python

Python - introduction à la programmation et calcul scientifique

Calcul Formel et Numérique, Partie I

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

pyensae StockPrices September 1, Manipulation de séries financières avec la classe StockPrices

Calcul Formel et Numérique, Partie I

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

Introduction à MATLAB R

1 Représentation d une image

Gnuplot. Chapitre Lancer Gnuplot. 3.2 Options des graphes

STAGE IREM 0- Premiers pas en Python

TP 1 Introduction à Matlab Février 2009

Calcul Scientifique avec 3

Optimisation, traitement d image et éclipse de Soleil

Rappels Entrées -Sorties

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

Aide - mémoire gnuplot 4.0

Présentation du langage et premières fonctions

Premiers pas avec Mathematica

Création d'une interface graphique

1 Définition et Appel d une fonction. V. Phan Luong. Cours 4 : Fonctions

TP 1. Prise en main du langage Python

SQL Parser XML Xquery : Approche de détection des injections SQL

Résolution de systèmes linéaires par des méthodes directes

La boucle for La boucle while L utilisation du if else. while (condition) { instruction(s) }

Cours Informatique Master STEP

Évaluation et implémentation des langages

Processus aléatoires avec application en finance

Apllication au calcul financier

Anticiper et prédire les sinistres avec une approche Big Data

LANGAGUE JAVA. Public Développeurs souhaitant étendre leur panel de langages de programmation

Nombre dérivé et tangente

LES TYPES DE DONNÉES DU LANGAGE PASCAL

Introduction à NetCDF

td3a correction session7az

Plan du cours Cours théoriques. 29 septembre 2014

Correction de l examen de la première session

Formation Cloudera Data Analyst Utiliser Pig, Hive et Impala avec Hadoop

Retour d expérience en Astrophysique : utilisation du Cloud IaaS pour le traitement de données des missions spatiales

t 100. = 8 ; le pourcentage de réduction est : 8 % 1 t Le pourcentage d'évolution (appelé aussi taux d'évolution) est le nombre :

MÉTHODES NUMERIQUES. Cours. Licence de Physique Année Universitaire : Licence Chimie, parcours Physique. Semestre S3

Maple: premiers calculs et premières applications

Bases Java - Eclipse / Netbeans

Télécom Nancy Année

Introduction à la présentation graphique avec xmgrace

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

Corrigé des TD 1 à 5

INTRODUCTION. Introduction (2) Espace de travail. Fonctionnement. le Workspace (1) Mode interactif : Mode programme : Type de variables :

Java et les bases de données

Modélisation PHP Orientée Objet pour les Projets Modèle MVC (Modèle Vue Contrôleur) Mini Framework

de calibration Master 2: Calibration de modèles: présentation et simulation d

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

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

Éléments de programmation et introduction à Java

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

Équations non linéaires

Seance 2: En respectant la méthode de programmation par contrat, implémentez les autres fonctions de jeu.

Procédure serveur : gestion des environnements X3 et bases de données ORACLE

Rappels sur les suites - Algorithme

I Stabilité, Commandabilité et Observabilité Introduction Un exemple emprunté à la robotique Le plan Problème...

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

SUJET ZÉRO Epreuve d'informatique et modélisation de systèmes physiques

FONCTIONS DE PLUSIEURS VARIABLES (Outils Mathématiques 4)

Bibliothèque des sciences humaines. Guide d utilisation de la banque : TSX-CFMRC Summary Information Database

Transmission d informations sur le réseau électrique

La structure de la base de données et l utilisation de PAST. Musée Royal de l Afrique Centrale (MRAC Tervuren)

Sujet 1 : Diagnostique du Syndrome de l apnée du sommeil par des techniques d analyse discriminante.

NOS FORMATIONS EN BUREAUTIQUE

Optimisation de logiciels de modélisation sur centre de calcul

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

OM 1 Outils mathématiques : fonction de plusieurs variables

Initiation à la programmation en Python


Calculs de probabilités avec la loi normale

Rencontre sur la thématique du Calcul Haute Performance - 13 juin Better Match, Faster Innovation

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

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

Séance 0 : Linux + Octave : le compromis idéal

1. Développement embarqué. André KPOZEHOUE DOMAINES DE COMPETENCES CONNAISSANCES TECHNIQUES

Licence Sciences et Technologies Examen janvier 2010

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

Automatique des systèmes linéaires continus

Formation tableur niveau 1 (Excel 2013)

TP 0 : INTRODUCTION À MATLAB

Représentation d un entier en base b

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

Initiation à LabView : Les exemples d applications :

données en connaissance et en actions?

Table des matières PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS. Introduction

Généralités sur le Langage Java et éléments syntaxiques.

OPTION SCIENCES BELLE-ISLE-EN-TERRE

MIS 102 Initiation à l Informatique

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Avenir Concept Monaco

choisir H 1 quand H 0 est vraie - fausse alarme

Ateliers Python+Qt : Premiers pas : S'installer pour PyQt... en quelques minutes sous Windows!

Formations 2015 JASPER, REDMINE, TABLEAU, TALEND, SPAGO BI SYNALTIC 24 RUE DE L EGLISE VINCENNES

INTRODUCTION À PYRAMID Gaël Bearstech. Crédits: Blaise Laflamme

Transcription:

Laboratoire de Mathématiques d Orsay 4 avril 2014 - Amiens

Plan Petite introduction 1 Petite introduction 2 3 4 5

1 Petite introduction 2 3 4 5

Pourquoi utiliser? Python peut être appris en quelques jours. De nombreux modules existent. L intérêt pour ce langage ne cesse de croître. Tous les outils sont là pour faire des codes performants et parallèles. On peut faire bien plus que du calcul.

Pourquoi utiliser? Python peut être appris en quelques jours. De nombreux modules existent. L intérêt pour ce langage ne cesse de croître. Tous les outils sont là pour faire des codes performants et parallèles. On peut faire bien plus que du calcul. Langage utilisé maintenant dans les classes préparatoires scientifiques.

Comment commencer? en utilisant Sage http://www.sagemath.org/fr/ en installant anaconda http://continuum.io/downloads

Les indispensables

Présentation générale Création de tableaux Manipulations de tableaux Opérations 1 Petite introduction 2 3 4 5

Le module numpy Petite introduction Présentation générale Création de tableaux Manipulations de tableaux Opérations outils performants pour la manipulation de tableaux à N dimensions fonctions basiques en algèbre linéaire fonctions basiques pour les transformées de Fourier outils pour intégrer du code Fortran outils pour intégrer du code C/C++

Présentation générale Création de tableaux Manipulations de tableaux Opérations Comparaison syntaxique, Matlab on veut calculer u = 100 exp ( 100(x 0.5) 2) avec x [0, 1]. en Python from numpy import * x = linspace(0., 1., 100) u = 100.*exp(-100.*(x -.5)**2) en Matlab x = linspace(0.,1.,100) u=100.*exp(-100.*(x-.5).^2)

Présentation générale Création de tableaux Manipulations de tableaux Opérations Création d un tableau en connaissant sa taille >>> import numpy as np >>> a = np.zeros(4) >>> a array([ 0., 0., 0., 0.]) >>> nx, ny = 2, 2 >>> a = np.zeros((nx, ny, 2)) >>> a array([[[ 0., 0.], [ 0., 0.]], Il existe également [[ 0., 0.], [ 0., 0.]]]) np.ones, np.eye, np.identity, np.empty,...

Présentation générale Création de tableaux Manipulations de tableaux Opérations Création d un tableau avec une séquence de nombre >>> a = np.linspace(-4, 4, 9) >>> a array([-4., -3., -2., -1., 0., 1., 2., 3., 4.]) >>> a = np.arange(-4, 4, 1) >>> a array([-4, -3, -2, -1, 0, 1, 2, 3])

Présentation générale Création de tableaux Manipulations de tableaux Opérations Création d un tableau à partir d une séquence >>> a = np.array([1, 2, 3]) >>> a array([1, 2, 3]) >>> b = np.array(range(10)) >>> b array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) >>> L1, L2 = [1, 2, 3], [4, 5, 6] >>> a = np.array([l1, L2]) >>> a array([[1, 2, 3], [4, 5, 6]])

Présentation générale Création de tableaux Manipulations de tableaux Opérations Création d un tableau à partir d une fonction >>> def f(x, y):... return x**2 + np.sin(y)... >>> a = np.fromfunction(f, (2, 3)) >>> a array([[ 0., 0.84147098, 0.90929743], [ 1., 1.84147098, 1.90929743]])

Caractéristiques d un tableau a Présentation générale Création de tableaux Manipulations de tableaux Opérations a.shape : retourne les dimensions du tableau a.dtype : retourne le type des éléments du tableau a.size : retourne le nombre total d éléments du tableau a.ndim : retourne la dimension du tableau

Présentation générale Création de tableaux Manipulations de tableaux Opérations Accès aux éléments d un tableau [debut : fin : pas] 0 1-2 -1 0 1 2 3 4 5 6 [ : :]

Indexation Petite introduction Présentation générale Création de tableaux Manipulations de tableaux Opérations >>> L1, L2 = [1, -2, 3], [-4, 5, 6] >>> a = np.array([l1, L2]) >>> a[1, 2] 6 >>> a[:, 1] array([-2, 5]) >>> a[:, -1:0:-1] array([[3, -2], [6, 5]]) >>> a[a < 0] array([-2, -4])

Présentation générale Création de tableaux Manipulations de tableaux Opérations Redimensionnement d un tableau >>> a = np.linspace(1, 10, 10) >>> a.shape = (2, 5) >>> a array([[ 1., 2., 3., 4., 5.], [ 6., 7., 8., 9., 10.]]) >>> a.shape = (a.size,) >>> a.reshape((2, 5)) array([[ 1., 2., 3., 4., 5.], [ 6., 7., 8., 9., 10.]]) Attention : reshape ne fait pas une copie du tableau mais crée une nouvelle vue.

Les vues Petite introduction Présentation générale Création de tableaux Manipulations de tableaux Opérations crée des tableaux alloués en mémoire selon l alignement C ou Fortran. On peut ensuite y accéder selon différentes vues.

Les vues Petite introduction Présentation générale Création de tableaux Manipulations de tableaux Opérations 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 a 0 a 1 a 2 a 3 a 4 a 5 a 6 a 7 a 8 a 9 >>> a = np.linspace(1, 10, 10)

Les vues Petite introduction Présentation générale Création de tableaux Manipulations de tableaux Opérations 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 a 0 a 1 a 2 a 3 a 4 a 5 a 6 a 7 a 8 a 9 b 0,0 b 0,1 b 1,0 b 1,1 b 2,0 b 2,1 b 3,0 b 3,1 b 4,0 b 4,1 >>> a = np.linspace(1, 10, 10) >>> b = a.reshape((5, 2))

Les vues Petite introduction Présentation générale Création de tableaux Manipulations de tableaux Opérations 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 a 0 a 1 a 2 a 3 a 4 a 5 a 6 a 7 a 8 a 9 b 0,0 b 0,1 b 1,0 b 1,1 b 2,0 b 2,1 b 3,0 b 3,1 b 4,0 b 4,1 c 0 c 1 c 2 c 3 c 4 >>> a = np.linspace(1, 10, 10) >>> b = a.reshape((5, 2)) >>> c = b[:, 0]

Les vues Petite introduction Présentation générale Création de tableaux Manipulations de tableaux Opérations 100.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 a 0 a 1 a 2 a 3 a 4 a 5 a 6 a 7 a 8 a 9 b 0,0 b 0,1 b 1,0 b 1,1 b 2,0 b 2,1 b 3,0 b 3,1 b 4,0 b 4,1 c 0 c 1 c 2 c 3 c 4 >>> a = np.linspace(1, 10, 10) >>> b = a.reshape((5, 2)) >>> c = b[:, 0] >>> a[0] = 100

Les vues Petite introduction Présentation générale Création de tableaux Manipulations de tableaux Opérations >>> a = np.linspace(1, 10, 10) >>> b = a.reshape((5, 2)) >>> c = b[:, 0] >>> a[0] = 100 >>> a array([ 100., 2., 3., 4., 5., 6., 7., 8., >>> b array([[ 100., 2.], [ 3., 4.], [ 5., 6.], [ 7., 8.], [ 9., 10.]]) >>> c array([ 100., 3., 5., 7., 9.])

Copie d un tableau Petite introduction Présentation générale Création de tableaux Manipulations de tableaux Opérations >>> a = np.linspace(1, 5, 5) >>> b = a >>> c = a.copy() >>> d = np.zeros(a.shape, a.dtype) >>> d[:] = a >>> b[1] = 9 >>> a; b; c; d array([ 1., 9., 3., 4., 5.]) array([ 1., 9., 3., 4., 5.]) array([ 1., 2., 3., 4., 5.]) array([ 1., 2., 3., 4., 5.])

Opérations sur les tableaux Présentation générale Création de tableaux Manipulations de tableaux Opérations >>> a = np.arange(10) >>> a array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) >>> a.sum() 45 >>> np.sum(a) 45 >>> a + a array([ 0, 2, 4, 6, 8, 10, 12, 14, 16, 18]) >>> a*a array([ 0, 1, 4, 9, 16, 25, 36, 49, 64, 81]) >>> np.dot(a, a) 285

Présentation Module integrate Module linalg Module sparse 1 Petite introduction 2 3 4 5

Petite introduction Présentation Module integrate Module linalg Module sparse reprend l ensemble de et contient un certain nombre de modules spécialisés. FIGURE Reference Guide

integrate Petite introduction Présentation Module integrate Module linalg Module sparse Ce module fournit un ensemble d outils pour l intégration. Ces outils se découpent en 3 grandes familles calcul d intégrale à partir de fonctions Python quadpack, linpack, mach calcul d intégrale à partir d un ensemble de points fonctions Python résolution d équations différentielles ordinaires odepack, dop, vode, linpack, mach Toutes ces librairies sont en Fortran. Les interfaces sont réalisées directement via la C API sauf vode qui utilise f2py.

linalg Petite introduction Présentation Module integrate Module linalg Module sparse Ce module fournit un ensemble d outils en algèbre linéaire. Il reprend l ensemble des fonctions de numpy.linalg et apporte quelques fonctionnalités supplémentaires. Il s appuie sur les librairies blas et lapack. L interface est réalisée en utilisant f2py. >>> import numpy as np >>> from numpy.random import rand as rn >>> from scipy.linalg import lu as lu >>> A = rn(100, 100) >>> P, L, U = lu(a)

sparse Petite introduction Présentation Module integrate Module linalg Module sparse Ce module fournit un ensemble d outils permettant de manipuler des matrices creuses. Les formats de matrices creuses sont écrits en C et l interface est réalisée en utilisant swig. >>> import scipy.sparse as spsp >>> data = array([[1,2,3,4],[1,2,3,4],[1,2,3,4]]) >>> diags = array([0,-1,2]) >>> spsp.spdiags(data, diags, 4, 4).todense() matrix([[1, 0, 3, 0], [1, 2, 0, 4], [0, 2, 3, 0], [0, 0, 3, 4]])

1 Petite introduction 2 3 4 5

Petite introduction Permet de faire principalement des graphes 1D et 2D, "façon Matlab", Possibilité d interagir avec les graphes, Sauvegarde des figures sous différents formats : pdf, ps, png,... Graphes facilement intégrables dans une interface graphique utilisateur (GUI), Code extensible. import matplotlib.pyplot as plt import numpy as np

Premier exemple Petite introduction 25 Fonction f(x) =e x/2 cos(5x) 20 15 Courbe 10 5 0 5 10 M 15 20 0 1 2 3 4 5 6 7 x

Premier exemple Petite introduction x = np.linspace(0., 2*np.pi, 100) plt.plot(x, np.exp(x/2)*np.cos(5*x), -ro ) plt.title( Fonction $f(x)=e^{x/2} cos(5x)$ ) plt.xlabel( $x$ ) plt.text(1, 15., Courbe, fontsize=22) plt.annotate( M, xy=(1, -1), xytext=(2, -9), arrowprops = {facecolor: black, \parallelshrink:0.05}) plt.savefig( 1D_exemple.pdf ) plt.show()

Subplot et axes Petite introduction 50 f 50 f (2) 0 50 100 0 150 200 250 50 300 350 4 3 2 1 0 1 2 3 4 100 300 f (1) 200 150 100 0 100 200 4 3 2 1 0 1 2 3 4 200 250 150 100 50 100 500 f (3) 4 3 2 1 0 1 2 3 4 4 3 2 1 0 1 2 3 4

Subplot et axes Petite introduction x = np.linspace(-4., 4., 50) plt.subplot(2, 2, 1) plt.plot(x, -x**4 + x**3 + x**2 + 1, o- ) plt.title("$f$") plt.subplot(2, 2, 3) plt.plot(x, -4*x**3 + 3*x**2 + 2*x, - ) plt.title("$f^{(1)}$") plt.subplot(1, 2, 2) plt.plot(x, -12*x**2 + 6*x + 2, -- ) plt.title("$f^{(2)}$") plt.axes([.7,.1,.1,.1]) plt.plot(x, -24*x + 6, : ) plt.title("$f^{(3)}$") plt.tight_layout() plt.savefig("1d_subplot2.pdf") plt.show()

3 1.0 2 1 0 0.8 0.6 0.4 0.2 1.5 1.0 0.5 0.0 0.0 0.5 1 2 3 3 2 1 0 1 2 3 0.2 0.4 0.6 3 2 1 x 0 1 2 3 1.0 3 2 1 0 1 y 2 3 7 7 6 6 5 5 4 4 3 3 2 2 1 1 0 0 1 1 0 1 2 3 4 5 6 7 1 1 0 1 2 3 4 5 6 7

1 Petite introduction 2 3 4 5

Pendule couplé http://nbviewer.ipython.org/url/www.math.upsud.fr/ gouarin/notebook/pendulum.ip ynb Equation de Poisson http://nbviewer.ipython.org/url/www.math.upsud.fr/ gouarin/notebook/poisson.ipy nb

Les autres modules intéressants SymPy : calcul symbolique scikit-learn : machine learning pandas : structure de données et outils d analyse de données haute performance pytables : traitement de grandes données... Pour plus d informations http://numfocus.org/projects.html

Les interfaces Petite introduction De nombreuses librairies écrites dans des langages bas niveau ont leur interface pour Python. mpi4py petsc4py FEniCS... Il y a également possibilité de faire du calcul sur carte graphique. PyCUDA PyOpenCL

Pour aller plus loin Les formations organisées par le Groupe Calcul sur le sujet. Ecole Python de décembre 2010 http://calcul.math.cnrs.fr/spip.php?rubrique85 Ecole Python de décembre 2013 http://calcul.math.cnrs.fr/spip.php?rubrique102