# Mathématiques avec Python et Ruby/Résolution de systèmes en Python
## Ruby

[ Modifier le sommaire ]
Bien entendu, on va noter x le prix d'un xylophone, et y le prix d'un youkoulélé. Les données de l'énoncé se traduisant algébriquement par 2y=3x+1 et x+y=8.
On va donc voir comment résoudre le système de deux équations à deux inconnues suivant :
$\left\{{\begin{array}{rcl}3x-2y&=&-1\\x+y&=&8\end{array}}\right.$

## Méthode graphique

Une méthode simple (surtout ici puisque la solution est formée d'entiers) consiste à tracer les deux droites d'équations respectives $3x-2y=-1$ et $x+y=8$ et de lire sur le graphique les coordonnées de leur point d'intersection. Python tout seul ne sait pas faire ça mais PyKig lance le logiciel Kig et le laisse faire le travail, à condition de lui fournir les éléments nécessaires pour faire les constructions géométriques : Les coordonnées de points de chaque droite. Or la droite d'équation $ax+by=c$ passe par les points de coordonnées $\left({\frac {c}{a}};0\right)$ et $\left(0;{\frac {b}{a}}\right)$ (intersections avec les axes de coordonnées) qui sont constructibles par Kig. Le script suivant colorie en bleu la première droite (le milieu M sert de point d'ancrage pour son équation réduite) et en rouge la seconde droite, puis affiche en mauve leur point d'intersection :
En enregistrant son contenu dans un fichier appelé system.kpy, et en exécutant dans une console ceci :
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) :
On lit les coordonnées du point d'intersection, qui constituent la solution du système. Il est possible de déplacer à la souris les points A, B, C et D et voir les coordonnées du point d'intersection se mettre à jour en temps réel : En effet Kig est un logiciel de géométrie dynamique.
Cette méthode n'est pas applicable à des systèmes de plus de deux inconnues mais elle est très visuelle pour des systèmes tels que $\left\{{\begin{array}{rcl}4x+2y&=&3\\2x+y&=&5\end{array}}\right.$ pour lesquels on voit non seulement qu'il n'y a pas de solution, mais également pourquoi il n'y a pas de solution.
Si l'une des droites est verticale ou horizontale, le fichier ci-dessus doit être modifié avec des tests gérant ces cas. Ceci est laissé en exercice.

## Méthode itérative

Si on sait que x et y sont entiers naturels, on peut résoudre le système par une double boucle sur x et y :
Pour "x"et"y" appartenant à R je propose le script suivant :
def systeme (a1,b1,c1,a2,b2,c2):

## Méthode de Cramer

La méthode de Cramer est également implémentable en Python :
Mais le module fractions permet d'avoir la valeur exacte de la solution chaque fois que les coefficients du système sont entiers :

## 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é).

### Installation

Les principales distributions Linux sont fournies avec. Sur Windows, on peut le télécharger sur http://sourceforge.net/projects/numpy/files/.
Une fois le .zip décompressé, il faut l'installer en tapant dans la console :
En cas d'erreur :
* ImportError “No Module named Setuptools” : sauvegarder le fichier https://bootstrap.pypa.io/ez_setup.py dans le dossier Python, puis l'installer : python ez_setup.py install.
** Microsoft Visual C++ 9.0 is required, le télécharger sur https://www.microsoft.com/en-us/download/details.aspx?id=44266

### Utilisation

Pour résoudre le système, entrer le script suivant :