-
Notifications
You must be signed in to change notification settings - Fork 3
Résoudre un système d'équations
Lorsqu'il s'agit de résoudre un système d'équations, l'opérateur ne suffit plus. En effet, la résolution d'équation est un calcul qui prend en entrée au moins deux Mask
s, et le résultat ne peut pas être stocké dans un Mask
, vu qu'il s'agit d'une liste de valeurs (chacune correspondant à la solution d'une variable).
L'objet à utiliser pour ce calcul est EquationSolver
. Sa méthode statique solve
, qui permet (comme son nom l'indique) de résoudre un système d'équations, prend une liste de BiMask
comme argument. Un BiMask
n'est autre qu'une combinaison de deux Mask
s. Dans le cas de la résolution d'équations, un BiMask
est une égalité entre les deux Mask
s qui le composent.
En résumé, la ligne x + 3 = 2x se code comme ceci :
BiMask line = new BiMask(new MaskExpression("x+3"), new MaskExpression("2x"));
Afin d'éviter un code trop verbeux pour la résolution d'un système à plusieurs équations, EquationSolver
possède une méthode build
qui s'utilise comme ceci :
List<BiMask> lines = EquationSolver.build("x+y+z=6", "x+2y+2z=11", "x+3y+z=10");
Ce qui permet d'éviter le code ci-dessous :
BiMask l1= new BiMask(new MaskExpression("x+y+z"), new MaskExpression("6"));
BiMask l2 = new BiMask(new MaskExpression("x+2y+2z"), new MaskExpression("11"));
BiMask l3 = new BiMask(new MaskExpression("x+3y+z"), new MaskExpression("10"));
List<BiMask> lines = Arrays.asList(l1, l2, l3);
Donc, pour résoudre cette équation, il suffit d'appeler la méthode solve
.
String[] solutions = EquationSolver.solve(lines);
for(String solution : solutions)
System.out.println(solution);
La méthode solve
retourne un tableau de chaînes de caractères. Si les solutions sont x=1
, y=2
et z=3
, solve
renverra
["1", "2", "3"]