2015-03 – Math Challenges – 2
Write an equation solver that can solve the following two simultaneous equations for x an y when the user enters the coefficients A, B, C and D, E, F.
Ax + By = C and Dx + Ey = F
Il problema
Risolvere un sistema lineare (2 equazioni, 2 variabili)
Utilizzando uno dei metodi disponibili (sostituzione, confronto, …) si arriva alla soluzione ma sono necessari un certo numero di passaggi e le formule finali sono di difficile memorizzazione.
Osserva che la divisione non è possibile se ad-bc=0.
La soluzione
L’algoritmo di Cramer è semplice da ricordare e da applicare…
Considera la matrice dei coefficienti del sistema
e le matrici con la colonna dei termini noti al posto di quelle di x e y rispettivamente
Adesso calcola i tre determinanti corrispondenti (differenza dei prodotti incrociati…)
Le formule per x e y precedenti possono essere riscritte in forma compatta
TextWindow.WriteLine("Inserisci i coefficienti della prima equazione: ax+by=e") TextWindow.Write("a? ") a=TextWindow.ReadNumber() TextWindow.Write("b? ") b=TextWindow.ReadNumber() TextWindow.Write("e? ") e=TextWindow.ReadNumber() TextWindow.WriteLine("Inserisci i coefficienti della seconda equazione: cx+dy=f") TextWindow.Write("c? ") c=TextWindow.ReadNumber() TextWindow.Write("d? ") d=TextWindow.ReadNumber() TextWindow.Write("f? ") f=TextWindow.ReadNumber() DET=a*d-b*c If(DET = 0) Then TextWindow.WriteLine("Determinante nullo.") TextWindow.WriteLine("La regola di Cramer non può essere applicata.") Else Dx=d*e-b*f Dy=a*f-c*e x =Dx/DET y =Dy/DET TextWindow.WriteLine("x = " + x) TextWindow.WriteLine("y = " + y) EndIf