Mathématiques avec Python et Ruby/Résolution de systèmes en Ruby
En notant x le prix d'un xylophone et y celui d'un youkoulélé, l'énoncé se traduit 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:
Méthode itérative
modifierDans le cas présent, il se trouve que x et y sont entiers naturels. Si on sait que c'est le cas, on peut les chercher par tâtonnement avec une boucle sur x et sur y. On va successivement fabriquer un tableau bidimensionnel avec les entiers de 0 à 100 (deux premières lignes) puis regarder quels couples de ce tableau vérifient à la fois les deux conditions données par le système:
total=[[]]
(0..100).each{|x| (0..100).each{|y| total.push([x,y])}}
solutions=total.select{|c| 3*c[0].to_f-2*c[1].to_f==-1 and c[0].to_f+c[1].to_f==8}
puts(solutions)
Méthode algébrique
modifierLe système peut aussi s'écrire matriciellement soit avec et . Alors sa solution s'obtient par le calcul matriciel , ce qui se fait directement avec le module matrix de Ruby:
require 'matrix'
require 'mathn'
A=Matrix[[3,-2],[1,1]]
B=Matrix[[-1],[8]]
solution=A.inverse*B
puts(solution)
En ayant choisi mathn avec, les solutions s'écrivent automatiquement sous forme de fractions si elles ne sont pas entières.