Public Shared Function Determinante(ByVal Matriz As Matriz) As Double If Matriz.Filas = Matriz.Columnas Then Dim Positivos, Negativos As Double Select Case Matriz.Filas Case 1 Return Matriz.ObtenerValor(0, 0) Case 2 Positivos = Matriz.ObtenerValor(0, 0) * Matriz.ObtenerValor(1, 1) Negativos = Matriz.ObtenerValor(0, 1) * Matriz.ObtenerValor(1, 0) Return Positivos - Negativos Case 3 Positivos = (Matriz.ObtenerValor(0, 0) * Matriz.ObtenerValor(1, 1) * Matriz.ObtenerValor(2, 2)) + _ (Matriz.ObtenerValor(0, 1) * Matriz.ObtenerValor(1, 2) * Matriz.ObtenerValor(2, 0)) + _ (Matriz.ObtenerValor(1, 0) * Matriz.ObtenerValor(2, 1) * Matriz.ObtenerValor(0, 2)) Negativos = (Matriz.ObtenerValor(0, 2) * Matriz.ObtenerValor(1, 1) * Matriz.ObtenerValor(2, 0)) + _ (Matriz.ObtenerValor(0, 1) * Matriz.ObtenerValor(1, 0) * Matriz.ObtenerValor(2, 2)) + _ (Matriz.ObtenerValor(1, 2) * Matriz.ObtenerValor(2, 1) * Matriz.ObtenerValor(0, 0)) Return Positivos - Negativos Case Else Dim Retorno As Double = 0 For i As Integer = 0 To Matriz.Filas - 1 Retorno += (Adjunto(Matriz, i, 0) * Matriz.ObtenerValor(i, 0)) Next Return Retorno End Select Else Throw New ExcepcionMatrizNoCuadrada("MATRIZ (DETERMINANTE): Solo se puede obtener el determinante de matrices cuadradas." & vbNewLine _ & "Dimensiones de la matriz: " & Matriz.Filas & "x" & Matriz.Columnas) End If End Function
Bastante bien, pero me quita la tabulación...Ya le encontraré solución.
Código fuente completo en http://www.mediafire.com/file/d4pdlvrym4tq2n1/Motor3D%202.0.rar
No hay comentarios:
Publicar un comentario