Visual Basic.NET - Cargar DataGridView similar a Excel

 
Vista:
Imágen de perfil de Andrés
Val: 48
Ha aumentado 1 puesto en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Cargar DataGridView similar a Excel

Publicado por Andrés (27 intervenciones) el 07/11/2018 18:34:37
Buenas tardes amigos, me encuentro intentando pasar una tabla de Excel a un DataGridView, es decir hacer los mismos cálculos que hago en excel pero en este caso pasarlos a VB.Net mediante un DataGridView.

Específicamente lo que se hace es calcular una ecuación diferencial mediante el método de Runge Kutta. Llevo una parte del código pero inicialmente los datos de la primera fila del DataGridView, no me coinciden con los datos de la primera del Excel. No se si por algo que esta mal en la declaración del tipo de datos en alguna de las variables (Creería que es la de "pasoh").

La variable pasoh debe aceptar enteros y decimales. Por eso la declare de tipo Double. No se si estoy bien en esto...

Aqui les muestro lo que se hace en el excel...


RK1

El código que llevo es este...

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
Public Class RungeKutta
 
    Private Sub RungeKutta_Load(sender As Object, e As EventArgs) Handles MyBase.Load
 
        Dim pasoh, valorX, valorY, valorZ, NIteracciones, n As Double
 
        pasoh = Double.Parse(InputBox("Digite el valor del paso 'h': ", "Método de  Runge Kutta", "Valor de 'h'", 100, 100))
        NIteracciones = Integer.Parse(InputBox("Digite el numero de iteracciones para el programa:", "Método de  Runge Kutta", "Valor de 'N Iteracciones'", 100, 100))
        valorX = Integer.Parse(InputBox("Digite la condición inicial de x: ", "Método de  Runge Kutta", "Valor de 'x'", 100, 100))
        valorY = Integer.Parse(InputBox("Digite la condición inicial de y: ", "Método de  Runge Kutta", "Valor de 'y'", 100, 100))
        valorZ = Integer.Parse(InputBox("Digite la condición inicial de z: ", "Método de  Runge Kutta", "Valor de 'z'", 100, 100))
 
        Dim tabla As New List(Of Fila)
        Dim r As New Random
 
        For i As Integer = 1 To NIteracciones
            Dim fila As New Fila
 
            fila.n = i
            fila.X = valorX
            fila.Y = valorY
            fila.Z = valorZ
 
            'Función a calcular = dy/dx (x*y) ; dz/dx (y)
 
            'Para KY1 & KZ1
            fila.KY1 = fila.X * fila.Y
            fila.KZ1 = fila.Y
 
            'Para KY2 & KZ2
            fila.KY2 = (fila.X + pasoh / 2) * (fila.Y + pasoh / 2 * fila.KY1)
            fila.KZ2 = (fila.Y + pasoh / 2 * fila.KY1)
 
            'Para KY3 & KZ3
            fila.KY3 = (fila.X + pasoh / 2) * (fila.Y + pasoh / 2 * fila.KY2)
            fila.KZ3 = (fila.Y + pasoh / 2 * fila.KY2)
 
            'Para KY4 & KZ4
            fila.KY4 = (fila.X + pasoh) * (fila.Y + pasoh * fila.KY3)
            fila.KZ4 = (fila.Y + pasoh * fila.KY3)
 
            'Para Y1 & Z1
            fila.Y1 = fila.Y + pasoh * (fila.KY1 + 2 * fila.KY2 + 2 * fila.KY3 + fila.KY4) / 6
            fila.Z1 = fila.Z + pasoh * (fila.KZ1 + 2 * fila.KZ2 + 2 * fila.KZ3 + fila.KZ4) / 6
 
            tabla.Add(fila)
        Next
 
        'DataGridView1.Columns(0).Width = 100
        'DataGridView1.Columns(1).Width = 100
 
        DataGridView1.DataSource = tabla
        DataGridView1.Columns("X").DefaultCellStyle.Format = "N4"
        DataGridView1.Columns("Y").DefaultCellStyle.Format = "N4"
        DataGridView1.Columns("Z").DefaultCellStyle.Format = "N4"
        DataGridView1.Columns("KY1").DefaultCellStyle.Format = "N4"
        DataGridView1.Columns("KY1").HeaderText = "KY1"
        DataGridView1.Columns("KZ1").DefaultCellStyle.Format = "N4"
        DataGridView1.Columns("KZ1").HeaderText = "KZ1"
        DataGridView1.Columns("KY2").DefaultCellStyle.Format = "N4"
        DataGridView1.Columns("KY2").HeaderText = "KY2"
        DataGridView1.Columns("KZ2").DefaultCellStyle.Format = "N4"
        DataGridView1.Columns("KZ2").HeaderText = "KZ2"
        DataGridView1.Columns("KY3").DefaultCellStyle.Format = "N4"
        DataGridView1.Columns("KY3").HeaderText = "KY3"
        DataGridView1.Columns("KZ3").DefaultCellStyle.Format = "N4"
        DataGridView1.Columns("KZ3").HeaderText = "KZ3"
        DataGridView1.Columns("KY4").DefaultCellStyle.Format = "N4"
        DataGridView1.Columns("KY4").HeaderText = "KY4"
        DataGridView1.Columns("KZ4").DefaultCellStyle.Format = "N4"
        DataGridView1.Columns("KZ4").HeaderText = "KZ4"
        DataGridView1.Columns("Y1").DefaultCellStyle.Format = "N4"
        DataGridView1.Columns("Y1").HeaderText = "Y1"
        DataGridView1.Columns("Z1").DefaultCellStyle.Format = "N4"
        DataGridView1.Columns("Z1").HeaderText = "Z1"
 
    End Sub
 
End Class
 
Class Fila
    Public Property n() As Integer
    Public Property X() As Double
    Public Property Y() As Double
    Public Property Z() As Double
    Public Property KY1() As Double
    Public Property KZ1() As Double
    Public Property KY2() As Double
    Public Property KZ2() As Double
    Public Property KY3() As Double
    Public Property KZ3() As Double
    Public Property KY4() As Double
    Public Property KZ4() As Double
    Public Property Y1() As Double
    Public Property Z1() As Double
End Class

Esto es lo que me da en la salida, teniendo en cuenta las condiciones iniciales que el usuario ingrese por teclado (pasoh, valorX, valorY, valorZ)...


RK3

En este caso el programa deberá seguir haciendo el calculo dependiendo de N Iteracciones...

En la segunda fila el valor de la columna X debe ser igual al valor anterior de X + el pasoh y así sucesivamente.

En la segunda fila el valor de la columna Y debe ser igual al valor anterior de Y1 y así sucesivamente.

En la segunda fila el valor de la columna Z debe ser igual al valor anterior de Z1 y así sucesivamente.

-------------------------------------------------------------------------------------------------------------------------------

Los cálculos que hago en las columnas KY1, KZ1, KY2, KZ2, KY3, KZ3, KY4, KZ4, Y1, Z1, corresponde a las formulas del Método de Runge Kutta.

Para hacer los cálculos N Iteracciones utilizo un ciclo For, pero pues quisiera que me ayudaran en por que no me da lo mismo que el Excel en la primera fila del DataGridView y pues de igual manera en pasar los datos de Y1 y Z1 a Y & Y respectivamente y así poder calcular N Iteracciones con el ciclo For...

Espero me puedan ayudar y Como siempre gracias por todo!!!
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