« Python pour le calcul scientifique/Fonctions mathématiques générales » : différence entre les versions

Contenu supprimé Contenu ajouté
Aucun résumé des modifications
Aucun résumé des modifications
Ligne 1 :
Par défaut, Python ne propose que les quatre opérations et l'élévation à la puissance. Le module NumPy fournit les opérations mathématiques avancées. En particulier, il propose des fonctions « universelles » ''(ufunc)'' qui peuvent travailler directement sur des matrices.
 
== Fonctions universelles de base ==
On retrouve les quatre opérations mais sous la forme de fonctions de deux variables :
* <code>np.add(x1, x2)</code> : ''x''<sub>1</sub> + ''x''<sub>2</sub> ;
* <code>np.subtract(x1, x2)</code> : ''x''<sub>1</sub> – ''x''<sub>2</sub> ;
* <code>np.multiply(x1, x2)</code> : ''x''<sub>1</sub> × ''x''<sub>2</sub> ;
* <code>np.divide(x1, x2)</code>, <code>np.true_divide(x1, x2)</code> : ''x''<sub>1</sub> ÷ ''x''<sub>2</sub>.
Les variables ''x''<sub>1</sub> et ''x''<sub>2</sub> peuvent être des matrices de même dimension, les opérations sont alors faites élément par élément. Ces fonctions disposent en outre de méthodes, notamment de la méthode <code>.accumulate()</code> qui cumule les opérations, par exemple
<source lang="python">
np.add.accumulate([1, 2, 3, 4, 5])
# array([ 1, 3, 6, 10, 15])
</source>
Cette méthode existe d'ailleurs pour toutes les fonctions universelles de deux variables.
 
Les autres opérations de base sont :
* <code>np.negative(x)</code> : –''x'' ;
* <code>np.reciprocal(x)</code> : 1 / ''x'' ;
* <code>np.mod(x1, x2)</code>, <code>np.remainder(x1, x2)</code> : reste de la division euclidienne ''x''<sub>1</sub> ÷ ''x''<sub>2</sub> ;
* <code>np.absolute(x)</code>, <code>np.abs(x)</code> : |''x''| ;
* <code>np.rint(x)</code> : arrondit à l'entier le plus proche ;
* <code>np.floor(x)</code>, <code>np.ceil(x)</code> : arrondit respectivement à l'entier directement inférieur et supérieur ;
* <code>np.trunc(x)</code> : tronque les décimales, partie entière, E(''x'') ;
* <code>np.sign(x)</code> : signe de ''x'' (+1 ou –1) ;
* <code>np.gcd(x1, x2)</code> : PGCD ;
* <code>np.lcm(x1, x2)</code> : PPCM.
 
== Autres fonctions universelles ==
* <code>np.power(x1, x2)</code> : ''x''<sub>1</sub><sup>''x''<sub>2</sub></sup> ;
* <code>np.square(x)</code> : ''x''<sup>2</sup> ;
* <code>np.sqrt(x)</code> : <math>\sqrt{x}</math> ;
*: si ''x'' est une matrice de réels, alors le résultat doit être réel, les valeurs négatives renvoient un NaN ; si ''x'' contient au moins un nombre complexe, alors le résultat est complexe, par exemple :
<source lang="python">
np.sqrt(-1) # NaN
np.sqrt(-1 + 0j) # 0 + 1j
np.sqrt(complex(-1)) # 0 + 1j
</source>
* <code>np.cbrt(x)</code> : <math>\sqrt[3]{x}</math> ;
* <code>np.exp(x)</code> : exp(''x''), ''e<sup>x</sup>'' ;
* <code>np.exp2(x)</code> : 2<sup>''x''</sup> ;
* <code>np.expm1(x)</code> : exp(''x'') – 1 ;
* <code>np.log(x)</code> : ln(''x''), logarithme népérien ;
* <code>np.log2(x)</code> : logarithme en base 2 ;
* <code>np.log10(x)</code> : log(''x''), logarithme en base 10 ;
* <code>np.log1p(x)</code> : ln(1 + ''x'') ;
* <code>np.conj(z)</code> : {{surligner|''z''}}, conjugué complexe ;
* <code>np.heavyside(x1, x2)</code> : fonction marche, vaut 0 si ''x''<sub>1</sub> &lt; 0, 1 si ''x''<sub>1</sub> &gt; 0, et ''x''<sub>2</sub> si ''x''<sub>1</sub> = 0.
 
== Autres fonctions ==
; Fonction trigonométriques
* <code>np.sin(x)</code> ;
* <code>np.cos(x)</code> ;
* <code>np.tan(x)</code> ;
* <code>np.arcsin(x)</code> ;
* <code>np.arccos(x)</code> ;
* <code>np.arctan(x)</code>.
 
== Notes et références ==
{{références}}
* {{lien web
| url = https://docs.scipy.org/doc/numpy/reference/ufuncs.html
| titre = Universal functions (ufunc)
| site = Numpy and Scipy Documentation
| lang = en
| consulté le = 2019-05-18
}}
 
----