Visual Basic - Ayuda con código de Cholesky

Life is soft - evento anual de software empresarial
 
Vista:
sin imagen de perfil

Ayuda con código de Cholesky

Publicado por Esteban (3 intervenciones) el 18/06/2018 17:21:37
Bueno, Quisiera saber si me podrían ayudar... Llevo 2 semanas tratando de hacer funcionar el código que miran en la imagen y la verdad no logro entender que es lo que falta, Quisiera saber si me podrían asesorar con lo que le falta al código para hacerlo funcionar... Les agradecería mucho si me ayudan, de antemano gracias.
Screenshot_20180618-084638
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
sin imagen de perfil

Ayuda con código de Cholesky

Publicado por Esteban (3 intervenciones) el 18/06/2018 21:17:35
Mela es la matriz donde tengo todos los datos del problema, ZR Donde quiero imprimir.. Asi lo tengo hasta ahora, el problema es que siempre me sale que esta fuera del intervalo y no encuentro la manera de solucionarlo

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
Private Sub Command1_Click()
n = Text1.Text
 
 
    If n > 1 Then
    Text1.SetFocus
    Mela1.Rows = n
    Mela1.Cols = n
    Else
    Mela1.Rows = 0
        If n <= 0 Then
        MsgBox ("Orden debe ser mayor a 2")
        End If
    End If
End Sub
 
Private Sub Command2_Click()
 
Dim k As Single
 
Dim A() As Double
 
    ReDim A(1 To n, 1 To n)
For i = 1 To n
    For j = 1 To n
    A(i, j) = Val(Mela1.TextMatrix(i - 1, j - 1))
    Next
Next
 
For k = 1 To n
    For i = 1 To k - 1
        suma = 0
            For j = 1 To i - 1
                suma = suma + A(i, j) * A(k, j)
            Next
        A(k, i) = (A(k, i) - suma) / A(i, i)
    Next
    suma = 0
        For j = 1 To k - 1
            suma = suma + A(k, j)
        Next
    A(k, k) = Sqr(A(k, k) - suma)
    Next
    Xi = A(k, k)
 
    For i = 1 To n
        ZR.Rows = n
        ZR.Cols = n
        ZR.TextMatrix(i - 1, 1) = Xi
 
    Next
 
End Sub
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
Imágen de perfil de Andres Leonardo
Val: 3.117
Oro
Ha mantenido su posición en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Ayuda con código de Cholesky

Publicado por Andres Leonardo (1798 intervenciones) el 18/06/2018 21:59:52
cuando sale fuera del intervalo es que un forsobrepasa los indices puedes hacer un seguimiento e indicar cual te aparece

adicional puedes poner un trac donde te diga cuanto vale cada letra al entrar a cada for


debug.print " K: " & k & " I: " & i & " J: " & j & " otro valor "

asi vas viendo como creden o decreden tus variaboles


Espero te sirva
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
sin imagen de perfil

Ayuda con código de Cholesky

Publicado por Esteban (3 intervenciones) el 18/06/2018 22:03:52
Si, De hecho de tanto estar con esto ya me habia dado cuenta de eso, lo que no logro entender es como hacer que funcione, Me explico.
Se que lo que estoy haciendo mal es el inicio, Pero no se como ponerlo, Ya intente de muchisimas maneras para que vaya leyendo valor por valor pero no logro hacer que eso suceda.

1
2
3
4
5
6
7
8
Dim A() As Double
 
ReDim A(1 To n, 1 To n)
For i = 1 To n
For j = 1 To n
A(i, j) = Val(Mela1.TextMatrix(i - 1, j - 1))
Next
Next

Eso es lo que se que traigo mal, Espero y me puedas ayudar.
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
Imágen de perfil de Andres Leonardo
Val: 3.117
Oro
Ha mantenido su posición en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Ayuda con código de Cholesky

Publicado por Andres Leonardo (1798 intervenciones) el 19/06/2018 16:21:55
Estoy al movil ahora pero me parece que no esta bien esto

ReDim A(1 To n, 1 To n)

cuando redimencionas una matriz por que le das un valor 1 a n

No deberia ser un valor fijo ?
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