Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
TextBox1.Text = ""
TextBox2.Text = ""
If filas.Text = "" Or columnas.Text = "" Then
MsgBox("Ncesitas llenar los campos de filas y de columnas")
filas.Text = 0
columnas.Text = 0
End If
If (filas.Text - 1) > 10 Or (columnas.Text - 1) > 10 Then
MsgBox("Como maximo solo se pueden 10 filas o columnas")
filas.Text = 0
columnas.Text = 0
End If
If (filas.Text - 1) <> (columnas.Text - 1) Then
MsgBox("solo se puede sacar el determinante de una matriz cuadrada")
filas.Text = 0
columnas.Text = 0
End If
Dim n As Integer = 0
Dim k As Integer = 0
Dim r As Random
r = New Random
Dim m As Integer = 0
Dim rango As Integer = 0
Dim vardos As Double = 0
Dim vartres As Double = 0
Dim filac As Double = 0
Dim matriza(2, 4)
Dim matrizb(filas.Text, columnas.Text) As Integer
Dim matrixo(filas.Text - 1, columnas.Text - 1) As Integer
Dim ran As Random
Dim i As Integer = 0
Dim j As Integer = 0
ran = New Random
For i = 0 To filas.Text - 1
For j = 0 To columnas.Text - 1
matrixo(i, j) = ran.Next(1, 8)
matrizb(i, j) = matrixo(i, j)
TextBox1.Text = TextBox1.Text & matrixo(i, j) & " "
Next
TextBox1.Text = TextBox1.Text & vbCrLf
Next
Dim determinante As Double
If filas.Text = 1 Then
MsgBox("Elementos de matriz: 1 metodo utilizado: determinante de un solo elemento")
determinante = matrixo(0, 0)
End If
If filas.Text = 2 Then
MsgBox("Elementos de matriz: 2 metodo utilizado: determinante de rango dos")
determinante = (matrixo(0, 0) * matrixo(1, 1)) - (matrixo(1, 0) * matrixo(0, 1))
End If
Dim count As Integer = 1
Dim partea As Integer = 0
Dim parteb As Integer = 0
Dim var As Integer
If filas.Text = 3 Then
MsgBox("Elementos de matriz: 3 metodo utilizado: Metodo de Garrus")
For a As Integer = 0 To 2
For b As Integer = 0 To 2
matriza(a, b) = matrixo(a, b)
Next
Next
For a As Integer = 0 To 2
For b As Integer = 0 To 1
matriza(a, b + 3) = matriza(a, b)
Next
Next
For a As Integer = 0 To 2
For b As Integer = 0 To 4
TextBox2.Text = TextBox2.Text & matriza(a, b) & " "
Next
TextBox2.Text = TextBox2.Text & vbCrLf
Next
For a As Integer = 0 To 2
var = 1
count = count - 1
For b As Integer = 0 To 2
var = var * matriza(b, count)
count = count + 1
Next
count = count - 1
partea = partea + var
Next
count = 3
For a As Integer = 0 To 2
var = 1
count = count + 1
For b As Integer = 0 To 2
var = var * matriza(b, count)
count = count - 1
Next
count = count + 1
parteb = parteb - var
Next
determinante = partea + parteb
End If
If filas.Text > 3 Then
MsgBox("elementos de matriz mayores a tres, metodo utilizado: matriz triangular")
rango = (filas.Text) - 1
For k = 0 To rango - 1
If matrizb(k, k) = 0 Then
For n = k To rango
If matrizb(n, k) <> 0 Then
filac = n : Exit For
End If
Next n
For m = k To rango
vartres = matrizb(k, m)
matrizb(k, m) = matrizb(filac, m)
matrizb(filac, m) = vartres
Next m
End If
For n = k + 1 To rango
If matrizb(n, k) <> 0 Then
vardos = matrizb(n, k) / matrizb(k, k)
For m = k To rango + 1
matrizb(n, m) = matrizb(n, m) - matrizb(k, m) * vardos
Next m
End If
Next n
Next k
For i = 0 To rango
For j = 0 To rango
TextBox2.Text = TextBox2.Text & matrizb(i, j) & " "
Next
TextBox2.Text = TextBox2.Text & vbCrLf
Next
determinante = 1
For n = 0 To rango
determinante = determinante * matrizb(n, n)
Next n
End If
Label8.Text = "el determinante es: " & determinante
End Sub
End Class
Function determinante(ByVal ara2, ByVal f2, ByVal c2)
Dim ad(f2, c2) As Double
Dim fd, cd As Integer
fd = f2
cd = c2
For f = 0 To fd
For c = 0 To cd
ad(f, c) = ara2(f, c)
Next
Next
Return determinante2(ad, fd, cd)
End Function
Function determinante2(ByVal ara, ByVal fa, ByVal ca)
Dim x As Double
If fa = ca Then
If fa = 0 Then
Return ara(0, 0)
Else
fs1 = fa - 1
While fs1 >= 0
If ara(fa, fa) = 0 Then
x = 0
Else
x = -ara(fs1, fa) / ara(fa, fa)
End If
For c = 0 To fa
ara(fs1, c) = ara(fs1, c) + ara(fa, c) * x
Next
fs1 -= 1
End While
Return ara(fa, fa) * determinante2(ara, fa - 1, ca - 1)
End If
Else
Return "La matriz no es cuadrada, por lo tanto no se puede hallar la determinante."
End If
End Function
' Prueba Matriz
Private Sub Command1_Click()
' Declaración de variables
Dim miMatrix() As Long
' Redimensionamiento de la Matriz
ReDim miMatrix(1 To 3, 1 To 3)
' Carga de Datos en la Matriz
' Fila 01
miMatrix(1, 1) = 5
miMatrix(1, 2) = 2
miMatrix(1, 3) = 4
' Fila 02
miMatrix(2, 1) = -1
miMatrix(2, 2) = 5
miMatrix(2, 3) = 3
' Fila 03
miMatrix(3, 1) = 6
miMatrix(3, 2) = 3
miMatrix(3, 3) = -2
Print ""
Print "Determinante de la Matrix"
Dim Respuesta As Long
Respuesta = Determinante(miMatrix())
Call MuestraMatriz(miMatrix())
Print ""
Print " El Determinante es : "; Respuesta
End Sub
Public Function Determinante(ByRef A() As Long) As Long
' Declaración de variables
Dim la1 As Long, la2 As Long, ua1 As Long, ua2 As Long, r As Long, c As Long
' Determina las dimensiones de las matrices
la1 = LBound(A, 1)
ua1 = UBound(A, 1) ' Número de Filas de A()
la2 = LBound(A, 2)
ua2 = UBound(A, 2) ' Número de Columnas de A()
' Determina si es una matriz cuadrada
If ua1 = ua2 Then
' Declara vectores para los indices
Dim vecFil() As Long
Dim vecFilInv() As Long
' Calcular el vector de Filas y Filas Inversa
ReDim vecFil((2 * ua1) + 1) As Long
ReDim vecFilInv((2 * ua1) + 1) As Long
' Carga el vector para las filas
For r = 1 To ua1
vecFil(r) = r
vecFil(r + ua1) = r
Next r
' Carga el vector para las filas inversas
For r = 1 To (2 * ua1)
vecFilInv(r) = vecFil((2 * ua1) + 1 - r)
Next r
' Declaración de Variables
Dim Producto, Acumulado, Sumas, Restas As Long
' Calcular las SUMAS
Producto = 1
Acumulado = 0
Sumas = 0
For r = 1 To ua1
For c = 1 To ua1
Producto = Producto * A(vecFil(c), vecFil(c + r - 1))
Next c
Acumulado = Acumulado + Producto
Producto = 1
Next r
Sumas = Acumulado
' Calcular las Restas
Producto = 1
Acumulado = 0
Restas = 0
For r = 1 To ua1
For c = 1 To ua1
Producto = Producto * A(vecFilInv(c), vecFil(c + r - 1))
Next c
Acumulado = Acumulado + Producto
Producto = 1
Next r
Restas = Acumulado
' Calcuar el Determinante
Determinante = Sumas - Restas
Else
' Mensaje de Error
MsgBox ("Debe ser una matriz cuadrada para calcular el Determinante")
End If
End Function
' Procedimiento Mostrar Matriz
Public Sub MuestraMatriz(ByRef A() As Long)
' Declaración de variables
Dim l1 As Integer, l2 As Integer, u1 As Integer, u2 As Integer, r As Integer, c As Integer
Dim s As String * 10
' Determina las dimensiones de las matrices
l1 = LBound(A(), 1)
l2 = LBound(A(), 2)
u1 = UBound(A(), 1)
u2 = UBound(A(), 2)
' Recorre toda la matriz y la muestra en el formulario
For r = l1 To u1
For c = l2 To u2
RSet s = Str$(A(r, c))
frmPrincipal.Print (s);
Next c
frmPrincipal.Print
Next r
End Sub
package javaapplication57;
public class JavaApplication57 {
public static void main(String[] args) {
//Declaracion de variables
int a11,a12,a13;
int a21,a22,a23;
int a31,a32,a33;
int s1,s2,s3;
int p1,p2,p3,p4,p5,p6;
int A,B,Det,DetM,DetP,DetN;
//Manzanas
int M11,M12,M13;
int M21,M22,M23;
int M31,M32,M33;
//Peras
int P11,P12,P13;
int P21,P22,P23;
int P31,P32,P33;
//Entrada de datos.
a11=3; a12=2; a13=5;
a21=5; a22=3; a23=4;
a31=8; a32=4; a33=3;
s1=95; s2=138; s3=193;
M11=s1; M12=2; M13=5;
M21=s2; M22=3; M23=4;
M31=s3; M32=4; M33=3;
P11=3; P12=s1; P13=5;
P21=5; P22=s2; P23=4;
P31=8; P32=s3; P33=3;
//Proceso
p1=a11*a22*a33;
p2=a21*a32*a13;
p3=a31*a12*a23;
p4=a13*a22*a31;
p5=a23*a32*a11;
p6=a33*a12*a21;
A=p1+p2+p3;
B=p4+p5+p6;
Det=A-B;
p1=M11*M22*M33;
p2=M21*M32*M13;
p3=M31*M12*M23;
p4=M13*M22*M31;
p5=M23*M32*M11;
p6=M33*M12*M21;
A=p1+p2+p3;
B=p4+p5+p6;
DetM=A-B;
p1=P11*P22*P33;
p2=P21*P32*P13;
p3=P31*P12*P23;
p4=P13*P22*P31;
p5=P23*P32*P11;
p6=P33*P12*P21;
A=p1+p2+p3;
B=p4+p5+p6;
DetP=A-B;
//Salida
System.out.println("Det="+Det);
System.out.println("DetM="+DetM);
System.out.println("DetP="+DetP);
}
}