Emil, this is the basic code. For the test, the Wait 0.01 were erased.Also the 
functions Addbanda(), DeBanda(), are just to locate the (row,col) element of 
the matrix in the array that contains it. That array cant be embedded as 
suggested because its size us unknown.

Public Function solucionarXgauss(x As Float[], ti As Float[], iOrden As 
Integer) As Integer
    ' OK GAMBAS ?
    
    Dim c1 As Float
    Dim i As Integer, j As Integer, a As Integer, b As Integer, ok As Integer
    Dim l As Integer, h As Integer, i1 As Integer, j1 As Integer
    Dim p1 As Float
    
    contador = 0
    If iOrden = 0 Then Return 0
    ok = True
    
    'usa el metodo de Gauss
    'debe ser cuadrada la matriz
    ' triangulacion
    For i = 0 To iOrden - 1
        Wait 0.001 'necesario para el ambiente
        If debanda(i, i) <> 0 Then
            For j = i + 1 To iOrden - 1
                If debanda(j, i) <> 0 Then
                    c1 = - debanda(j, i) / debanda(i, i)
                    For h = i To iOrden - 1
                        addbanda(j, h, c1 * debanda(i, h))
                        
                    Next
                    ti[j] = ti[j] + c1 * ti[i]
                End If
            Next
        Else
            Return
            l = i
            If i = iOrden - 1 Or l > iOrden - 1 Then Return 0 ' el sistema es 
incompatible
            
            Do
                If debanda(l, i) <> 0 Then
                    For h = 0 To iOrden - 1
                        addbanda(i, h, debanda(l, h))
                    Next
                    ti[i] = ti[i] + ti[l]
                    Exit
                Else
                    l = l + 1
                    If i = iOrden - 1 Or l > iOrden - 1 Then Return 0 ' el 
sistema es incompatible
                End If
            Loop
        End If
        
    Next
    ' sustitucion atrás
    
    x[iOrden - 1] = ti[iOrden - 1] / debanda(iOrden - 1, iOrden - 1)
    For i = iOrden - 2 To 0 Step -1
        Wait 0.001 'necesario para el ambiente
        p1 = 0
        For j = i + 1 To iOrden - 1
            p1 = p1 - x[j] * debanda(i, j)
            
        Next
        p1 = ti[i] + p1
        x[i] = p1 / debanda(i, i)
    Next
    Return ok
    
End Function


Ing Martin Cristia
------------------------------------------------------------------------------
WatchGuard Dimension instantly turns raw network data into actionable 
security intelligence. It gives you real-time visual feedback on key
security issues and trends.  Skip the complicated setup - simply import
a virtual appliance and go from zero to informed in seconds.
http://pubads.g.doubleclick.net/gampad/clk?id=123612991&iu=/4140/ostg.clktrk
_______________________________________________
Gambas-user mailing list
Gambas-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/gambas-user

Reply via email to