====== Les bases de SciPy======
La librairie SciPy ajoute à NumPy des fonctionnalités mathématiques.
===== Directive d'importation ====
* Méthode standard : import scipy as sp
* Importation par sous-modules (//cf// le [[http://docs.scipy.org/doc/scipy/reference/api.html#guidelines-for-importing-functions-from-scipy|site de Scipy]]) : from scipy import optimize
from scipy import interpolate
from scipy import integrate
...
===== Fonctionnalités =====
La libraire SciPy est particulièrement intéressante pour ces méthodes numériques :
* intégrales numériques
* intégration d'équations différentielles ordinaires
* Recherche de racines d'équations
* minimisation de fonctions
* modélisation par moindres carrés
* fonctions spéciales
* transformées de Fourier
* analyse du signal
* interpolation
* algèbre linéaire, y compris les problèmes aux valeurs propres et vecteurs propres
Des informations générales sur ces techniques numériques peuvent être trouvées notamment sur le site de [[http://www.nr.com/|Numerical Recipes]]. En particulier, les anciennes éditions sont [[http://www.nrbook.com/a/bookcpdf.php|accessibles gratuitement]] à la lecture. Les méthodes et algorithmes sont transposables à des langages comme le Python, y compris avec l'utilisation de librairies comme SciPy.
===== Intégrales définies =====
La librairie [[http://docs.scipy.org/doc/scipy/reference/integrate.html|scipy.integrate]] propose plusieurs programmes permettant de calculer des intégrales définies et intégrer des [[http://fr.wikipedia.org/wiki/%C3%89quation_diff%C3%A9rentielle|équations différentielles ordinaires]] (ODE)
Exemple de calcul avec quad :
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
Intégration numérique. Références :
http://docs.scipy.org/doc/scipy/reference/integrate.html
http://docs.scipy.org/doc/scipy/reference/generated/scipy.integrate.quad.html
quad retourne un tuple dont le premier élément est l'intégrale définie calculée
"""
from scipy.integrate import quad
def f(x):
return x**4.
I = quad(f,0,2)
print(I, I[0])
===== Constantes physiques =====
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
https://docs.scipy.org/doc/scipy-1.0.0/reference/constants.html
"""
import scipy.constants
for key, val in scipy.constants.physical_constants.items():
print(key, val)
print(key, scipy.constants.value(key), scipy.constants.unit(key), scipy.constants.precision(key))
print(scipy.constants.find('Boltzmann'))
print(scipy.constants.Boltzmann)
print(scipy.constants.physical_constants['Boltzmann constant'])
print(scipy.constants.value('Boltzmann constant'))
print(scipy.constants.unit('Boltzmann constant'))
print(scipy.constants.precision('Boltzmann constant'))
===== Références =====
* [[http://docs.scipy.org/doc/scipy/reference/tutorial/index.html|SciPy tutorial]]
* [[http://docs.scipy.org/doc/scipy/reference/index.html|Reference guide]]
* [[http://scipy-lectures.github.io/intro/scipy.html|Scipy : high-level scientific computing]], de Adrien Chauve, Andre Espaze, Emmanuelle Gouillart, Gaël Varoquaux, Ralf Gommers
* [[http://wiki.scipy.org/Cookbook|Cookbook]]
* [[http://wiki.scipy.org/Cookbook/LoktaVolterraTutorial?action=show&redirect=LoktaVolterraTutorial|Lotka-Volterra]]
* [[http://wiki.scipy.org/Cookbook/BrownianMotion|Mouvement brownien]]
* [[https://uiuc-cse.github.io/2014-01-30-cse/lessons/thw-scipy/tutorial.html]]