MAS PROBLEMAS CON MATRICES...

maya
08 de Enero del 2004
despues de haber hecho varios cambios en las variables parecia que todo iba bien y me calculaba las matrices, pero al probar otra vez el programa, me da error de "fuera de intervalo" el codigo siguiente:

Private Sub dcalc_Click()

n = Text1.Text


' Calculo de la matriz A (2*NUM PUNTOS x 4)
' ----------------------
' X1 Y1 1 0
' Y1 -X1 0 1
' X2 Y2 1 0
' Y2 -X2 0 1
' .. .. .. ..
' Xn Yn 1 0
' Yn -Xn 0 1


ReDim matA_dch(0 To (2 * n - 2), 0 To (2 * n - 2), 0 To (2 * n - 2), 0 To (2 * n - 2)) ' redimensionamos las matrices
ReDim solucion1(0 To (2 * n - 2), 0 To (2 * n - 2), 0 To (2 * n - 2), 0 To (2 * n - 2)) ' redimensionamos las matrices

contador = 0 'calculamos la matriz A

For fila = 0 To (2 * n - 2) Step 2

matA_dch(fila, 0) = CDbl(Text2(contador).Text)
matA_dch(fila, 1) = CDbl(Text3(contador).Text)
matA_dch(fila, 2) = 1
matA_dch(fila, 3) = 0

matA_dch(fila + 1, 0) = CDbl(Text3(contador).Text)
matA_dch(fila + 1, 1) = -CDbl(Text2(contador).Text)
matA_dch(fila + 1, 2) = 0
matA_dch(fila + 1, 3) = 1

contador = contador + 1

Next

solucion1() = matA_dch()

' Calculo de la matriz Atraspuesta (4 x 2*NUM PUNTOS )
' ----------------------
' X1 Y1 X2 Y2 .. Xn Yn
' Y1 -X1 Y2 -X2 .. Yn Xn
' 1 0 1 0 .. 1 0
' 0 1 0 1 .. 0 1





' calculo de la matriz de terminos independientes L ( 2*NUM PUNTOS x 1)
' ---------------------------------------------
' X1
' Y1
' X2
' Y2
' ..
' Xn
' Yn


ReDim matL_dch(0 To (2 * n - 2)) ' redimensionamos las matrices
ReDim solucion3(0 To (2 * n - 2))

contador = 0 'calculamos la matriz L

For fila = 0 To (2 * n - 2) Step 2

matL_dch(fila) = CDbl(Text4(contador).Text)

matL_dch(fila + 1) = CDbl(Text5(contador).Text)

contador = contador + 1

Next

solucion3() = matL_dch()


' impresion del formulario donde se visualizaran las matrices importantes y continua el calculo
' -------------------------------------------------------------------------

Form6.Show

fila = 0

Form6.Text1.Text = solucion1(fila) & vbCrLf

Form6.Text2.Text = solucion3(fila) & vbCrLf

For fila = 1 To (2 * n - 2)

Form6.Text1.Text = Form6.Text1.Text & solucion1(fila) & vbCrLf

Form6.Text2.Text = Form6.Text1.Text & solucion3(fila) & vbCrLf

Next

End Sub


el error me lo da en la linea::

matA_dch(fila, 0) = CDbl(Text2(contador).Text)

asi que como no continua el programa, no se si el resto lo hace bien, aunque me temo que con la otra matriz tendre el mismo problema.

como puedo solucionarlo??

Gracias otra vez

Salu2

maya
08 de Enero del 2004
Para ir por partes, aqui pongo el codigo primero que me da error:


n = CDbl(Text1.Text)


' calculo de la matriz de terminos independientes L ( 2*NUM PUNTOS x 1)
' ---------------------------------------------
' X1
' Y1
' X2
' Y2
' ..
' Xn
' Yn


ReDim matL_dch(0 To (2 * n - 2)) ' redimensionamos las matrices
ReDim solucion1(0 To (2 * n - 2))

contador = 0 'calculamos la matriz L

For fila = 0 To (2 * n - 1) Step 2

matL_dch(fila) = CDbl(Text4(contador).Text)

matL_dch(fila + 1) = CDbl(Text5(contador).Text)

contador = contador + 1

Next

solucion1 = matL_dch()

lo he probado por ejemplo para n=5 y me dice que

matL_dch(fila + 1) = CDbl(Text5(contador).Text)

esta fuera del intervalo en la fila 8 contador 4.

por favor, si alguien me puede ayudar. estoy bloqueada y no puedo continuar hasta que arregle este fallo

gracias

salu2

Jose Oscar
08 de Enero del 2004

Perdona maestro, pero puedes explicar, sin codigo y con palabras, que quieres hacer. Pues por mas que intento no logro entender que intentas hacer. Desde ya creo que la linea que te debe dar error es la siguiente

matL_dch(fila) = CDbl(Text4(contador).Text)

matL_dch(fila + 1) = CDbl(Text5(contador).Text)


por lo que se aprecia, tienes una matriz de TEXT

Explicanos y veremos como te ayudamos

Un Saludo
Jose Oscar

maya
08 de Enero del 2004
vueno, vamos aya... intentare explicar lo mejor que pueda de que va esto:

haber: Resulta que yo tengo una serie de datos numericos que he introducido en una serie de textbox.

para poder calcular una serie de matrices matematicas, una de las matrices sera la matL_dch() que contendra los valores de esos textbox

como el numero de puntos puede variar por eso es n = numero de puntos

ademas por cada punto tengo 2 coordenadas (x,y) que son precisamente las que se escriben en los textbox

lo que pretendo es que los valores del textbox formen la matriz matL_dch() para poder luego multiplicarla con otra que se consigue de la misma forma.

Espero que esto os aclare un poquito lo que quiero conseguir..... si no es asi preguntarme :))

Gracias

salu2