Professional Documents
Culture Documents
1 3 5
2 5 1
2 3 8
et b =
10
8
3
.
Alors, nous pouvons simplement trouver la rponse du systme x = A
1
b par
>>> A = np.array([ [1.0,3.0,5.0], [2.0,5.0,1.0], [2.0,3.0,8.0] ])
>>> b = np.array([10.0, 8.0, 3.0])
>>> Ainv = np.linalg.inv(A) # Linverse de A
>>> x = np.dot(Ainv, b) # Et voici la solution !
>>> x
>>> np.dot(A, x) # Voyons si le rsultat est correct !
>>> b # Et oui, en faisant la comparaison cest le bon rsultat !
Il y a un autre moyen pour trouver la solution dun tel systme. Il utilise un algorithme plus adapt
la rsolution de ce type de problmes, donc cest prfrable de lutiliser directement au lieu de faire des
transformations avec les matrices comme on vient de faire :
>>> x = np.linalg.solve(A, b) # Et cest tout !
>>> x
Pour les curieux, la plupart des oprations en algbre linaire peuvent tre effectues avec NumPy.
Un peu plus dexemples peuvent tre trouves ici : http://docs.scipy.org/doc/scipy/
reference/tutorial/linalg.html.
5.4 Exercices :
Trouver les solutions des systmes suivants. Aprs avoir trouv la rponse, vriez quelle satisfait
le systme en question.
13
Systme :
4x + 2y + z = 1
3x + 8y + z = 2
2x + 2y + 4z = 19
Systme :
(13 + 2j)x + (3 + 1j)y + 52z = 1
0.2x + (5 + 0.77j)y = 7.5 + 3j
2.1x + 3.2y + (8.3 2.5j)z = 35
6 Intgration
Ils existent des algorithmes pour lintgration numrique dune fonction donne. La bibliothque
SciPy possde quelques techniques que nous allons voir dans cette section.
Commencez par importer la bibliothque en question :
>>> import scipy.integrate as si
>>> help(si) # Voir les algorithmes dintgration numrique
La fonction quad trouve lintgrale dune fonction dune variable entre deux points. Par exemple, si
vous voulez intgrer la fonction sin dans lintervalle [0; ] : I =
0
sin(x)dx
vous pouvez le faire comme a :
>>> I = si.quad(np.sin, 0, np.pi) # Lintgrale de la
# fonction sin entre 0 et pi
>>> I
(2.0, 2.2204460492503131e-14) # Ici la premire valeur est
# lestimation de lintgrale. La deuxime
# nous indique lerreur maximale par rapport aux vrai rsultat.
>>> np.cos(np.pi) - np.cos(0) # Et une petite vrification du rsultat...
Pour intgrer une fonction complexe nous devons la dnir. Le moyen le plus simple cest dutiliser
des expressions- en utilisant le syntaxe suivant :
>>> f = lambda x: np.sin(x) + np.cos(x)
**
2
>>> f
>>> f(3) # Calculer sin(3) + cos(3)^2
>>> f(4) # Calculer sin(4) + cos(4)^2
>>> g = lambda x,y: np.sin(x) + np.cos(y)
>>> g(1,1) # Calculer sin(1) + cos(1)
14
>>> g(0,0) # Calculer sin(1) + cos(1)
Maintenant pour trouver lintgrale de f il suft dexcuter lalgorithme :
>>> si.quad(f, 0, 100) # Lintgrale de f dans [0; 100]
>>> si.quad(f, 100, 10) # Lintgrale de f dans [100; 10]
>>> si.quad(lambda x: x
**
3, 0, 1) # Trouver lintgrale de x^3 dans [0; 1]
On peut galement utiliser comme limites dintgration. Par exemple si on veut calculer I =
0
e
x
dx il suft dexcuter :
>>> f = lambda x: np.exp(-x) # La fonction intgrer
>>> si.quad(f, 0, np.Inf) # Lintgrale
Pour trouver la valeur dun double intgrale on peut utiliser la fonction dblquad. Par exemple, la
valeur de I =
1
e
xt
t
dtdx peut tre trouve par :
>>> g = lambda t, x: np.exp(-x
*
t)/t # Fonction intgrer.
# Dabord intgrer par t, ensuite par x.
>>> si.dblquad(g, 0, np.Inf, lambda x: 1, lambda x: np.Inf)
6.1 Exercices :
Trouvez I
1
=
5
0
(4x + 12)dx.
Trouvez I
2
=
sin
2
xdx.
Trouvez I
3
=
0
e
2x
dx.
7 Graphiques
Il est possible dafcher des graphiques avec Python en utilisant plusieurs bibliothques. La plus
connue est matplotlib qui essaie de ressembler aux foncions graphiques de Matlab. Nous allons faire
juste quelques exemples trs simples pour montrer les principes de base.
Tout dabord, importez la bibliothque de graphismes :
>>> from matplotlib import pyplot as plt # Importer la bibliothque pyplot
# qui se trouve dans matplotlib et utiliser le nom plt comme raccourci
# (au lieu de pyplot).
15
Maintenant vois pouvez afcher des nuages de points avec la fonction scatter :
>>> x = np.random.uniform(0, 1, 1000) # Gnrer alatoirement 100 valeurs
# uniformment rpartis dans [0, 1]
>>> y = np.random.uniform(0, 1, 1000) # Gnrer alatoirement 100 valeurs
# uniformment rpartis dans [0, 1]
>>> plt.scatter(x, y) # Afficher un nuage de points avec
# cordonnes donnes par (x, y)
>>> plt.show() # Afficher la graphique
>>> x1 = np.random.normal(0.5, 0.1, 1000) # Gnrer alatoirement 100 valeurs
# normalement rpartis dans avec moyenne 0.5 et cart-type 0.1
>>> y1 = np.random.normal(0.5, 0.1, 1000) # Gnrer alatoirement 100 valeurs
# normalement rpartis dans avec moyenne 0.5 et cart-type 0.1
>>> plt.scatter(x1, y1, color=red) # Afficher un nuage de points rouges avec
# cordonnes donnes par (x1, y1)
Pour afcher une fonction nous pouvons utiliser les fonctions suivantes :
>>> x = np.arange(-np.pi, np.pi, 0.1) # Gnrer des valeurs pour x
# de -pi pi avec un pas de 0.1 radians
>>> x
>>> y = np.sin(x)
>>> y
>>> plt.plot(x, y) # Afficher la graphique
Matplotlib donne des possibilits trs vastes pour la gnration des graphiques. Pour plus dinfor-
mation vous pouvez consulter la gallrie des exemples ladresse suivante http://matplotlib.
sourceforge.net/gallery.html.
16