« Mathématiques avec Python et Ruby/Résolution de systèmes en Python » : différence entre les versions

Contenu supprimé Contenu ajouté
mAucun résumé des modifications
Aucun résumé des modifications
Ligne 43 :
On obtient, après lancement inopiné de ''Kig'' (à condition bien sûr que celui-ci soit installé, ce qui est très facile sous Linux, beaucoup moins sous les autres systèmes), la figure suivante (où il a été nécessaire de créer un ''Label'' donnant les coordonnées du point d'intersection, ce que ''PyKig'' ne sait pas faire):
 
[[Fichier:systemkig1.svg|400px|center]]
 
On lit les coordonnées du point d'intersection, qui constituent la solution du système.
Ligne 56 :
 
<source lang="python">
solution=[(x,y) for x in range(100) for y in range(200) if 3*x-2*y==-1 and x+y==8]
print(solution)
</source>
 
 
=Méthode de Cramer=
 
La [[w:Règle de Cramer|méthode de Cramer]] est également implémentable en ''Python'':
 
<source lang="python">
def affiche(e):
print(str(e[0])+'x+('+str(e[1])+')y='+str(e[2]))
 
def resoudre(e1,e2):
determinant=e1[0]*e2[1]-e1[1]*e2[0]
if determinant==0:
print('Pas de solution unique')
else:
x=(e1[2]*e2[1]-e1[1]*e2[2])/determinant
y=(e1[0]*e2[2]-e1[2]*e2[0])/determinant
print('La solution est ('+str(x)+','+str(y)+')')
 
 
e=[3,-2,-1]
f=[1,1,8]
 
affiche(e)
affiche(f)
resoudre(e,f)
</source>
 
Mais le module ''fractions'' permet d'avoir la valeur exacte de la solution chaque fois que les coefficients du système sont entiers:
 
<source lang="python">
from fractions import *
 
def affiche(e):
print(str(e[0])+'x+('+str(e[1])+')y='+str(e[2]))
 
def resoudre(e1,e2):
determinant=e1[0]*e2[1]-e1[1]*e2[0]
if determinant==0:
print('Pas de solution unique')
else:
x=Fraction(e1[2]*e2[1]-e1[1]*e2[2],determinant)
y=Fraction(e1[0]*e2[2]-e1[2]*e2[0],determinant)
print('La solution est ('+str(x)+','+str(y)+')')
 
 
e=[3,-2,-1]
f=[1,1,8]
resoudre(e,f)
</source>
 
=Avec NumPy=
 
Le module ''NumPy'' permet de faire du calcul avec ''Python'', et même en étant à la fois rapide et précis (parce que ce module est précompilé). Une fois installé, il suffit pour résoudre le système d'entrer le script suivant:
 
<source lang="python">
from numpy import *
 
A=matrix([[3,-2],[1,1]])
B=matrix([[-1],[8]])
solution=linalg.solve(A,B)
print(solution)
</source>
 
On peut télécharger ''NumPy'' sur [http://sourceforge.net/projects/numpy/files/ sa page sourceforge]
 
[[Catégorie:Python]]