Los determinantes
juegan un papel de gran importancia en la resolución de sistemas de ecuaciones
lineales; la regla de crammer es un teorema que permite hallar la solución de
estos, en cual primero la vamos a definir para poder resolver los sistemas.
Primero empezaremos
explicando en que consiste y como solucionar un sistema de ecuaciones por el
método de crammer para después poder aplicarlo en visual basic.
Sea el sistema de
ecuaciones:
Donde todas las ecuaciones
están ordenadas de acuerdo a las variables y el término independiente se
encuentra a la derecha del signo igual.
Y sean los determinantes:
Matriz
identidad
|
Para
“X”
|
Para
“y”
|
Para
“z”
|
D= a1
b1 c1
a2
b2 c2
a3
b3 c3
|
Dx= d1 b1
c1
d2 b2 c2
d3 b3 c3
|
Dy= a1 d1
c1
a2 d2 c2
a3 d3 c3
|
Dy= a1 b1
d1
a2 b2 d2
a3 b3 d3
|
D=se
forma con los coeficientes numéricos de la incógnita de cada una de las
ecuaciones.
Dx=se
forma sustituyendo la columna de la variable x por la de términos
independientes.
Dy=se
forma sustituyendo la columna de la variable x por la de términos
independientes.
Dz=se
forma sustituyendo la columna de la variable z por la de términos
independientes.
El conjunto solución de este sistema está
dado por:
X=Dx/D
|
Y=Dy/D
|
Z=Dz/D
|
Donde D ≠ 0
|
Ejemplo:
Para Calcular D:
Para Calcular Dx:
Para Calcular Dy:
Para Calcular Dz:
Solución:
Aplicando lo anterior en Visual Basic
El diseño queda de esta manera pero cada
quien lo diseña a su manera esta es solo un ejemplo de cómo podría ser:
Nota:
El usuario puede o no utilizar nomenclatura (En mi caso
no utilicé) Si se desea utilizar
nomenclatura es cuestión de adaptar el código.
Colocar:
·
26 label.
·
2 GrupBox para colocar los
label y los TextBox.
·
3 Button.
Código en el Botón resolver:
Es necesario declararar 7 variables:
Nota: Hay que tomar en cuenta la fórmula
para hallar las variables como anteriormente se mencionan para no tener
errores.
matrizidentidad = ((Val(TextBox1.Text) *
Val(TextBox5.Text) * Val(TextBox9.Text)) + (Val(TextBox4.Text) *
Val(TextBox8.Text) * Val(TextBox3.Text)) + (Val(TextBox2.Text) *
Val(TextBox6.Text) * Val(TextBox7.Text))) - ((Val(TextBox7.Text) *
Val(TextBox5.Text) * Val(TextBox3.Text)) + (Val(TextBox4.Text) * Val(TextBox2.Text)
* Val(TextBox9.Text)) + (Val(TextBox8.Text) * Val(TextBox6.Text) *
Val(TextBox1.Text)))
subx = ((Val(TextBox10.Text) * Val(TextBox5.Text) *
Val(TextBox9.Text)) + (Val(TextBox11.Text) * Val(TextBox8.Text) *
Val(TextBox3.Text)) + (Val(TextBox2.Text) * Val(TextBox6.Text) *
Val(TextBox12.Text))) - ((Val(TextBox12.Text) * Val(TextBox5.Text) *
Val(TextBox3.Text)) + (Val(TextBox8.Text) * Val(TextBox6.Text) *
Val(TextBox10.Text)) + (Val(TextBox11.Text) * Val(TextBox2.Text) *
Val(TextBox9.Text)))
suby = ((Val(TextBox1.Text) *
Val(TextBox11.Text) * Val(TextBox9.Text)) + (Val(TextBox10.Text) *
Val(TextBox6.Text) * Val(TextBox7.Text)) + (Val(TextBox4.Text) *
Val(TextBox12.Text) * Val(TextBox3.Text))) - ((Val(TextBox7.Text) *
Val(TextBox11.Text) * Val(TextBox3.Text)) + (Val(TextBox12.Text) *
Val(TextBox6.Text) * Val(TextBox1.Text)) + (Val(TextBox4.Text) *
Val(TextBox10.Text) * Val(TextBox9.Text)))
subz = ((Val(TextBox1.Text) *
Val(TextBox5.Text) * Val(TextBox12.Text)) + (Val(TextBox2.Text) *
Val(TextBox11.Text) * Val(TextBox7.Text)) + (Val(TextBox4.Text) *
Val(TextBox8.Text) * Val(TextBox10.Text))) - ((Val(TextBox7.Text) *
Val(TextBox5.Text) * Val(TextBox10.Text)) + (Val(TextBox4.Text) *
Val(TextBox2.Text) * Val(TextBox12.Text)) + (Val(TextBox8.Text) * Val(TextBox11.Text)
* Val(TextBox1.Text)))
x = subx / matrizidentidad
y = suby / matrizidentidad
z = subz / matrizidentidad
TextBox15.Text = x
TextBox16.Text = y
TextBox17.Text = z
Código en el botón limpiar:
Código en el botón Salir:
Para Mejor la aplicación solo resta aplicarle
la validación para que solo nos acepte números, punto y la diagonal.
Para ello se agrega un nuevo elemento y este
será un módulo al cual se le puede nombrar como desee (En mi caso lo deje como
viene default).
En cada textbox dar doble click y
cambiar al evento Keypress y colocar
el siguiente código:
No hay comentarios:
Publicar un comentario