Vai al contenuto

Regola di Cramer

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)

cramer1

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.

cramer2

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

cramer3

e le matrici con la colonna dei termini noti al posto di quelle di x e y rispettivamente

cramer4
cramer5

Adesso calcola i tre determinanti corrispondenti (differenza dei prodotti incrociati…)

cramer6

cramer7

cramer8

Le formule per x e y precedenti possono essere riscritte in forma compatta

cramer9

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

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.