1 4 Un exemple : calcul d'intégrales Pour illustrer les capacités de base de Python, nous proposons de calculer de manière numérique la valeur de I = ∫ b a
Previous PDF | Next PDF |
[PDF] Mathématiques et Python - Apprendre-en-lignenet
1 4 Un exemple : calcul d'intégrales Pour illustrer les capacités de base de Python, nous proposons de calculer de manière numérique la valeur de I = ∫ b a
[PDF] Analyse numérique avec Python - Normale Sup
22 mai 2014 · Python) quelques algorithmes classiques d'analyse numérique Le but est de résoudre sur un segment [a, b] Pour calculer son intégrale ap-
[PDF] Analyse numérique en Python, Intégration et - cpge paradise
possible de trouver par le calcul une telle primitive F, aussi s'en remet-on parfois à un calcul numérique de l'intégrale La plupart des méthodes d'intégration
[PDF] Calcul Scientifique avec Python - Institut de Mathématiques de
Nous présentons donc le langage Python et donnerons quelques algorithmes standard pour • calculer des intégrales numériques • interpoler une fonction
[PDF] Informatique TP3 : Calcul numérique dune intégrale - [Verimag]
En Python, la valeur absolue de x est obtenue avec abs(x) Exercice 3 Testez l' algorithme pour le cas où f(a) > 0 et f(b) ≤ 0 Modifiez-le en
[PDF] TD: Intégrale multiple - ISEN-Brest
Si l'on veut calculer certaines propriétés de l'atome de magnesium (12 électrons), on est amené `a intégrer des Si l'on utilise 64 points pour calculer numériquement chaque intégrale, il faudra réaliser 6436 ≃ 1065 3 Code avec Python
[PDF] BTS SN 1 TP Python : Intégrales 1 Méthodes des rectangles
TP Python : Intégrales Le but du TP est de comparer des algorithmes de calcul approché d'inté- tion à intégrer, ou que celles-ci sont difficiles à calculer
[PDF] Exercices de programmation Python Exercice 1 Lire des
partir d'un nombre fini de valeurs ce qui rend de fait impossible tout calcul d' intégrale Considérons un intervalle [a, b] et une subdivision σ = (ak)0≤k≤n de cet
[PDF] Méthodes numériques et langage Python Intégration numérique
8 oct 2019 · Primitive F connue mais pas une fonction élémentaire (intégrale de exp(−x2)) ▷ Primitive trop difficile `a calculer numériquement 2 / 16
[PDF] exercice python euler
[PDF] le médecin malgré lui acte 2 scène 4
[PDF] méthode dichotomie python
[PDF] le message andrée chedid résumé détaillé
[PDF] résolution équation différentielle matlab ode45
[PDF] le message andrée chedid genre
[PDF] algorithme méthode d'euler implicite matlab
[PDF] méthode de tir équation différentielle
[PDF] le message andrée chedid quiz
[PDF] le message andrée chedid extrait
[PDF] méthode euler implicite matlab
[PDF] le message andrée chedid texte intégral
[PDF] fonction ode45 matlab
[PDF] le message andrée chedid fnac
Mathématiques et Python
Le langage Python seul ne sait pas faire grand chose dans le domaine mathématique, commetracer une fonction, calculer des valeurs de fonctions usuelles, réaliser des opérations matricielles,...
Cependant, de nombreux modules ont été développés pour pallier ce manque, parmi lesquels in
convient de citer : scip y n umpy matplotlibA noter que le module
p ylab in tègreces trois mo duleset ip ython. L"objectif de ce document n"est bien entendu pas d"être exhaustif sur ce qu"il est possible defaire avec python et ces modules, mais juste de donner quelques points d"entrée sur ces librairies
et de proposer des illustrations par l"exemple de leur utilisation. Dans la mesure du possible, les exemples collent "pas trop loin" du programme officiel de maths MPSI.1 Ce que l"on peut faire sans les modules...
1.1 Types
Les types de base qui peuvent être utiles dans la suite sont les suivants :1.1.1 Types numériques
in teger(at tentionà la division en treen tiers!) float complex : l"imaginaire pur iest notéjen python. A tout instant, il est possible d"accéder au type d"une variableaen tapanttype(a) Toute variable définie avec un type change de type lors d"une nouvelle affectation. On peutaussi changer de type à l"aide des fonctionsint();float(). L"une des caractéristiques importantes
de Python est le typage dynamique. Cependant, si certaines opérations provoquent un changement de type, certaines restent interdites.1.1.2 Conteneurs
listes (par exemple tab= [1;2;3;4;5]) index (les indices de listes commencen tà 0 : par exem plea[2]donne 3) slices ( a[1 : 3]donne[2;3])Le typage dans les listes est faible, on peut combiner différents types numériques (ou non comme
des chaînes de caractères, des booléens...)De nombreuses fonctions sont associées à ces listes (concaténation, recherche de sous-chaînes...).
11.2 Opérateurs élémentaires
Les opérateurs classiques suivantes sont disponibles : 1. 2. mo dulo: % 3. exp osant: * * 4. division en tière:// (par exemple 9//2=4) 5. op érateursde comparaison : ==, !=,<>, <,<=,>,>= 6. op érateursd"affectation : =,+=,-=,*=,/=,%=,**=,// = 7.les op érateursbit à bit : &(et),k(ou),^(XOR),~(complément à 1),<<(décalage à gauche),
>>(décalage à droite) 8. op érateurslogiques : and, or, not 9. op érateursd"appartenance (sur des t ypescomme des c haînes): in, not in 10. op érateursd"iden tité: is, is not1.3 La librairie standard math
Pour disposer des fonctions mathématiques usuelles, la librairie d"origine du python se nomme math. On peut alors d"importer juste les fonctions nécessaires par from math import cos, log ou toutes les fonctions mathématiques par from math import *. Dans le premier cas l"inconvénientest qu"il faut savoir à l"avance les fonctions utilisées par la suite, dans le deuxième cas on risque de
surcharger inutilement la mémoire. A noter que pour manipuler des complexes, il faut importer le module cmath en plus du module math (par exemple pour réaliser des produits de complexes).1.4 Un exemple : calcul d"intégrales
Pour illustrer les capacités de base de Python, nous proposons de calculer de manière numérique
la valeur deI=Rb af(x)dx, en utilisant trois méthodes classiques : la métho dedes rectangles : In1X i=0(xi+1xi)fxi+xi+12 la métho dedes trap èzes: Ih" f(a)+f(b)2 +n1X i=1f(xi)# la métho dede Simpson : Ih6 f(a) +f(b) + 4n1X i=0f(x2i+1) + 2n1X i=1f(x2i)# avech=ban etxk=a+kh2 et où(x0xn)est une subdivision régulière de l"intervalle[a;b]de pashLe code
1 donne le source p ythonp ermettantde réaliser ces trois appro ximations. 2 #coding: u tf8defrectangles ( f , a ,b ,n) :#Methoded esr ectangles S=0foriinxrange (0 ,n) :xi=a+(ba)i / float (n)xj=a+(ba)( i +1)/ float (n)S+= f (( xi+xj ) /2.0)( xjxi )returnSdeftrapezes ( f , a ,b ,n) :#Methoded est rapezes
S=0foriinxrange (0 ,n) :xi=a+(ba)i / float (n)xj=a+(ba)( i +1)/ float (n)S+= ( f ( xi )+f ( xj ) ) /2.0( xjxi )returnSdefsimpson ( f , a ,b ,n) :#Methoded eS impson
S=0foriinxrange (0 ,n) :xi=a+(ba)i / float (n)xj=a+(ba)( i +1)/ float (n)S+= ( xjxi )( f ( xi )+4f (( xi+xj ) /2.0)+f ( xj ) ) /6.0returnSdeffn (x) :#fonctiona i ntegrer
return4.0/(1+(x3)(x3))defmain () :print"par rectangles : ", rectangles ( fn ,0. ,5. ,100) ;print"par trapèzes : ", trapezes ( fn ,0. ,5. ,100) ;print"par Simpson : ", simpson ( fn ,0. ,5. ,100) ;main()
Listing 1 - Approximation numérique d"une intégrale par trois méthodes classiques1.5 Un autre exemple autour des suites
Prenons un exemple classique, celui du calcul d"une estimation du nombre d"or à l"aide de la suite de Fibonacci. Le code 2 présen tele calcul des npremiers termes de la suite de Fibonacci u0= 1;u1= 1etun=un1+un2;n2ainsi que la valeur absolue de la différence avec le
nombre d"or 1+p5 2 3 #coding: u tf8deffibonacci (n) :a = b = 1. foriinrange (n) :a , b = a + b , a printabs (( a/b)(1+50.5)/2)returnbdefmain() :fibonacci (30) main()Listing 2 - Calcul approché du nombre d"or
Exercice 1Proposer un code permettant de calculer ces mêmes quantités de manière récursive.
Exercice 2Proposer un code permettant de calculer la somme des éléments d"une suite quelconque indicés par un ensemble d"entiersJ1.6 Un dernier exemple : zéro d"une fonction
Le code
3 présen teun calcul simple d"un zéro d" unefonction dans un in tervalledonné, en utilisant une approche dichotomique.#coding: u tf8deff (x) :returnx2 +20x12defzero ( f , a ,b) :iff (a)f (b) >0:print("La fonction ne s""annule pas dans l""intervalle ["+str (a)+","+str (b)+"]")return0while( abs (ab)>1e3) :m=(a+b) /2.
printmiff (m)f (a) >0:a=m else:b=m print("la solution de f(x)=0 est "+str (m) )returnmprint( zero ( f ,10. ,10.) ) Listing 3 - Zéro d"une fonction sur un intervalle par dichotomie. 4Exercice 3Produire un code qui calcule le zéro d"une fonction en utilisant la méthode de Newton
(algorithme 1 ) :Algorithm 1:Méthode de NewtonEntrées:N;;f;fp;x0 n 0 x n x0 répéterx n xnf(xn)f p(xn) n n+ 1 sifp(xn)< alorsDivision par zero fin jusqu"à f(xn)f p(xn)< OUn > N;Exercice 4Calculer une approximation deen utilisant par exemple les deux résultats classiques :
26=1X n=11n 2et2 =1X n=14n24n21
2 ... Et là où ça va mieux : utilisation des librairies
Python présente l"avantage de recourir aux modules pour le développement de fonctions oud"ensembles de fonctionnalités spécifiques. Cela permet une grande flexibilité et une dynamique
de développement importante. Parmi ces modules nous nous intéressons particulièrement dans la
suite à Numpy, Scipy et Matplotlib. Suivant la distribution de Python choisie, l"ensemble de cesmodules, avec d"autres, est automatiquement installé lors de l"installation de Python. Si ce n"est
pas le cas il y a toujours la possibilité de les installer a posteriori.2.1 Présentation rapide des modules
Ces modules fournissent un ensemble d"objets ainsi qu"un groupes de fonctions permettant demanipuler nombre d"objets de façon simple et très performantes dans le cadre du calcul scientifique.
Voici la description donnée par le site officiel de Numpy (http ://www.scipy.org, numpy.scipy.org )
SciPy is a collection of mathematical algorithms and convenience functions built on the Numpy extension for Python. It adds significant power to the interactive Python session by exposing the user to high-level commands and classes for the manipulation and visualization of data. With SciPy, an interactive Python session becomes a data-processing and system-prototyping environment ri- valing sytems such as MATLAB, IDL, Octave, R-Lab, and SciLab. NumPy is the fundamental package needed for scientific computing with Python. It contains among other things : a p owerfulN-dimensional arra yob ject- sophisticated (broadcasting) func tionsto olsfor in- tegrating C/C++ and Fortran code useful linear algebra, F ouriertransform, and random n umbercapabilities. 5Besides its obvious scientific uses, NumPy can also be used as an efficient multi-dimensional contai-
ner of generic data. Arbitrary data types can be defined. This allows NumPy to seamlessly and speedily integrate with a wide variety of databases. Scipy est un ensemble qui comprend de nombreux modules utiles pour des scientifiques : cluster : information theory functions (cu rrently,vq and kmeans) w eave: compilation of n umericexpress ionsto C++ for fast execution fftpac k: fast F ouriertransform mo dulebased on fftpac kand fft wwhen a vailable ga : gen eticalgorithms io : r eadingand writing n umericarra ys,MA TLAB.mat, and Matrix Mark et.m txfiles in tegrate: n umericin tegrationfor b oundedand u nboundedranges. ODE solv ers. in terpolate: in terpolationof v aluesfrom a sample data set. optimize : constrained and unconstrained optimization metho dsand ro ot-findingalgorithms signal : signal pro cessing(1-D and 2 -Dfiltering, filter design, L TIsystems, etc.) sp ecial: sp ecialfunction t ypes(b essel,gamma, airy ,etc.) stats : statistical functions (stdev, v ar,mean, etc.) linalg : linear algeb raand BLAS routines base don the A TLASimplemen tationof LAP ACK sparse : Some sparse matrix supp ort.LU factorization and solving Sparse linear systems. Enfin Matplotlib permet de visualiser en 2D des données.2.2 Quelques exemples de Numpy
Numpy ajoute le type array qui est similaire à une liste (list) avec la condition supplémentaire
que tous les éléments sont du même type.Le code
4 présen tequelques exemples d"instan tiationde matrices simple s. 6 #coding: u tf8importnumpy as np#t ableau1 D a1 = np . array ([1 , 2 , 3 , 4] , float ) printa1#tableau2 D a2=np . array ( [ [ [ 1 , 2 ] , [ 3 , 4 ] ] , [ [ 5 , 6 ] , [ 7 , 8 ] ] ] ) printa2#matricesd e1 un=np . ones (5) printun#matriced iagonale d = np . diag (a1) printd#matriceb ande d1 = np . diag (a1,1)printd1#matriceà c oefficientsa léatoiresd ans[ 0, 1] r = np . random . rand (3 ,3) printr#I dentité i = np . eye (5) printi#M atricen ulle z = np . zeros (5) printzListing 4 - Définitions de matrices
Les opérations classiques sur la matrices sont disponibles à l"aide de numpy : addition, multipli-
cation par un scalaire, produit matriciel...Le code 5 présen tequelques exemples de ces op érations. 7 #coding: u tf8importnumpy as npA = np . random . rand (3 ,3)B=np . diag ( [ 1 . , 2 . , 3 . ] )
v = np . array ( [ 3 . , 4 . , 5 . ] , float ) a dditionC1 = A+B
C2 = 2.+A
multiplicationD1 = 2A# coefficientsd eA m ultipliésp ar2 D2 = B3# coefficientsd eB à l ap uissance3 D3 = AB# m ultiplicationt ermeà t ermeD4 = np . dot (A,B)#m ultiplicationm atricielle
D5 = np . dot (A, v)
produit m atrice vecteurD6 = np . kron (A,B)
produit d eK ronecker
testE1 = A renvoie u ne m atrice d e b ooléens e ffectuant l e t est bo = np . array ([1 ,0. ,0] , bool ) E2=B[ bo ]
extrait l es é léments
d e B q ui c orrespondent l a v aleur v raie d e b o E3=A[A>0.5]
Listing 5 - Opérations sur les matrices
Bien entendu, numpy permet facilement de faire du calcul numérique matriciel : calcul du rang
d"une matrice, inversion d"une matrice, résolution de systèmes linéaires. A titre d"exemple, le code
6 présen tequelques p ossibilitéso ffertespar le mo dule. 8 #coding: u tf8importnumpy as npimportnumpy. linalg as nlA = np . random . rand (3 ,3) b = np . array ( [ 3 . , 4 . , 5 . ] , float )Transposition
d une m atriceAprime=A. transpose ()
Rang d une m atrice r = np . rank (A)Inverse
d une m atriceAinv = nl . inv (A)
attention t ester s i A e st i nversibleRésolution
d e s ystèmes l inéaires x = nl . solve (A,b) calcul d esé léments
p ropres nl . eig (A) valeurs p ropres m atrice d e p assageCalcul
d e n ormes n1 = nl .norm(A, np . inf ) ; n2 = nl .norm(A,np . inf ) ;n3 = n1 = nl .norm(A,2) ; n4 = n1 = nl .norm(A,"fro") ; Listing 6 - Un peu d"algèbre linéaire avec numpy Exercice 5Proposer un code qui code la décomposition de Cholesky d"une matrice A. Compareravec l"appel à numpy.linalg.cholesky. Pour rappel, l"algorithme de Cholesky est le suivant :Algorithm 2:Méthode de Choleskypourk2 f1ngfairea
kk a kkk1X p=1a 2kp! 2 pouri2 fk+ 1ngfairea ik 1a kk a ikk1X p=1a ipakp! fin finNotons que numPy propose de nombreux autres atouts, que nous vous conseillons de décou- vrir dans la documentation de ce module. A titre d"exemple, citons la classe poly1d qui gère les polynômes à une variable, documentée comme suit : 9classnumpy. poly1d (c_or_r , r=0, variable=None) [ source ]A onedimensional polynomialclass.A convenienceclass, used to encapsulate natural operations on polynomials so thatsaid operations may take on their customary formincode ( see Examples) .Parameters :
c_or_r : array_likeThe polynomials coefficients ,indecreasing powers ,ori fthe value of the secondparameterisTrue , the polynomials roots ( values where the polynomial evaluatesto 0) . For example , poly1d ([1 , 2 , 3]) returns an object that represents ,
whereas poly1d ([1 , 2 , 3] , True) returns one that represents . r : bool , optional If True , c_or_r specifies the polynomials roots ; the defaultisFalse .variable : str , optional Changes the variable used when printing pfromx to variable ( see Examples) .ExamplesConstruct the polynomial :
>>> p = np . poly1d ([1 , 2 , 3]) >>>printnp . poly1d (p)21 x + 2 x + 3
Evaluate the polynomial at :
>>> p(0.5) 4.25Find the roots :
>>> p. r array ([1.+1.41421356 j ,1.1.41421356 j ])>>> p(p. r )array ([4.44089210e16+0.j ,4.44089210e16+0.j ])These numbersinthe previous line represent (0 , 0) to machine precisionShow the coefficients :
>>> p. c array ([1 , 2 , 3]) Display the order ( the leading zerocoefficients are removed) :>>> p. order 2Show the coefficient of the kth powerinthe polynomial (whichisequivalent to p.c[( i +1) ]) :>>> p [1]
2 Polynomials can be added , subtracted , multiplied ,anddivided ( returns quotientandremainder ) : >>> pppoly1d ([ 1 , 4 , 10 , 12 , 9]) >>> (p3 + 4) / p( poly1d ([ 1. , 4. , 10. , 12. , 9 . ] ) , poly1d ([ 4 . ] ) )asarray (p) gives the coefficient array , so polynomials can be usedinall functionsthat accept arrays :
Listing 7 - Documentation de la classe poly1d
10 >>> p2# s quareo fp olynomialpoly1d ([ 1 , 4 , 10 , 12 , 9]) >>> np . square (p) s quare o f i ndividual c oefficients array ([1 , 4 , 9]) The variable usedinthe string representation of p can be modified , using thevariable parameter : >>> p = np . poly1d ([1 ,2 ,3] , variable="z")>>>printp21 z + 2 z + 3
Construct a polynomialfromits roots :>>> np . poly1d ([1 , 2] , True)poly1d ([ 1 ,3, 2])Thisisthe same polynomial as obtained by :>>> np . poly1d ([1 ,1])np . poly1d ([1 ,2])poly1d ([ 1 ,3, 2])Attributes
coeffs order variableMethods
__call__( val ) deriv ([m]) Return a derivative of this polynomial . integ ([m, k ]) Return an antiderivative ( indefinite integral ) of this polynomial . Listing 8 - Documentation de la classe poly1d : suite Exercice 6Proposer un code, utilisant la classe poly1d, et codant les polynômes de Legendre : P0(x) = 1;P1(x) =x;
et pour tout entiern >0 (n+ 1)Pn+1(x) = (2n+ 1)xPn(x)nPn1(x):2.3 Quelques exemples de Scipy
Scipy est construit à partir de Numpy, ce qui signifie qu"il faut avoir le module Numpy pour faire fonctionner le module Scipy. En effet nombre de fonctions ainsi que le type "ndarray" de Scipy sont en fait ceux définis dans Numpy.2.3.1 Intégration numérique
Scipy propose une série de classes pour l"intégration. Cet ensemble se trouve regroupé dans le
sous-modulescipy:integrate. L"intégration peut se faire sur un intervalle, à partir d"un échantillon
de points ou encore servir à résoudre des équations différentielles (cf. paragraphe 2.3.2Le code
9 reprend le calcul de l"in tégraledécrit dans le paragra phe 1.4 , mais en utilisant trois fonctions fournies par la librairie 11 #coding: u tf8fromnumpyimportfromscipyimportintegratedeffn (x) :#fonctiona i ntegrerreturn4.0/(1+(x3)(x3))defmain () :print"par Scipy : ", integrate . quad( fn ,0 ,5)print"Romberg par Scipy : ", integrate . romberg( fn ,0 ,5)#Subdivisiond el " i ntervallep arp asr égulier
x = linspace (0 ,5 ,1000) y=fn (x) print"trapezes par Spicy", integrate . trapz (y , x , dx = 0.1)main() Listing 9 - Approximation numérique d"une intégrale en utilisant Spicy2.3.2 Résolution d"une équation différentielle ordinaire
On souhaite par exemple résoudre l"équation différentielle d2ydt2=ay+bdydt
pourt2[0;10]etune condition initiale sur y et sa dérivée. Les modules d"intégration de Scipy (et plus précisément
odeint) permettent de trouveryet, en prenant un peu d"avance sur l"affichage (cf. section2.4 ), on peut tracer la fonction résultat. Le code 10 prop oseune solution à ce problème.#coding: u tf8importnumpy as npfromscipy . integrateimportodeintimportmatplotlib . pyplot as plt#dérivéed ey ( ent antq uet ableau: y [ 0]e stl af onction, y [ 1]l ad érivée)
defderiv (y , t ) :a =2.0b =0.1returnnp . array ([ y [1] , ay[0]+by [1] ])tps = np . linspace (0.0 ,10.0 ,1000)
valeurs i n i t i a l e s d e y e t d equotesdbs_dbs27.pdfusesText_33