Skip to content

Résoudre un système d'équations

Antoine Tran edited this page Mar 6, 2019 · 10 revisions

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 Masks, 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 Masks. Dans le cas de la résolution d'équations, un BiMask est une égalité entre les deux Masks 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"]