Visual Basic.NET - Calcular determinante de una matriz

   
Vista:

Calcular determinante de una matriz

Publicado por Enrique Larios (8 intervenciones) el 28/03/2008 23:00:56
Hola que tal...

Quisiera saber si alguien tiene el código para calcular la determinante de una matriz de máximo 10x10 ya que no lo dejaron de tarea en programación pero ese tema en álgebra no lo hemos visto y no le entiendo nada... Ojala alguien me pueda ayudar...

De antemano, gracias por su ayuda...
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Calcular determinante de una matriz

Publicado por Javier (30 intervenciones) el 29/03/2008 00:16:27
Hola, Por consejo y experiencia si te ineresa la Programacion tratá de resolver vos ese problema, te vas a encontrar con un monton de cosas cuando seas profecional que vas a tener que Investigar ´o preguntar a otro profesional no relacionado c/ informatica como un Contador o un mismo empleado.

Determinanteses muy facil de resolver, ahy un metodo sencillo que creo q es el de Gauss . fijate en un libro de Algebra lineal que te explica ó preguntale aun profe de Matematicas. Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Calcular determinante de una matriz

Publicado por Tulio (2 intervenciones) el 08/04/2008 19:10:01
este programa te calcula la determinante de cualquier orden, disfrutenlo que estuvo cañon hacerlo.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
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
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Calcular determinante de una matriz

Publicado por Tulio (2 intervenciones) el 10/04/2008 05:07:11
ahi te mando la determinante para orden n*n, cuando nos lo dejaron a nosotros note que no estaba en ninguna página asi que lo tuvimos que hacer XD almenos ahí lo dejo pa los de atras:

Public Function determinante(ByVal m1(,) As Double) As Integer
Dim orden As Integer = m1.GetLength(0)
Dim suma, resta, multiplicacion, multiplicacion2 As Integer
Dim filat, columnat, columnat2, fil, col As Integer
Dim M(m1.GetLength(0) - 1, m1.GetLength(1) - 1) As Double
M = m1

If orden = 1 Then

determinante = M(0, 0)

ElseIf orden = 2 Then

determinante = (M(0, 0) * M(1, 1)) - (M(0, 1) * M(1, 0))

ElseIf orden = 3 Then

For fil = 0 To orden - 1
columnat = 0
columnat2 = orden - 1
filat = fil
multiplicacion = M(fil, 0)
multiplicacion2 = M(fil, orden - 1)
For col = 1 To orden - 1
If (filat + 1) > (M.GetLength(0) - 1) Then
filat = 0
Else
filat += 1
End If
columnat += 1
columnat2 -= 1

multiplicacion *= M(filat, columnat)
multiplicacion2 *= M(filat, columnat2)
Next
suma += multiplicacion
resta += multiplicacion2
Next
determinante = (suma - resta)

ElseIf orden > 3 Then

Dim aux As Double
orden -= 1

For fil = 0 To orden - 1

If M(fil, fil) = 0 Then

For columnat = fil To orden
If M(columnat, fil) <> 0 Then
filat = columnat
Exit For
End If
Next

For col = fil To orden
aux = M(fil, col)
M(fil, col) = M(filat, col)
M(filat, col) = aux
Next

End If

For columnat = fil + 1 To orden
If M(columnat, fil) <> 0 Then
aux = M(columnat, fil) / M(fil, fil)
For col = fil To orden
M(columnat, col) -= M(fil, col) * aux
Next col
End If
Next

Next

determinante = 1
For fil = 0 To orden
determinante = determinante * M(fil, fil)
Next

End If

End Function
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Calcular determinante de una matriz

Publicado por Wanshi (1 intervención) el 20/04/2009 18:33:06
Yo entre aqui buscando alguna idea de como resolver el problema de la determinante y los codigos que pusieron me parecieron muy interesantes, pero yo lo hice otra manera supongo que mas personas vendran por aqui asi que yo tambien dejo mi codigo por si es que le sirve a alguien

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
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

bueno yo use dos funciones por que la primera es para duplicar la matriz, para que asi la matriz no sufra cambios.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Calcular determinante de una matriz

Publicado por Benito (1 intervención) el 12/04/2014 01:59:00
Me parece muy bueno el programa pero al quererlo utilizar como se utiliza. es decir hago una matriz n por n en Excel, después para sacar la determinante que tengo que escribir para llamar al programa.

saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Calcular determinante de una matriz

Publicado por ruth (1 intervención) el 09/07/2015 05:03:24
y como es el formulario
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar