Un saludo queridos lectores, en esta ocasión les
presentamos una forma de resolver una ecuación de 3 por 3 por medio del método
de Cramer.
Como
interfaz tendremos lo siguiente:
Como pueden darse cuenta los
elementos principales son 14 textbox y dos botones, pero es recomendado añadir
los labels para que se distingan bien las ecuaciones y los resultados de los
valores de las incognitas.
En el programa se trabajará con
una matriz que se constituye de la siguiente manera:
A1 + B1 + C1 = D1
A2 + B2 + C2 = D2
A3 + B3 + C3 = D3
En primera instancia el codigo
estará en el boton Calcular, en el se
desarrolla el proseso de la regla de cramer. Primero declaramos variables:
Dim valident As Integer
Dim aux1 As Integer
Dim aux2 As Integer
Dim
auxX As Integer
Dim
auxX1 As Integer
Dim
auxX2 As Integer
Dim
auxY As Integer
Dim
auxY1 As Integer
Dim
auxY2 As Integer
Dim
auxZ As Integer
Dim
auxZ1 As Integer
Dim
auxZ2 As Integer
El primer proceso que se debe de
hacer es encontrar el valor de la matriz identidad que se encuentra con el
siguiente código:
'Encuentra el valor de la matriz
identidad
aux1
= (TextBox1.Text * TextBox6.Text * TextBox11.Text) + (TextBox5.Text *
TextBox10.Text * TextBox3.Text) + (TextBox2.Text * TextBox7.Text *
TextBox9.Text)
aux2 = (TextBox3.Text * TextBox6.Text *
TextBox9.Text) + (TextBox2.Text * TextBox5.Text * TextBox11.Text) +
(TextBox7.Text * TextBox10.Text * TextBox1.Text)
valident = aux1 - aux2
En este código se utilizan las
variables aux1 y aux2 de forma que estos tienen el valor representativo de:
aux1 = (A1 * B2 * C3) + (A2 * B3 * C1) + (B1 * C2 * A3)
aux2 = (C1 * B2 * A3) + (B1 * A2 * C3) + (C2 * B3 * A1)
Estos daran valor al la variable
valorident que es igual a la resta de aux2 a aux1, siendo asi este el valor de
la matriz identidad que servirá para dividir las demás matrices.
Como siguiente es comprobar que la
matriz no sea ideterminada para eso aplicamos la siguiente condición:
If valident = 0 Then
MsgBox("Matriz Indefinida")
Else
Esta al tener un valor identidad
igual a cero no puede ser resuelta, por lo tanto la matriz queda indefinida por
lo tanto no tiene solución y se termina el proseso. De caso contrario el
proceso continua y se hace a travez del siguiente codigo:
'Encuentra el valor de la matríz X
auxX1
= (TextBox4.Text * TextBox6.Text * TextBox11.Text) + (TextBox8.Text *
TextBox10.Text * TextBox3.Text) + (TextBox2.Text * TextBox7.Text *
TextBox12.Text)
auxX2 = (TextBox3.Text *
TextBox6.Text * TextBox12.Text) + (TextBox2.Text * TextBox8.Text *
TextBox11.Text) + (TextBox7.Text * TextBox10.Text * TextBox4.Text)
auxX = (auxX1 - auxX2) / valident
txtX.Text = auxX
'Encuentra el valor de la matríz Y
auxY1
= (TextBox1.Text * TextBox8.Text * TextBox11.Text) + (TextBox5.Text *
TextBox12.Text * TextBox3.Text) + (TextBox4.Text * TextBox7.Text *
TextBox9.Text)
auxY2 = (TextBox3.Text *
TextBox8.Text * TextBox9.Text) + (TextBox4.Text * TextBox5.Text *
TextBox11.Text) + (TextBox7.Text * TextBox12.Text * TextBox1.Text)
auxY = (auxY1 - auxY2) / valident
txtY.Text = auxY
'Emcuentra el valor de la matríz Z
auxZ1
= (TextBox1.Text * TextBox6.Text * TextBox12.Text) + (TextBox5.Text *
TextBox10.Text * TextBox4.Text) + (TextBox2.Text * TextBox8.Text *
TextBox9.Text)
auxZ2 = (TextBox4.Text *
TextBox6.Text * TextBox9.Text) + (TextBox2.Text * TextBox5.Text *
TextBox12.Text) + (TextBox8.Text * TextBox10.Text * TextBox1.Text)
auxZ = (auxZ1 - auxZ2) / valident
txtZ.Text = auxZ
End If
End Sub
Donde los auxX1, auxX2 actúan de igual forma que
los aux1 y aux2 pero este siendo la matriz ordenada de forma DBC, auxY1, auxY2
trabajan con la matriz ordenada de manera ADC y por ultimo las variables auxZ1
y auxZ2 trabajan con la matriz ordenada de manera ACD.
Por último se le agrega código al botón Limpiar quedando de la siguiente manera:
TextBox1.Clear()
TextBox2.Clear()
TextBox3.Clear()
TextBox4.Clear()
TextBox5.Clear()
TextBox6.Clear()
TextBox7.Clear()
TextBox8.Clear()
TextBox9.Clear()
TextBox10.Clear()
TextBox11.Clear()
TextBox12.Clear()
txtX.Clear()
txtY.Clear()
txtZ.Clear()
Esto siendo para limpiar las cajas de texto para
hacer otra operación.
El proyecto pueden descargarlo
dando click en la siguiente imagen.
En el proyecto encontrarán un
modulo y codigo en el evento keypress en los textbox, este se utiliza para validar o mas bien limitar los
caracteres en ellos admitiendo solo numeros y el signo negativo (-0123456789).