Salut salut!!
Alors voila, j'ai un projet a réaliser en python ms je ne m y connais pas bien du tt en informatique. Je dois rendre ce projet pour lundi. Est ce que il y a qlq pour qui python c est un jeux d enfant et qui a envie de m'aider un peu?
Merci mille fois.
1 Introduction
Jérôme Dossogne 24 novembre 2010
http://www.ulb.ac.be/di/info-f206/
Pour ce projet nous vous demandons de créer un programme permettant de déterminer les coef- ficients stœchiométriques d’une équation-bilan respectant les règles de la conservation de la matière. De tels programmes existent dans le commerce (par exemple : EBAS reaction calculator1), nous vous proposons dès lors d’en créer un vous-même.
Les coefficients peuvent être calculés automatiquement via la méthode dite « algébrique » qui consiste à résoudre un système homogène de n équations linéaires à m inconnues pour une équation-bilan de m molécules différentes composées de n types d’atomes différents.
Par exemple, l’équation-bilan (à coefficients w, x, y, z inconnus).
wC6H12O6 +xO2 â†\ yCO2 +zH2O (1)
peut être traduite par le système suivant :
6w=y 6w-y=0
12w=2z <=> 12w-2z=0 (2)
6w + 2x= 2x + z 6w + 2x - 2y -z=0
12w = 2z ⇔ 12w âˆ\ 2z = 0 (2) 6w + 2x = 2x + z 6w + 2x âˆ\ 2y âˆ\ z = 0
Un tel système peut être alors résolu par la méthode d’élimination de Gauss-Jordan qui consiste
1. à transformer le système en une matrice de travail ;
2. dans notre cas, à fixer la valeur d’un des coefficients ;
3. à transformer la matrice dans sa forme échelonnée réduite ;
4. à récupérer le plus petit commun multiple des dénominateurs de la dernière colonne ; les valeurs ainsi obtenues seront les coefficients de l’équation-bilan finale.
Pour illustrer la méthode, nous allons présenter l’application de chacune des étapes sur le système (2).
1.1 Étape 1
6w-y=0 6 0 -1 0 w 0
12w-2z=0 <=> Coefficients X Variables=0 <=> 12 0 0 -2 x = 0 (3)
6w+2x-2y-z=0 6 2 -2 -1 y 0
z
La matrice dite de travail sera la matrice des coefficients étendue avec celle des zéros :
6 0 -1 0 0
12 0 0 -2 0 (4)
6 2 -2 -1 0
1.2 Étape 2
Fixons la valeur d’une des variables, par exemple z = 1. Pour ce faire, nous partons de la matrice définie en (4) et nous ajoutons une ligne :
6 0 -1 0 0
12 0 0 -2 0
6 2 -2 -1 0 (5)
0 0 0 1 1
1.3. Étape 3
Nous devons maintenant transformer (5) sous sa forme échelonnée réduite en sélectionnant au total un pivot par ligne et en commençant par la première colonne juqu’à la colonne n + 1 = 4.
(5) devient après plusieurs manipulations:
1 0 0 0 1/6
0 0 1 0 1 (6)
0 1 0 0 1
0 0 0 1 1
1.4. Etape 4Étape 4
De (10) nous récupérons les valeurs ( 1 , 1, 1, 1) = (w, x, y, z). Comme les coefficients de l’équation-bilan doivent être des entiers, nous calculons le plus petit commun multiple des dénominateurs et multiplions les valeurs obtenues par ce dernier; ainsi, nous découvrons que (1,6,6,6)=(w,x,y,z). En remplaçant (w,x,y,z) par leur valeur dans (7), nous voyons que l'équation-bilan recherchée est:
C6H12O6+6O2 -> 6CO2 + 6H20 (7)
Vous noterez que cette dernière étape d’apparence simple s’adapte mieux à une application manus- crite qu’informatique. En effet, dans l’exemple fourni, deux hypothèses sont implicites : tout d’abord que nous travaillons avec des nombres sous forme de fractions et qu’ensuite ces fractions sont réduites avant de calculer le plus petit commun multiple de leur dénominateur. En Python, travailler avec des fractions peut être laborieux. Une alternative que nous vous suggérons serait de travailler avec des nombres réels, de définir un degré de précision considéré (nombre de chiffres derrières la virgule = n), de multiplier tous les nombres par une même valeur (10n), de les tronquer à partir de la virgule afin de les transformer tous en entiers et, pour terminer, de tous les diviser par leur plus grand commun diviseur.
Par exemple, si dans un exemple manuscrit soue aurions eu (5/4,9/8)= (w,x) et donc (10,9) = (w,x) comme valeur finale pour les coefficients, en Python stockées comme des réels, les valeurs récupérées seraient (1.25, 1.125) = (w, x). Il nous suffit alors de multiplier les deux valeurs par 1000 (précision de 3 chiffres après la virgule) pour obtenir (1250, 1125) = (w, x), de calculer leur plus grand commun diviseur (PGCD(1250,1125) = 125) et de diviser chacun de ces nombres par ce diviseur pour obtenir le résultat (1250/125, 1125/125) = (10, 9) = (w, x) qui est bien équivalent au résultat fait « à la main » sans avoir fait d’hypothèse sur la représentation des nombres.
Reprenant notre exemple (1/6,1,1,1)=(w,x,y,z), nous obtiendrons donc en Python (0.15000000....,1,1,1) = (w,x,y,z), ainsi, après avoir fixé la précision en multipliant par 1000 les 4 valeurs et en tronquant ce qui reste derrière la virgule, le résultat obtenu sera (159,1000,1000,1000) = (w,x,y,z). Nous constatons dès lors que le système de représentation choisi pour les valeurs implique certaines limitations puisque le résultat obtenu (159,1000,1000,1000) = (w,x,y,z) s’écarte de celui obtenu en travaillant avec des fractions (1,6,6,6) = (w,x,y,z) suite à la précision limitée que nous avons dû imposer. Nous devons soit nous en accomoder (ce qui sera accepté pour votre projet) soit travailler avec des notations sous forme de fractions, ce qui implique une gestion plus complexe de l’information.
2 Énoncé
Nous attendons de votre programme qu’il s’exécute par la commande python projetINFOF206.py precision nbLignes nbColonnes suivi de la liste des valeurs de la matrice n × m des coefficients (dans l’exemple en (3)) listés ligne par ligne de gauche à droite 3 . Votre programme doit ensuite afficher à l’écran les coefficients de l’équation-bilan équilibrée 4 en ayant suivi la méthode d’élimination de Gauss-Jordan. Vous pouvez utiliser le module « sys » via la commande import sys pour vous aider.