Monografias.com > Sin categoría
Descargar Imprimir Comentar Ver trabajos relacionados

Métodos de integración numérica en Visual Basic 2005 (página 4)




Enviado por jaimemontoya



Partes: 1, 2, 3, 4, 5, 6

               
celda(1, 1) = Val(TextBox2.Text) 'Almacena el
valor del
límite de integración "a" ("Xi-1" para el primer
Intervalo).

               
celda(1, 2) = Val(celda(1, 1)) + Val(TextBox5.Text) 'Almacena la suma de "Xi-1" más "delta x", lo cual
da el valor de "Xi".

               
celda(1, 3) = (Val(celda(1, 1)) + celda(1, 2)) / 2 'Almacena ("Xi-1"+"Xi")/2, lo cual es el valor del punto
medio del intervalo, es decir "PMi".

               
celda(1, 4) = mEval.Evaluar(Val(celda(1, 3))) 'Almacena la función
evaluada en el punto medio "PMi", es decir "f(PMi)".

               
celda(1, 5) = Val(TextBox5.Text) * Val(celda(1, 4)) 'Almacena la multiplicación de la base por la
altura de la porción de área tomada, que
sería "delta x" por "f(PMi)", lo cual es "Ai".

               
'Valores para
la segunda iteración en adelante.

               
For ciclo As
Integer = 2 To Val(TextBox4.Text)  'Si
"n" vale 5, las iteraciones van desde 2 hasta
5.

                   
celda(ciclo, 0) = Val(celda(ciclo – 1, 0)) + 1 'Almacena el intervalo para la iteración "ciclo",
que es el intervalo de la iteración anterior más
1.

                   
celda(ciclo, 1) = Val(celda(ciclo – 1, 2)) 'Almacena el valor de "Xi" del intervalo
anterior.

                   
celda(ciclo, 2) = Val(celda(ciclo, 1)) + Val(TextBox5.Text)
'Almacena la suma de "Xi-1" más "delta
x", lo cual da el valor de "Xi".

                   
celda(ciclo, 3) = (Val(celda(ciclo, 1)) + celda(ciclo, 2)) / 2
'Almacena ("Xi-1"+"Xi")/2, lo cual es el
valor del punto medio del intervalo, es decir "PMi".

                   
celda(ciclo, 4) = mEval.Evaluar(Val(celda(ciclo, 3)))
'Almacena la función evaluada en el
punto medio "PMi", es decir "f(PMi)".

                   
celda(ciclo, 5) = Val(TextBox5.Text) * Val(celda(ciclo, 4))
'Almacena la multiplicación de la base
por la altura de la porción de área tomada, que
sería "delta x" por "f(PMi)", lo cual es "Ai".

               
Next ciclo

               
'Obtener valor de la integral, que es la
sumatoria de todas las "Ai".

               
Dim integral As
Double = 0 'Se
declara la variable que contendrá el valor de la sumatoria
de todas las "Ai", es decir el valor de la
integral.

               
For ciclo As
Integer = 1 To (Val(TextBox4.Text)) 'Si "n"
vale 5, las iteraciones van desde 1 hasta 5.

                   
integral += celda(ciclo, 5) 'Equivale a
escribir "integral = integral + celda(ciclo, 5). Suma los valores de
todas las "Ai", desde el Intervalo 1 hasta el último
Intervalo.

               
Next ciclo

         
      celda(Val(TextBox4.Text) + 1,
5) = integral 'Almacena el valor de la
integral en la celda correspondiente.

               
'Para indicar que se realizarán
operaciones
con el objeto AxMSFlexGrid1

               
'sin necesidad de escribir su
nombre.

               
'De aquí en adelante vienen las
impresiones de los valores en las celdas
correspondientes.

               
AxMSFlexGrid1.ForeColor = Color.Blue
'Cambia el color de letra de todas las celdas
a azul.

               
With AxMSFlexGrid1 'Para
no estar poniendo por ejemplo AxMSFlexGrid1.set_ColWidth(0, 0) y
así sucesivamente, no estar repitiendo a cada rato
"AxMSFlexGrid1." NOTA: Desde el "With" hasta el "End With"
solamente deben estarse mandando a imprimir valores a cada una de
las celdas, y no estar haciendo cálculos con condiciones
If ni nada de eso dentro del "With", pues todos los
cálculos y condiciones deben hacerse afuera y venir a esta
sección del "With" única y exclusivamente a hacer
impresiones.

                   
'Esto servirá para poner color azul a
la letra de las celdas donde se muestran los resultados y hacer
más grande el ancho de las columnas donde aparecen las
celdas de los resultados, pues se estará trabajando con 10
decimales. Nótese que no se involucra la primera fila ni
la primera columna debido a que se programan los For comenzando
desde 1 y no desde 0.

                   
For fila As
Integer = 1 To .Rows – 1 'Para no
involucrar la primera fila, se comienza de 1 y no de
0.

                       
With AxMSFlexGrid1

        
                   .Row
= fila

                           
For columna As Integer = 1
To .Cols – 1 'Para
no involucrar la primera columna, se comienza de 1 y no de
0.

                               
.Col = columna

                               
.CellForeColor = Color.Blue 'Por estar dentro
del For, cambia el color de letra de todas las celdas a azul
(excepto la primera fila y la primera
columna).                 

                               
.set_ColWidth(columna, 1300) 'Por estar
deltro del For, le da un ancho de 1300 a cada columna (excepto a
la primera columna).

                           
Next

                       
End With

                   
Next

                   
'Establece la alineación del contenido
de la columna 0

                   
.set_ColAlignment(0,
MSFlexGridLib.AlignmentSettings.flexAlignCenterCenter)

                   
'Se le ponen los respectivos títulos a
cada columna.

                   
.set_TextMatrix(0, 0, "Intervalo")

                   
.set_TextMatrix(0, 1, "Xi-1")

      
             .set_TextMatrix(0,
2, "Xi")

                   
.set_TextMatrix(0, 3, "PMi")

                   
.set_TextMatrix(0, 4, "f(PMi)")

                   
.set_TextMatrix(0, 5, "Ai")

                   
'(Nótese que las impresiones se hacen
con 8 posiciones decimales).

                   
'Impresiones para primera
iteración.

                   
.set_TextMatrix(1, 0, Math.Round(Val(celda(1, 0)), 8))
'Imprime el número "1"
refiriéndose valor del intervalo.

                   
.set_TextMatrix(1, 1, Math.Round(Val(celda(1, 1)), 8))
'Imprime el valor del límite de
integración "a" ("Xi-1" para el primer
Intervalo).

                   
.set_TextMatrix(1, 2, Math.Round(Val(celda(1, 2)), 8))
'Imprime la suma de "Xi-1" más "delta
x", lo cual da el valor de "Xi".

                   
.set_TextMatrix(1, 3, Math.Round(Val(celda(1, 3)), 8))
'Imprime ("Xi-1"+"Xi")/2, lo cual es el valor
del punto medio del intervalo, es decir "PMi".

                   
.set_TextMatrix(1, 4, Math.Round(Val(celda(1, 4)), 8))
'Imprime la función evaluada en el
punto medio "PMi", es decir "f(PMi)".

                   
.set_TextMatrix(1, 5, Math.Round(Val(celda(1, 5)), 8))
'Imprime la multiplicación de la base
por la altura de la porción de área tomada, que es
"delta x" por "f(PMi)", lo cual es "Ai".

                   
'Impresiones para la segunda iteración
en adelante.

                   
For ciclo As
Integer = 2 To Val(TextBox4.Text)  'Si
"n" vale 5, las iteraciones van desde 2 hasta 5.

                       
.set_TextMatrix(ciclo, 0, Math.Round(Val(celda(ciclo, 0)), 8))
'Imprime el intervalo para la
iteración "ciclo", que es el intervalo de la
iteración anterior más 1.

                       
.set_TextMatrix(ciclo, 1, Math.Round(Val(celda(ciclo, 1)), 8))
'Imprime el valor de "Xi" del intervalo
anterior. límite de integración "a" ("Xi-1" para el
primer Intervalo).

                       
.set_TextMatrix(ciclo, 2, Math.Round(Val(celda(ciclo, 2)), 8))
'Imprime la suma de "Xi-1" más "delta
x", lo cual da el valor de "Xi".

                   
    .set_TextMatrix(ciclo, 3,
Math.Round(Val(celda(ciclo, 3)), 8)) 'Imprime
("Xi-1"+"Xi")/2, lo cual es el valor del punto medio del
intervalo, es decir "PMi".

                       
.set_TextMatrix(ciclo, 4, Math.Round(Val(celda(ciclo, 4)), 8))
'Imprime la función evaluada en el
punto medio "PMi", es decir "f(PMi)".

                       
.set_TextMatrix(ciclo, 5, Math.Round(Val(celda(ciclo, 5)), 8))
'Imprime la multiplicación de la base
por la altura de la porción de área tomada, que es
"delta x" por "f(PMi)", lo cual es "Ai".

                   
Next

                   
.set_TextMatrix(Val(TextBox4.Text) + 1, 5,
Math.Round(Val(celda(Val(TextBox4.Text) + 1, 5)), 8))
'Imprime el valor de la integral en la celda
correspondiente.

               
End With

               
TextBox6.Text = integral 'Imprime la
respuesta de la integral de la función
introducida.

           
End If

        End If

    End Sub

    Private Sub Button4_Click(ByVal
sender As System.Object, ByVal e As
System.EventArgs) Handles
Button4.Click

        End 'Salir del programa
(cerrarlo).

    End Sub

    Private Sub TextBox2_KeyPress(ByVal sender As
Object, ByVal
e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox2.KeyPress

        Dim contadorpuntos As
Integer

        Dim contadormenos As
Integer

        Dim contadorplecas As
Integer

        Dim longitudcadena As
Integer = Len(TextBox2.Text)
'Variable para almacenar la longitud de la
cadena que hay en un Textbox.

        Dim caracterevaluado As
String 'Para
evaluar caracter por caracter con el Mid().

        For ciclo As Integer = 1 To
longitudcadena 'Para evaluar caracter por
caracter hasta encontrar una "/".

           
caracterevaluado = Mid(TextBox2.Text, ciclo, 1)

           
If caracterevaluado = "." Then

               
contadorpuntos = contadorpuntos + 1

           
End If

        Next

        For ciclo As Integer = 1 To
longitudcadena 'Para evaluar caracter por
caracter hasta encontrar una "/".

           
caracterevaluado = Mid(TextBox2.Text, ciclo, 1)

           
If caracterevaluado = "-" Then

               
contadormenos = contadormenos + 1

           
End If

        Next

        For ciclo As Integer = 1 To
longitudcadena 'Para evaluar caracter por
caracter hasta encontrar una "/".

           
caracterevaluado = Mid(TextBox2.Text, ciclo, 1)

           
If caracterevaluado = "/" Then

               
contadorplecas = contadorplecas + 1

           
End If

        Next

        If (Asc(e.KeyChar) >= 47 And
Asc(e.KeyChar) <= 57) Or
Asc(e.KeyChar) = 46 Or Asc(e.KeyChar) =
8 Or Asc(e.KeyChar) = 45 Then 'Los únicos
caracteres que se permitirá introducir en el TextBox
serán la placa ("/") y los números del 0 al 9
(ASCII del 47 al
57); el punto ("."); el signo menos ("-"), que es el ASCII 45; y
el retroceso de espacio o backspace para borrar texto
introducido, que es el ASCII 8.

           
If (Asc(e.KeyChar) = 46) Then 'Si se presione la tecla
del punto (".").

               
If (contadorpuntos > 0) Then 'Cuando se pretenda
introducir un segundo punto.

                   
'Beep() 'Emite sonido cuando se
presiona una tecla que no está permitida o que es
inválida.

                   
e.KeyChar = "" 'Reemplaza la tecla digitada con el valor de nada para
que no se puedan introducir caracteres
inválidos.

               
End If

           
End If

           
If (Asc(e.KeyChar) = 45) Then 'Si se presione la tecla
del signo menos ("-").

               
If (contadormenos > 0) Then 'Cuando se pretenda
introducir un segundo signo menos.

                   
'Beep() 'Emite sonido cuando se presiona una
tecla que no está permitida o que es
inválida.

                   
e.KeyChar = "" 'Reemplaza la tecla digitada con el valor de nada para
que no se puedan introducir caracteres
inválidos.

               
End If

           
End If

           
If (Asc(e.KeyChar) = 47) Then 'Si se presione la tecla
de la pleca ("/").

               
If (contadorplecas > 0) Then 'Cuando se pretenda
introducir una segunda pleca.

                   
'Beep() 'Emite sonido cuando se presiona una
tecla que no está permitida o que es
inválida.

                   
e.KeyChar = "" 'Reemplaza la tecla digitada con el valor de nada para
que no se puedan introducir caracteres
inválidos.

               
End If

           
End If

        Else

           
'Beep() 'Emite sonido cuando se presiona una
tecla que no está permitida o que es
inválida.

           
e.KeyChar = "" 'Reemplaza la tecla digitada con el valor de nada para
que no se puedan introducir caracteres
inválidos.

        End If

    End Sub

    Private Sub TextBox3_KeyPress(ByVal sender As
Object, ByVal
e As
System.Windows.Forms.KeyPressEventArgs) Handles TextBox3.KeyPress

        Dim contadorpuntos As
Integer

        Dim contadormenos As
Integer

        Dim contadorplecas As
Integer

        Dim longitudcadena As
Integer = Len(TextBox3.Text)
'Variable para almacenar la longitud de la
cadena que hay en un Textbox.

        Dim caracterevaluado As
String 'Para
evaluar caracter por caracter con el Mid().

        For ciclo As Integer = 1 To
longitudcadena 'Para evaluar caracter por
caracter hasta encontrar una "/".

           
caracterevaluado = Mid(TextBox3.Text, ciclo, 1)

           
If caracterevaluado = "." Then

               
contadorpuntos = contadorpuntos + 1

           
End If

        Next

        For ciclo As Integer = 1 To
longitudcadena 'Para evaluar caracter por
caracter hasta encontrar una "/".

           
caracterevaluado = Mid(TextBox3.Text, ciclo, 1)

           
If caracterevaluado = "-" Then

               
contadormenos = contadormenos + 1

           
End If

        Next

        For ciclo As Integer = 1 To
longitudcadena 'Para evaluar caracter por
caracter hasta encontrar una "/".

           
caracterevaluado = Mid(TextBox3.Text, ciclo, 1)

           
If caracterevaluado = "/" Then

               
contadorplecas = contadorplecas + 1

           
End If

        Next

        If (Asc(e.KeyChar) >= 47 And
Asc(e.KeyChar) <= 57) Or
Asc(e.KeyChar) = 46 Or Asc(e.KeyChar) =
8 Or Asc(e.KeyChar) = 45 Then 'Los únicos
caracteres que se permitirá introducir en el TextBox
serán la placa ("/") y los números del 0 al 9
(ASCII del 47 al 57); el punto ("."); el signo menos ("-"), que
es el ASCII 45; y el retroceso de espacio o backspace para borrar
texto introducido, que es el ASCII 8.

           
If (Asc(e.KeyChar) = 46) Then 'Si se presione la tecla
del punto (".").

               
If (contadorpuntos > 0) Then 'Cuando se pretenda
introducir un segundo punto.

                   
'Beep() 'Emite sonido cuando se presiona una
tecla que no está permitida o que es
inválida.

                   
e.KeyChar = "" 'Reemplaza la tecla digitada con el valor de nada para
que no se puedan introducir caracteres
inválidos.

               
End If

           
End If

           
If (Asc(e.KeyChar) = 45) Then 'Si se presione la tecla
del signo menos ("-").

       
        If (contadormenos > 0) Then
'Cuando se pretenda introducir un segundo
signo menos.

                   
'Beep() 'Emite sonido cuando se presiona una
tecla que no está permitida o que es
inválida.

                   
e.KeyChar = "" 'Reemplaza la tecla digitada con el valor de nada para
que no se puedan introducir caracteres
inválidos.

               
End If

           
End If

           
If (Asc(e.KeyChar) = 47) Then 'Si se presione la tecla
de la pleca ("/").

               
If (contadorplecas > 0) Then 'Cuando se pretenda
introducir una segunda pleca.

                   
'Beep() 'Emite sonido cuando se presiona una
tecla que no está permitida o que es
inválida.

                   
e.KeyChar = "" 'Reemplaza la tecla digitada con el valor de nada para
que no se puedan introducir caracteres
inválidos.

               
End If

           
End If

        Else

           
'Beep() 'Emite sonido cuando se presiona una
tecla que no está permitida o que es
inválida.

           
e.KeyChar = "" 'Reemplaza la tecla digitada con el valor de nada para
que no se puedan introducir caracteres
inválidos.

        End If

    End Sub

    Private Sub TextBox4_KeyPress(ByVal sender As
Object, ByVal
e As
System.Windows.Forms.KeyPressEventArgs) Handles TextBox4.KeyPress

        If (Asc(e.KeyChar) >= 48 And Asc(e.KeyChar) <= 57) Or (Asc(e.KeyChar) = 8) Then 'Los únicos
caracteres que se permitirá introducir en el TextBox
serán los números del 0 al 9 (ASCII del 48 al 57) y
el Backspace (ASCII 8).

           
'No se hace nada porque el caracter
presionado es válido.

        Else

           
'Beep() 'Emite sonido cuando se presiona una
tecla que no está permitida o que es
inválida.

           
e.KeyChar = "" 'Reemplaza la tecla digitada con el valor de nada para
que no se puedan introducir caracteres
inválidos.

        End If

    End Sub

End Class

 

simpsontresoctavos.vb

Imports System.Text

Imports System.CodeDom.Compiler

Imports
System.Collections.Specialized 'Sin esto no
funcionaría ninguna instanciación o variable
declarada "As New StringCollection()"

Public Class simpsontresoctavos

    Public celda(24, 9)
As String
'Se declara un máximo de 25 filas y 10
columnas (pues se comienza a contar desde la posición
0).

    Private
Sub Button1_Click(ByVal sender As
System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Me.Hide()

        Form1.Show()

    End Sub

    Private Sub Button3_Click(ByVal
sender As System.Object, ByVal e As
System.EventArgs) Handles
Button3.Click

        'Se limpian los valores de los TextBox.

        TextBox1.Text =
""

        TextBox2.Text =
""

        TextBox3.Text =
""

        TextBox4.Text =
""

        TextBox5.Text =
""

       
AxMSFlexGrid1.Clear() 'Limpiar todas las
celdas del FlexGrid para que no queden impresos resultados de
procesos
anteriores.

        AxMSFlexGrid1.Rows
= 2 'Establece 2 filas.

        AxMSFlexGrid1.Cols
= 2 'Establece 2 columnas.

    End Sub

    Private Sub Button4_Click(ByVal
sender As System.Object, ByVal e As
System.EventArgs) Handles
Button4.Click

        End 'Salir del programa
(cerrarlo).

    End Sub

    Private Sub Button2_Click(ByVal
sender As System.Object, ByVal e As
System.EventArgs) Handles
Button2.Click

        If (TextBox3.Text <= TextBox2.Text) Or (TextBox4.Text < 0) Then 'Si "b" es menor o igual
que "a" o si "n" es menor que cero entonces se mandará el
mensaje de error correspondiente. De lo contrario se
ejecutará el programa.

           
MsgBox("'b' debe ser mayor que 'a' y 'n'
debe ser mayor que cero.", , "Integración por Sumas de Riemman")

        Else

   
        Dim i, j As Integer '"i" significará
"fila" y "j" significará columna, de modo que se
trabajará con (i,j)=(fila,columna)

           
'Establece cuántas filas y columnas
tendrá el Grid.

           
AxMSFlexGrid1.Rows = 25 'Establece 25
filas.

     
      AxMSFlexGrid1.Cols = 10
'Establece 10 columnas.

           
'Se crea una nueva instancia de la clase
Evaluador.

           
Dim mEval As
New Evaluador()

           
'Se crea una variable tipo string y se le
asigna la expresión que se quiere evaluar.

           
Dim mExpresion As String = TextBox1.Text
' = "X".

           
'Se crea un objeto StringCollection y se le
agregan los parámetros de entrada que usará el
método
eval.

           
Dim mParameters As New
StringCollection()

           
mParameters.Add("ByVal X as
Double")

           
'Las funciones a
utilizar pertenece al espacio de nombres System.Math.

           
'se hace necesario entonces, crear un objeto
StringCollection y agregar

           
'el namespace System.Math.

           
Dim mNameSpaces As
New StringCollection()

           
mNameSpaces.Add("System.Math")

           
'Se invoca el método
PrecompilarFunción y se verifica si se generó
correctamente el assembly.

           
If
mEval.PrecompilarAssembly(mExpresion, mParameters, mNameSpaces)
Then

               
'Si el assembly se generó
correctamente, se crea un array con los valores de los parametros
a evaluar.

               
'Se invoca el método Evaluar y se
asignan los resultados correspondientes.

               
'Se limpian todas las celdas para que no
queden impresos resultados de procesos anteriores.

               
AxMSFlexGrid1.Clear()

               
'Se comienzan a hacer los
cálculos.

               
'Valores para la primera
iteración.

               
TextBox5.Text = (Val(TextBox3.Text) – Val(TextBox2.Text)) /
Val(TextBox4.Text) 'Almacena "delta x", que
es "(b-a)/n".

               
celda(1, 0) = 1 'Almacena el número
"1" refiriéndose valor del intervalo.

               
celda(1, 1) = Val(TextBox2.Text) 'Almacena el
valor del límite de integración "a" ("ai" para el
primer intervalo).

               
celda(1, 2) = Val(TextBox2.Text) + (Val(TextBox5.Text) / 3)
'Almacena ("Xi-1"+("delta x"/3)) ("bi" para
el primer intervalo).

               
celda(1, 3) = Val(TextBox2.Text) + (2 * Val(TextBox5.Text) / 3)
'Almacena ("Xi-1"+(2*"delta x"/3)) ("ci" para
el primer intervalo).

               
celda(1, 4) = Val(TextBox2.Text) + Val(TextBox5.Text)
'Almacena "Xi-1" + "delta x" ("di" para el
primer intervalo).

               
celda(1, 5) = mEval.Evaluar(Val(celda(1, 1))) 'Almacena la función evaluada en el punto "ai"
("f(ai)" para el primer intervalo).

               
celda(1, 6) = mEval.Evaluar(Val(celda(1, 2))) 'Almacena la función evaluada en el punto "bi"
("f(bi)" para el primer intervalo).

  
             celda(1,
7) = mEval.Evaluar(Val(celda(1, 3))) 'Almacena la función evaluada en el punto "ci"
("f(ci)" para el primer intervalo).

               
celda(1, 8) = mEval.Evaluar(Val(celda(1, 4))) 'Almacena la función evaluada en el punto "di"
("f(di)" para el primer intervalo).

               
celda(1, 9) = (Val(celda(1, 5) + 3 * Val(celda(1, 6)) + 3 *
Val(celda(1, 7)) + Val(celda(1, 8)))) * (Val(TextBox5.Text) / 8)
'Almacena
("f(ai)"+"3f(bi)"+"3f(bi)"+"f(di)")*("delta x"/8) ("Ai" para el
primer intervalo).

               
'Valores para la segunda iteración en
adelante.

               
For ciclo As
Integer = 2 To Val(TextBox4.Text)  'Si
"n" vale 5, las iteraciones van desde 2 hasta
5.

                   
celda(ciclo, 0) = Val(celda(ciclo – 1, 0)) + 1 'Almacena el intervalo para la iteración "ciclo",
que es el intervalo de la iteración anterior más
1.

                   
celda(ciclo, 1) = Val(celda(ciclo – 1, 4)) 'Almacena el valor del límite de
integración "a" ("ai" para el intervalo
"ciclo").

      
             celda(ciclo,
2) = Val(celda(ciclo – 1, 4)) + (Val(TextBox5.Text) / 3)
'Almacena ("Xi-1"+("delta x"/3)) ("bi" para
el intervalo "ciclo").

                   
celda(ciclo, 3) = Val(celda(ciclo – 1, 4)) + (2 *
Val(TextBox5.Text) / 3) 'Almacena
("Xi-1"+(2*"delta x"/3)) ("ci" para el intervalo
"ciclo").

                   
celda(ciclo, 4) = Val(celda(ciclo – 1, 4)) + Val(TextBox5.Text)
'Almacena "Xi-1" + "delta x" ("di" para el
intervalo "ciclo").

                   
celda(ciclo, 5) = mEval.Evaluar(Val(celda(ciclo, 1)))
'Almacena la función evaluada en el
punto "ai" ("f(ai)" para el intervalo "ciclo").

                   
celda(ciclo, 6) = mEval.Evaluar(Val(celda(ciclo, 2)))
'Almacena la función evaluada en el
punto "bi" ("f(bi)" para el intervalo "ciclo").

                   
celda(ciclo, 7) = mEval.Evaluar(Val(celda(ciclo, 3)))
'Almacena la función evaluada en el
punto "ci" ("f(ci)" para el intervalo "ciclo").

                   
celda(ciclo, 8) = mEval.Evaluar(Val(celda(ciclo, 4)))
'Almacena la función evaluada en el
punto "di" ("f(di)" para el intervalo "ciclo").

                   
celda(ciclo, 9) = (Val(celda(ciclo, 5) + 3 * Val(celda(ciclo, 6))
+ 3 * Val(celda(ciclo, 7)) + Val(celda(ciclo, 8)))) *
(Val(TextBox5.Text) / 8) 'Almacena
("f(ai)"+"3f(bi)"+"3f(bi)"+"f(di)")*("delta x"/8) ("Ai" para el
intervalo "ciclo").

               
Next ciclo

               
'Obtener valor de la integral, que es la
sumatoria de todas las "Ai".

               
Dim integral As
Double = 0 'Se
declara la variable que contendrá el valor de la sumatoria
de todas las "Ai", es decir el valor de la
integral.

               
For ciclo As
Integer = 1 To (Val(TextBox4.Text)) 'Si "n"
vale 5, las iteraciones van desde 1 hasta 5.

                   
integral += celda(ciclo, 9) 'Equivale a
escribir "integral = integral + celda(ciclo, 9). Suma los valores
de todas las "Ai", desde el Intervalo 1 hasta el último
Intervalo.

               
Next ciclo

               
celda(Val(TextBox4.Text) + 1, 9) = integral 'Almacena el valor de la integral en la celda
correspondiente.

               
'Para indicar que se realizarán
operaciones con el objeto AxMSFlexGrid1

               
'sin necesidad de escribir su
nombre.

               
'De aquí en adelante vienen las
impresiones de los valores en las celdas
correspondientes.

               
AxMSFlexGrid1.ForeColor = Color.Blue 'Cambia
el color de letra de todas las celdas a azul.

               
With AxMSFlexGrid1 'Para
no estar poniendo por ejemplo AxMSFlexGrid1.set_ColWidth(0, 0) y
así sucesivamente, no estar repitiendo a cada rato
"AxMSFlexGrid1." NOTA: Desde el "With" hasta el "End With"
solamente deben estarse mandando a imprimir valores a cada una de
las celdas, y no estar haciendo cálculos con condiciones
If ni nada de eso dentro del "With", pues todos los
cálculos y condiciones deben hacerse afuera y venir a esta
sección del "With" única y exclusivamente a hacer
impresiones.

                   
'Esto servirá para poner color azul a
la letra de las celdas donde se muestran los resultados y hacer
más grande el ancho de las columnas donde aparecen las
celdas de los resultados, pues se estará trabajando con 10
decimales. Nótese que no se involucra la primera fila ni
la primera columna debido a que se programan los For comenzando
desde 1 y no desde 0.

                   
For fila As
Integer = 1 To .Rows – 1 'Para no
involucrar la primera fila, se comienza de 1 y no de
0.

                       
With AxMSFlexGrid1

                           
.Row = fila

                           
For columna As Integer = 1
To .Cols – 1 'Para
no involucrar la primera columna, se comienza de 1 y no de
0.

                               
.Col = columna

                               
.CellForeColor = Color.Blue 'Por estar dentro
del For, cambia el color de letra de todas las celdas a azul
(excepto la primera fila y la primera
columna).                 

                               
.set_ColWidth(columna, 1300) 'Por estar
deltro del For, le da un ancho de 1300 a cada columna (excepto a
la primera columna).

           
                Next

                       
End With

                   
Next

                   
'Establece la alineación del contenido
de la columna 0

                   
.set_ColAlignment(0,
MSFlexGridLib.AlignmentSettings.flexAlignCenterCenter)

     
              'Se
le ponen los respectivos títulos a cada
columna.

                   
.set_TextMatrix(0, 0, "Intervalo")

                   
.set_TextMatrix(0, 1, "ai")

                   
.set_TextMatrix(0, 2, "bi")

                   
.set_TextMatrix(0, 3, "ci")

                   
.set_TextMatrix(0, 4, "di")

                   
.set_TextMatrix(0, 5, "f(ai)")

                   
.set_TextMatrix(0, 6, "f(bi)")

                   
.set_TextMatrix(0, 7, "f(ci)")

                   
.set_TextMatrix(0, 8, "f(di)")

                   
.set_TextMatrix(0, 9, "Ai")

                   
'(Nótese que las impresiones se hacen
con 8 posiciones decimales).

                   
'Impresiones para primera
iteración.

                   
.set_TextMatrix(1, 0, Math.Round(Val(celda(1, 0)), 8))
'Imprime el número "1"
refiriéndose valor del intervalo.

                   
.set_TextMatrix(1, 1, Math.Round(Val(celda(1, 1)), 8))
'Imprime el valor del límite de
integración "a" ("ai" para el primer
intervalo).

                   
.set_TextMatrix(1, 2, Math.Round(Val(celda(1, 2)), 8))
'Imprime ("Xi-1"+("delta x"/3)) ("bi" para el
primer intervalo).

                   
.set_TextMatrix(1, 3, Math.Round(Val(celda(1, 3)), 8))
'Imprime ("Xi-1"+(2*"delta x"/3)) ("ci" para
el primer intervalo).

                   
.set_TextMatrix(1, 4, Math.Round(Val(celda(1, 4)), 8))
'Imprime "Xi-1" + "delta x" ("di" para el
primer intervalo).

                   
.set_TextMatrix(1, 5, Math.Round(Val(celda(1, 5)), 8))
'Imprime la función evaluada en el
punto "ai" ("f(ai)" para el primer intervalo).

                   
.set_TextMatrix(1, 6, Math.Round(Val(celda(1, 6)), 8))
'Imprime la función evaluada en el
punto "bi" ("f(bi)" para el primer intervalo).

                   
.set_TextMatrix(1, 7, Math.Round(Val(celda(1, 7)), 8))
'Imprime la función evaluada en el
punto "ci" ("f(ci)" para el primer intervalo).

                   
.set_TextMatrix(1, 8, Math.Round(Val(celda(1, 8)), 8))
'Imprime la función evaluada en el
punto "di" ("f(di)" para el primer intervalo).

   
                .set_TextMatrix(1,
9, Math.Round(Val(celda(1, 9)), 8)) 'Imprime
("f(ai)"+"3f(bi)"+"3f(bi)"+"f(di)")*("delta x"/8) ("Ai" para el
primer intervalo).

                   
'Impresiones para la segunda iteración
en adelante.

                   
For ciclo As
Integer = 2 To Val(TextBox4.Text)  'Si
"n" vale 5, las iteraciones van desde 2 hasta 5.

                       
.set_TextMatrix(ciclo, 0, Math.Round(Val(celda(ciclo, 0)), 8))
'Imprime el intervalo para la
iteración "ciclo", que es el intervalo de la
iteración anterior más 1.

                       
.set_TextMatrix(ciclo, 1, Math.Round(Val(celda(ciclo, 1)), 8))
'Imprime el valor del límite de
integración "a" ("ai" para el intervalo
"ciclo").

                       
.set_TextMatrix(ciclo, 2, Math.Round(Val(celda(ciclo, 2)), 8))
'Imprime ("Xi-1"+("delta x"/3)) ("bi" para el
intervalo "ciclo").

                       
.set_TextMatrix(ciclo, 3, Math.Round(Val(celda(ciclo, 3)), 8))
'Imprime ("Xi-1"+(2*"delta x"/3)) ("ci" para
el intervalo "ciclo").

  
                     .set_TextMatrix(ciclo,
4, Math.Round(Val(celda(ciclo, 4)), 8)) 'Imprime "Xi-1" + "delta x" ("di" para el intervalo
"ciclo").

                       
.set_TextMatrix(ciclo, 5, Math.Round(Val(celda(ciclo, 5)), 8))
'Imprime la función evaluada en el
punto "ai" ("f(ai)" para el intervalo "ciclo").

                       
.set_TextMatrix(ciclo, 6, Math.Round(Val(celda(ciclo, 6)), 8))
'Imprime la función evaluada en el
punto "bi" ("f(bi)" para el intervalo "ciclo").

                       
.set_TextMatrix(ciclo, 7, Math.Round(Val(celda(ciclo, 7)), 8))
'Imprime la función evaluada en el
punto "ci" ("f(ci)" para el intervalo "ciclo").

                       
.set_TextMatrix(ciclo, 8, Math.Round(Val(celda(ciclo, 8)), 8))
'Imprime la función evaluada en el
punto "di" ("f(di)" para el intervalo "ciclo").

                       
.set_TextMatrix(ciclo, 9, Math.Round(Val(celda(ciclo, 9)), 8))
'Imprime
("f(ai)"+"3f(bi)"+"3f(bi)"+"f(di)")*("delta x"/8) ("Ai" para el
intervalo "ciclo").

                 
  Next

                   
.set_TextMatrix(Val(TextBox4.Text) + 1, 9,
Math.Round(Val(celda(Val(TextBox4.Text) + 1, 9)), 8))
'Imprime el valor de la integral en la celda
correspondiente.

               
End With

               
TextBox6.Text = integral 'Imprime la
respuesta de la integral de la función
introducida.

           
End If

        End If

    End Sub

    Private Sub TextBox2_KeyPress(ByVal sender As
Object, ByVal
e As
System.Windows.Forms.KeyPressEventArgs) Handles TextBox2.KeyPress

        Dim contadorpuntos As
Integer

        Dim contadormenos As
Integer

        Dim contadorplecas As
Integer

        Dim longitudcadena As
Integer = Len(TextBox2.Text)
'Variable para almacenar la longitud de la
cadena que hay en un Textbox.

        Dim caracterevaluado As
String 'Para
evaluar caracter por caracter con el Mid().

        For ciclo As Integer = 1 To
longitudcadena 'Para evaluar caracter por
caracter hasta encontrar una "/".

           
caracterevaluado = Mid(TextBox2.Text, ciclo, 1)

           
If caracterevaluado = "." Then

               
contadorpuntos = contadorpuntos + 1

           
End If

        Next

        For ciclo As Integer = 1 To
longitudcadena 'Para evaluar caracter por
caracter hasta encontrar una "/".

           
caracterevaluado = Mid(TextBox2.Text, ciclo, 1)

           
If caracterevaluado = "-" Then

               
contadormenos = contadormenos + 1

           
End If

        Next

        For ciclo As Integer = 1 To
longitudcadena 'Para evaluar caracter por
caracter hasta encontrar una "/".

           
caracterevaluado = Mid(TextBox2.Text, ciclo, 1)

           
If caracterevaluado = "/" Then

               
contadorplecas = contadorplecas + 1

           
End If

        Next

        If (Asc(e.KeyChar) >= 47 And
Asc(e.KeyChar) <= 57) Or
Asc(e.KeyChar) = 46 Or Asc(e.KeyChar) =
8 Or Asc(e.KeyChar) = 45 Then 'Los únicos
caracteres que se permitirá introducir en el TextBox
serán la placa ("/") y los números del 0 al 9
(ASCII del 47 al 57); el punto ("."); el signo menos ("-"), que
es el ASCII 45; y el retroceso de espacio o backspace para borrar
texto introducido, que es el ASCII 8.

           
If (Asc(e.KeyChar) = 46) Then 'Si se presione la tecla
del punto (".").

               
If (contadorpuntos > 0) Then 'Cuando se pretenda
introducir un segundo punto.

                   
'Beep() 'Emite sonido cuando se presiona una
tecla que no está permitida o que es
inválida.

                   
e.KeyChar = "" 'Reemplaza la tecla digitada con el valor de nada para
que no se puedan introducir caracteres
inválidos.

               
End If

           
End If

           
If (Asc(e.KeyChar) = 45) Then 'Si se presione la tecla
del signo menos ("-").

               
If (contadormenos > 0) Then 'Cuando se pretenda
introducir un segundo signo menos.

                
   'Beep() 'Emite sonido
cuando se presiona una tecla que no está permitida o que
es inválida.

                   
e.KeyChar = "" 'Reemplaza la tecla digitada con el valor de nada para
que no se puedan introducir caracteres
inválidos.

               
End If

           
End If

           
If (Asc(e.KeyChar) = 47) Then 'Si se presione la tecla
de la pleca ("/").

               
If (contadorplecas > 0) Then 'Cuando se pretenda
introducir una segunda pleca.

                   
'Beep() 'Emite sonido cuando se presiona una
tecla que no está permitida o que es
inválida.

                   
e.KeyChar = "" 'Reemplaza la tecla digitada con el valor de nada para
que no se puedan introducir caracteres
inválidos.

               
End If

           
End If

        Else

  
         'Beep()
'Emite sonido cuando se presiona una tecla que no está
permitida o que es inválida.

           
e.KeyChar = "" 'Reemplaza la tecla digitada con el valor de nada para
que no se puedan introducir caracteres
inválidos.

        End If

    End Sub

    Private Sub TextBox3_KeyPress(ByVal sender As
Object, ByVal
e As
System.Windows.Forms.KeyPressEventArgs) Handles TextBox3.KeyPress

        Dim contadorpuntos As
Integer

        Dim contadormenos As
Integer

        Dim contadorplecas As
Integer

        Dim longitudcadena As
Integer = Len(TextBox3.Text)
'Variable para almacenar la longitud de la
cadena que hay en un Textbox.

        Dim caracterevaluado As
String 'Para
evaluar caracter por caracter con el Mid().

        For ciclo As Integer = 1 To
longitudcadena 'Para evaluar caracter por
caracter hasta encontrar una "/".

           
caracterevaluado = Mid(TextBox3.Text, ciclo, 1)

           
If caracterevaluado = "." Then

               
contadorpuntos = contadorpuntos + 1

           
End If

        Next

        For ciclo As Integer = 1 To
longitudcadena 'Para evaluar caracter por
caracter hasta encontrar una "/".

           
caracterevaluado = Mid(TextBox3.Text, ciclo, 1)

           
If caracterevaluado = "-" Then

               
contadormenos = contadormenos + 1

           
End If

        Next

        For ciclo As Integer = 1 To
longitudcadena 'Para evaluar caracter por
caracter hasta encontrar una "/".

           
caracterevaluado = Mid(TextBox3.Text, ciclo, 1)

           
If caracterevaluado = "/" Then

               
contadorplecas = contadorplecas + 1

           
End If

        Next

        If (Asc(e.KeyChar) >= 47 And
Asc(e.KeyChar) <= 57) Or
Asc(e.KeyChar) = 46 Or Asc(e.KeyChar) =
8 Or Asc(e.KeyChar) = 45 Then 'Los únicos
caracteres que se permitirá introducir en el TextBox
serán la placa ("/") y los números del 0 al 9
(ASCII del 47 al 57); el punto ("."); el signo menos ("-"), que
es el ASCII 45; y el retroceso de espacio o backspace para borrar
texto introducido, que es el ASCII 8.

           
If (Asc(e.KeyChar) = 46) Then 'Si se presione la tecla
del punto (".").

               
If (contadorpuntos > 0) Then 'Cuando se pretenda
introducir un segundo punto.

                   
'Beep() 'Emite sonido cuando se presiona una
tecla que no está permitida o que es
inválida.

                   
e.KeyChar = "" 'Reemplaza la tecla digitada con el valor de nada para
que no se puedan introducir caracteres
inválidos.

               
End If

           
End If

           
If (Asc(e.KeyChar) = 45) Then 'Si se presione la tecla
del signo menos ("-").

               
If (contadormenos > 0) Then 'Cuando se pretenda
introducir un segundo signo menos.

                   
'Beep() 'Emite sonido cuando se presiona una
tecla que no está permitida o que es
inválida.

       
            e.KeyChar
= "" 'Reemplaza
la tecla digitada con el valor de nada para que no se puedan
introducir caracteres inválidos.

               
End If

           
End If

           
If (Asc(e.KeyChar) = 47) Then 'Si se presione la tecla
de la pleca ("/").

               
If (contadorplecas > 0) Then 'Cuando se pretenda
introducir una segunda pleca.

                   
'Beep() 'Emite sonido cuando se presiona una
tecla que no está permitida o que es
inválida.

                   
e.KeyChar = "" 'Reemplaza la tecla digitada con el valor de nada para
que no se puedan introducir caracteres
inválidos.

               
End If

           
End If

        Else

           
'Beep() 'Emite sonido cuando se presiona una
tecla que no está permitida o que es
inválida.

 
          e.KeyChar
= "" 'Reemplaza
la tecla digitada con el valor de nada para que no se puedan
introducir caracteres inválidos.

        End If

    End Sub

    Private Sub TextBox4_KeyPress(ByVal sender As
Object, ByVal
e As
System.Windows.Forms.KeyPressEventArgs) Handles TextBox4.KeyPress

        If (Asc(e.KeyChar) >= 48 And Asc(e.KeyChar) <= 57) Or (Asc(e.KeyChar) = 8) Then 'Los únicos
caracteres que se permitirá introducir en el TextBox
serán los números del 0 al 9 (ASCII del 48 al 57) y
el Backspace (ASCII 8).

           
'No se hace nada porque el caracter
presionado es válido.

        Else

           
'Beep() 'Emite sonido cuando se presiona una
tecla que no está permitida o que es
inválida.

           
e.KeyChar = "" 'Reemplaza la tecla digitada con el valor de nada para
que no se puedan introducir caracteres
inválidos.

        End If

    End Sub

End Class

simpsonuntercio.vb

Imports System.Text

Imports System.CodeDom.Compiler

Imports
System.Collections.Specialized 'Sin esto no
funcionaría ninguna instanciación o variable
declarada "As New StringCollection()"

Public Class simpsonuntercio

    Public celda(24, 7)
As String
'Se declara un máximo de 25 filas y 8
columnas (pues se comienza a contar desde la posición
0).

    Private
Sub Button1_Click(ByVal sender As
System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Me.Hide()

        Form1.Show()

    End Sub

    Private Sub Button3_Click(ByVal
sender As System.Object, ByVal e As
System.EventArgs) Handles
Button3.Click

        'Se limpian los valores de los TextBox.

        TextBox1.Text =
""

        TextBox2.Text =
""

        TextBox3.Text =
""

        TextBox4.Text =
""

        TextBox5.Text =
""

       
AxMSFlexGrid1.Clear() 'Limpiar todas las
celdas del FlexGrid para que no queden impresos resultados de
procesos anteriores.

        AxMSFlexGrid1.Rows
= 2 'Establece 2 filas.

        AxMSFlexGrid1.Cols
= 2 'Establece 2 columnas.

    End Sub

    Private Sub Button4_Click(ByVal
sender As System.Object, ByVal e As
System.EventArgs) Handles
Button4.Click

        End 'Salir del programa
(cerrarlo).

    End Sub

    Private Sub Button2_Click(ByVal
sender As System.Object, ByVal e As
System.EventArgs) Handles
Button2.Click

        If (TextBox3.Text <= TextBox2.Text) Or (TextBox4.Text < 0) Then 'Si "b" es menor o igual
que "a" o si "n" es menor que cero entonces se mandará el
mensaje de error correspondiente. De lo contrario se
ejecutará el programa.

           
MsgBox("'b' debe ser mayor que 'a' y 'n'
debe ser mayor que cero.", , "Integración por Sumas de Riemman")

        Else

           
Dim i, j As
Integer '"i"
significará "fila" y "j" significará columna, de
modo que se trabajará con
(i,j)=(fila,columna)

           
'Establece cuántas filas y columnas
tendrá el Grid.

           
AxMSFlexGrid1.Rows = 25 'Establece 25
filas.

           
AxMSFlexGrid1.Cols = 8 'Establece 8
columnas.

           
'Se crea una nueva instancia de la clase
Evaluador.

           
Dim mEval As
New Evaluador()

           
'Se crea una variable tipo string y se le
asigna la expresión que se quiere evaluar.

           
Dim mExpresion As String = TextBox1.Text
' = "X".

           
'Se crea un objeto StringCollection y se le
agregan los parámetros de entrada que usará el
método eval.

           
Dim mParameters As New
StringCollection()

           
mParameters.Add("ByVal X as
Double")

           
'Las funciones a utilizar pertenece al
espacio de nombres System.Math.

           
'se hace necesario entonces, crear un objeto
StringCollection y agregar

           
'el namespace System.Math.

           
Dim mNameSpaces As
New StringCollection()

           
mNameSpaces.Add("System.Math")

           
'Se invoca el método
PrecompilarFunción y se verifica si se generó
correctamente el assembly.

           
If
mEval.PrecompilarAssembly(mExpresion, mParameters, mNameSpaces)
Then

               
'Si el assembly se generó
correctamente, se crea un array con los valores de los parametros
a evaluar.

               
'Se invoca el método Evaluar y se
asignan los resultados correspondientes.

   
            'Se
limpian todas las celdas para que no queden impresos resultados
de procesos anteriores.

               
AxMSFlexGrid1.Clear()

               
'Se comienzan a hacer los
cálculos.

               
'Valores para la primera
iteración.

         
      TextBox5.Text =
(Val(TextBox3.Text) – Val(TextBox2.Text)) / Val(TextBox4.Text)
'Almacena "delta x", que es
"(b-a)/n".

               
celda(1, 0) = 1 'Almacena el número
"1" refiriéndose valor del intervalo.

               
celda(1, 1) = Val(TextBox2.Text) 'Almacena el
valor del límite de integración "a" ("ai" para el
primer Intervalo).

               
celda(1, 2) = Val(TextBox2.Text) + (Val(TextBox5.Text) / 2)
'Almacena ("Xi-1"+("delta x"/2)) ("bi" para
el primer intervalo).

               
celda(1, 3) = Val(celda(1, 1)) + Val(TextBox5.Text) 'Almacena la suma de "Xi-1" más "delta x" ("ci"
para el primer intervalo).

               
celda(1, 4) = mEval.Evaluar(Val(celda(1, 1))) 'Almacena la función evaluada en el punto "ai"
("f(ai)" para el primer intervalo).

               
celda(1, 5) = mEval.Evaluar(Val(celda(1, 2))) 'Almacena la función evaluada en el punto "bi"
("f(bi)" para el primer intervalo).

               
celda(1, 6) = mEval.Evaluar(Val(celda(1, 3))) 'Almacena la función evaluada en el punto "ci"
("f(ci)" para el primer intervalo).

               
celda(1, 7) = (Val(celda(1, 4) + 4 * Val(celda(1, 5)) +
Val(celda(1, 6)))) * (Val(TextBox5.Text) / 6) 'Almacena ("f(ai)"+"4f(bi)"+"f(ci)")*("delta x"/6) ("Ai"
para el primer intervalo).

            
   'Valores para la segunda
iteración en adelante.

               
For ciclo As
Integer = 2 To Val(TextBox4.Text)  'Si
"n" vale 5, las iteraciones van desde 2 hasta
5.

                   
celda(ciclo, 0) = Val(celda(ciclo – 1, 0)) + 1 'Almacena Intervalo para la iteración "ciclo", que
es Intervalo de la iteración anterior más
1.

                   
celda(ciclo, 1) = Val(celda(ciclo – 1, 3)) 'Almacena el valor de "ci" del intervalo
anterior.

                   
celda(ciclo, 2) = Val(celda(ciclo, 1)) + (Val(TextBox5.Text) / 2)
'Almacena ("Xi-1"+("delta x"/2)) ("bi" para
el intervalo "ciclo").

                   
celda(ciclo, 3) = Val(celda(ciclo, 1)) + Val(TextBox5.Text)
'Almacena la suma de "Xi-1" más "delta
x" ("ci" para el intervalo "ciclo").

             
      celda(ciclo, 4) =
mEval.Evaluar(Val(celda(ciclo, 1))) 'Almacena
la función evaluada en el punto "ai" ("f(ai)" para el
intervalo "ciclo").

                   
celda(ciclo, 5) = mEval.Evaluar(Val(celda(ciclo, 2)))
'Almacena la función evaluada en el
punto "bi" ("f(bi)" para el intervalo "ciclo").

                   
celda(ciclo, 6) = mEval.Evaluar(Val(celda(ciclo, 3)))
'Almacena la función evaluada en el
punto "ci" ("f(ci)" para el intervalo "ciclo").

                   
celda(ciclo, 7) = (Val(celda(ciclo, 4) + 4 * Val(celda(ciclo, 5))
+ Val(celda(ciclo, 6)))) * (Val(TextBox5.Text) / 6) 'Almacena ("f(ai)"+"4f(bi)"+"f(ci)")*("delta x"/6) ("Ai"
para el intervalo "ciclo").

               
Next ciclo

               
'Obtener valor de la integral, que es la
sumatoria de todas las "Ai".

               
Dim integral As
Double = 0 'Se
declara la variable que contendrá el valor de la sumatoria
de todas las "Ai", es decir el valor de la
integral.

               
For ciclo As
Integer = 1 To (Val(TextBox4.Text)) 'Si "n"
vale 5, las iteraciones van desde 1 hasta 5.

                   
integral += celda(ciclo, 7) 'Equivale a
escribir "integral = integral + celda(ciclo, 7). Suma los valores
de todas las "Ai", desde el Intervalo 1 hasta el último
Intervalo.

             
  Next ciclo

               
celda(Val(TextBox4.Text) + 1, 7) = integral 'Almacena el valor de la integral en la celda
correspondiente.

               
'Para indicar que se realizarán
operaciones con el objeto AxMSFlexGrid1

               
'sin necesidad de escribir su
nombre.

               
'De aquí en adelante vienen las
impresiones de los valores en las celdas
correspondientes.

               
AxMSFlexGrid1.ForeColor = Color.Blue 'Cambia
el color de letra de todas las celdas a azul.

               
With AxMSFlexGrid1 'Para
no estar poniendo por ejemplo AxMSFlexGrid1.set_ColWidth(0, 0) y
así sucesivamente, no estar repitiendo a cada rato
"AxMSFlexGrid1." NOTA: Desde el "With" hasta el "End With"
solamente deben estarse mandando a imprimir valores a cada una de
las celdas, y no estar haciendo cálculos con condiciones
If ni nada de eso dentro del "With", pues todos los
cálculos y condiciones deben hacerse afuera y venir a esta
sección del "With" única y exclusivamente a hacer
impresiones.

                 
  'Esto servirá para poner
color azul a la letra de las celdas donde se muestran los
resultados y hacer más grande el ancho de las columnas
donde aparecen las celdas de los resultados, pues se
estará trabajando con 10 decimales. Nótese que no
se involucra la primera fila ni la primera columna debido a que
se programan los For comenzando desde 1 y no desde 0.

                   
For fila As
Integer = 1 To .Rows – 1 'Para no
involucrar la primera fila, se comienza de 1 y no de
0.

                       
With AxMSFlexGrid1

                           
.Row = fila

                           
For columna As Integer = 1
To .Cols – 1 'Para
no involucrar la primera columna, se comienza de 1 y no de
0.

                               
.Col = columna

                  
             .CellForeColor
= Color.Blue 'Por estar dentro del For,
cambia el color de letra de todas las celdas a azul (excepto la
primera fila y la primera
columna).                 

                               
.set_ColWidth(columna, 1300) 'Por estar
deltro del For, le da un ancho de 1300 a cada columna (excepto a
la primera columna).

                           
Next

                       
End With

                   
Next

                   
'Establece la alineación del contenido
de la columna 0

 
                  .set_ColAlignment(0,
MSFlexGridLib.AlignmentSettings.flexAlignCenterCenter)

                   
'Se le ponen los respectivos títulos a
cada columna.

                   
.set_TextMatrix(0, 0, "Intervalo")

                   
.set_TextMatrix(0, 1, "ai")

                   
.set_TextMatrix(0, 2, "bi")

                   
.set_TextMatrix(0, 3, "ci")

                   
.set_TextMatrix(0, 4, "f(ai)")

                   
.set_TextMatrix(0, 5, "f(bi)")

                   
.set_TextMatrix(0, 6, "f(ci)")

                   
.set_TextMatrix(0, 7, "Ai")

                   
'(Nótese que las impresiones se hacen
con 8 posiciones decimales).

                   
'Impresiones para primera
iteración.

                   
.set_TextMatrix(1, 0, Math.Round(Val(celda(1, 0)), 8))
'Imprime el número "1"
refiriéndose valor del intervalo.

                   
.set_TextMatrix(1, 1, Math.Round(Val(celda(1, 1)), 8))
'Imprime el valor del límite de
integración "a" ("ai" para el primer
Intervalo).

                   
.set_TextMatrix(1, 2, Math.Round(Val(celda(1, 2)), 8))
'Imprime ("Xi-1"+("delta x"/2)) ("bi" para el
primer intervalo).

                   
.set_TextMatrix(1, 3, Math.Round(Val(celda(1, 3)), 8))
'Imprime la suma de "Xi-1" más "delta
x" ("ci" para el primer intervalo).

                   
.set_TextMatrix(1, 4, Math.Round(Val(celda(1, 4)), 8))
'Imprime la función evaluada en el
punto "ai" ("f(ai)" para el primer intervalo).

                   
.set_TextMatrix(1, 5, Math.Round(Val(celda(1, 5)), 8))
'Imprime la función evaluada en el
punto "bi" ("f(bi)" para el primer intervalo).

                   
.set_TextMatrix(1, 6, Math.Round(Val(celda(1, 6)), 8))
'Imprime la función evaluada en el
punto "ci" ("f(ci)" para el primer intervalo).

                   
.set_TextMatrix(1, 7, Math.Round(Val(celda(1, 7)), 8))
'Imprime ("f(ai)"+"4f(bi)"+"f(ci)")*("delta
x"/6) ("Ai" para el primer intervalo).

                   
'Impresiones para la segunda iteración
en adelante.

                   
For ciclo As
Integer = 2 To Val(TextBox4.Text)  'Si
"n" vale 5, las iteraciones van desde 2 hasta 5.

                       
.set_TextMatrix(ciclo, 0, Math.Round(Val(celda(ciclo, 0)), 8))
'Imprime Intervalo para la iteración
"ciclo", que es Intervalo de la iteración anterior
más 1.

           
            .set_TextMatrix(ciclo,
1, Math.Round(Val(celda(ciclo, 1)), 8)) 'Imprime el valor de "ci" del intervalo
anterior.

                       
.set_TextMatrix(ciclo, 2, Math.Round(Val(celda(ciclo, 2)), 8))
'Imprime ("Xi-1"+("delta x"/2)) ("bi" para el
intervalo "ciclo").

                       
.set_TextMatrix(ciclo, 3, Math.Round(Val(celda(ciclo, 3)), 8))
'Imprime la suma de "Xi-1" más "delta
x" ("ci" para el intervalo "ciclo").

                       
.set_TextMatrix(ciclo, 4, Math.Round(Val(celda(ciclo, 4)), 8))
'Imprime la función evaluada en el
punto "ai" ("f(ai)" para el intervalo "ciclo").

                       
.set_TextMatrix(ciclo, 5, Math.Round(Val(celda(ciclo, 5)), 8))
'Imprime la función evaluada en el
punto "bi" ("f(bi)" para el intervalo "ciclo").

Partes: 1, 2, 3, 4, 5, 6
 Página anterior Volver al principio del trabajoPágina siguiente 

Nota al lector: es posible que esta página no contenga todos los componentes del trabajo original (pies de página, avanzadas formulas matemáticas, esquemas o tablas complejas, etc.). Recuerde que para ver el trabajo en su versión original completa, puede descargarlo desde el menú superior.

Todos los documentos disponibles en este sitio expresan los puntos de vista de sus respectivos autores y no de Monografias.com. El objetivo de Monografias.com es poner el conocimiento a disposición de toda su comunidad. Queda bajo la responsabilidad de cada lector el eventual uso que se le de a esta información. Asimismo, es obligatoria la cita del autor del contenido y de Monografias.com como fuentes de información.

Categorias
Newsletter