Derivación por diferencias divididas y por fórmulas de alta precisión en Visual Basic 2005 (página 7)
.set_TextMatrix(1, 7, Math.Round(Val(tablas18(1, 7)),
10)) 'Imprime el valor de
"f(a+2h)" (con 10 decimales).
.set_TextMatrix(1, 8, Math.Round(Val(tablas18(1, 8)),
10)) 'Imprime el valor de "f(a+3h)"
(con 10 decimales).
.set_TextMatrix(1, 9, Math.Round(Val(tablas18(1, 9)),
10)) 'Imprime el valor de
"f'''(x)="(f(a+3h)-3f(a+2h)+3f(a+h)-f(a))/h^3" (con 10
decimales).
End With
End If
End If
'CASO 19. CUARTA DERIVADA POR
FÓRMULAS DE ALTA PRECISIÓN HACIA
ADELANTE.
If (ComboBox1.SelectedItem
= "Fórmulas de Alta
Precisión Hacia Adelante")
And (ComboBox2.SelectedItem
= "4ta.
derivada") Then
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.
AxMSFlexGrid2.Rows = 2 'Establece 2 filas.
AxMSFlexGrid2.Cols = 12 'Establece 12 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.
With AxMSFlexGrid2
'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.
For fila
As Integer = 0 To .Rows – 1
With
AxMSFlexGrid2
.Row = fila
For columna
As Integer = 0 To .Cols – 1
.set_TextMatrix(fila, columna, "") 'Por
estar dentro de los For anidados, con esto se ponen valores
String Empty en todas las celdas, de modo que no aparezca nada y
queden todas las celdas limpias y sin resultados de
cálculos hechos anteriormente.
Next
End With
Next
End With
'Se comienzan a hacer los
cálculos.
'Valores para la fila de
resultados.
tablas19(1, 1) = Val(TextBox2.Text) 'Almacena "a".
tablas19(1, 2) = Val(TextBox2.Text) +
Val(TextBox3.Text) 'Almacena
"a+h".
tablas19(1, 3) = Val(TextBox2.Text) + (2 *
Val(TextBox3.Text)) 'Almacena
"a+2h".
tablas19(1, 4) = Val(TextBox2.Text) + (3 *
Val(TextBox3.Text)) 'Almacena
"a+3h".
tablas19(1, 5) = Val(TextBox2.Text) + (4 *
Val(TextBox3.Text)) 'Almacena
"a+4h".
tablas19(1, 6) = mEval.Evaluar(Val(tablas19(1,
1))) 'Almacena "f(a)".
tablas19(1, 7) = mEval.Evaluar(Val(tablas19(1,
2))) 'Almacena "f(a+h)".
tablas19(1, 8) = mEval.Evaluar(Val(tablas19(1,
3))) 'Almacena "f(a+2h)".
tablas19(1, 9) = mEval.Evaluar(Val(tablas19(1,
4))) 'Almacena "f(a+3h)".
tablas19(1, 10) = mEval.Evaluar(Val(tablas19(1,
5))) 'Almacena "f(a+4h)".
tablas19(1, 11) = (tablas19(1, 10) – (4 * tablas19(1,
9)) + (6 * tablas19(1, 8)) – (4 * tablas19(1, 7)) + tablas19(1,
6)) / (Val(TextBox3.Text) ^ (4)) 'Almacena
"(f(a+4h)-4f(a+3h)+6f(a+2h)-4f(a+h)+f(a))/h^4"="f''''(x)".
TextBox8.Text = "cuarta" 'Imprime el orden
de la derivada.
TextBox9.Text = tablas19(1, 11) 'Este valor de respuesta se iría a imprimir en
el TextBox8 como cuarta derivada de la función
introducida por el usuario.
TextBox10.Text = TextBox3.Text 'Imprime el error utilizado.
'Para indicar que se realizarán
operaciones
con el objeto AxMSFlexGrid2
'sin necesidad de escribir su
nombre.
'De aquí en adelante vienen las
impresiones de los valores en las celdas
correspondientes.
AxMSFlexGrid2.ForeColor = Color.Blue
'Cambia el color de letra de todas las
celdas a azul.
With AxMSFlexGrid2
'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
AxMSFlexGrid2
.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, 1, "a") 'Imprime
"a".
.set_TextMatrix(0, 2, "a+h") 'Imprime "a+h".
.set_TextMatrix(0, 3, "a+2h") 'Imprime "a+2h".
.set_TextMatrix(0, 4, "a+3h") 'Imprime "a+3h".
.set_TextMatrix(0, 5, "a+4h") 'Imprime "a+4h".
.set_TextMatrix(0, 6, "f(a)") 'Imprime "f(a)".
.set_TextMatrix(0, 7, "f(a+h)") 'Imprime "f(a+h)".
.set_TextMatrix(0, 8, "f(a+2h)") 'Imprime "f(a+2h)".
.set_TextMatrix(0, 9, "f(a+3h)") 'Imprime "f(a+3h)".
.set_TextMatrix(0, 10, "f(a+4h)") 'Imprime "f(a+4h)".
.set_TextMatrix(0, 11, "f''''(x)") 'Imprime
"f''''(x)=(f(a+4h)-4f(a+3h)+6f(a+2h)-4f(a+h)+f(a))/h^4".
'Impresiones para la fila de
resultados.
.set_TextMatrix(1, 1, Math.Round(Val(tablas19(1, 1)),
10)) 'Imprime el valor de "a" (con
10 decimales).
.set_TextMatrix(1, 2, Math.Round(Val(tablas19(1, 2)),
10)) 'Imprime el valor de "a+h" (con
10 decimales).
.set_TextMatrix(1, 3, Math.Round(Val(tablas19(1, 3)),
10)) 'Imprime el valor de "a+2h"
(con 10 decimales).
.set_TextMatrix(1, 4, Math.Round(Val(tablas19(1, 4)),
10)) 'Imprime el valor de "a-h" (con
10 decimales).
.set_TextMatrix(1, 5, Math.Round(Val(tablas19(1, 5)),
10)) 'Imprime el valor de "a-2h"
(con 10 decimales).
.set_TextMatrix(1, 6, Math.Round(Val(tablas19(1, 6)),
10)) 'Imprime el valor de "f(a)"
(con 10 decimales).
.set_TextMatrix(1, 7, Math.Round(Val(tablas19(1, 7)),
10)) 'Imprime el valor de "f(a+h)"
(con 10 decimales).
.set_TextMatrix(1, 8, Math.Round(Val(tablas19(1, 8)),
10)) 'Imprime el valor de "f(a+2h)"
(con 10 decimales).
.set_TextMatrix(1, 9, Math.Round(Val(tablas19(1, 9)),
10)) 'Imprime el valor de "f(a-h)"
(con 10 decimales).
.set_TextMatrix(1, 10, Math.Round(Val(tablas19(1, 10)),
10)) 'Imprime el valor de "f(a-2h)
(con 10 decimales).
.set_TextMatrix(1, 11, Math.Round(Val(tablas19(1, 11)),
10)) 'Imprime el valor de
"f''''(x)=(f(a+4h)-4f(a+3h)+6f(a+2h)-4f(a+h)+f(a))/h^4" (con 10
decimales).
End With
End If
End If
'CASO 20. QUINTA DERIVADA POR
FÓRMULAS DE ALTA PRECISIÓN HACIA
ADELANTE.
If (ComboBox1.SelectedItem
= "Fórmulas de Alta
Precisión Hacia Adelante")
And (ComboBox2.SelectedItem
= "5ta.
derivada") Then
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.
AxMSFlexGrid2.Rows = 2 'Establece 2 filas.
AxMSFlexGrid2.Cols = 14 'Establece 14 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.
With AxMSFlexGrid2
'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.
For fila
As Integer = 0 To .Rows – 1
With
AxMSFlexGrid2
.Row = fila
For columna
As Integer = 0 To .Cols – 1
.set_TextMatrix(fila, columna, "") 'Por
estar dentro de los For anidados, con esto se ponen valores
String Empty en todas las celdas, de modo que no aparezca nada y
queden todas las celdas limpias y sin resultados de
cálculos hechos anteriormente.
Next
End With
Next
End With
'Se comienzan a hacer los
cálculos.
'Valores para la fila de
resultados.
tablas20(1, 1) = Val(TextBox2.Text) 'Almacena "a".
tablas20(1, 2) = Val(TextBox2.Text) +
Val(TextBox3.Text) 'Almacena
"a+h".
tablas20(1, 3) = Val(TextBox2.Text) + (2 *
Val(TextBox3.Text)) 'Almacena
"a+2h".
tablas20(1, 4) = Val(TextBox2.Text) + (3 *
Val(TextBox3.Text)) 'Almacena
"a+3h".
tablas20(1, 5) = Val(TextBox2.Text) + (4 *
Val(TextBox3.Text)) 'Almacena
"a+4h".
tablas20(1, 6) = Val(TextBox2.Text) + (5 *
Val(TextBox3.Text)) 'Almacena
"a+5h".
tablas20(1, 7) = mEval.Evaluar(Val(tablas20(1,
1))) 'Almacena "f(a)".
tablas20(1, 8) = mEval.Evaluar(Val(tablas20(1,
2))) 'Almacena "f(a+h)".
tablas20(1, 9) = mEval.Evaluar(Val(tablas20(1,
3))) 'Almacena "f(a+2h)".
tablas20(1, 10) = mEval.Evaluar(Val(tablas20(1,
4))) 'Almacena "f(a+3h)".
tablas20(1, 11) = mEval.Evaluar(Val(tablas20(1,
5))) 'Almacena "f(a+4h)".
tablas20(1, 12) = mEval.Evaluar(Val(tablas20(1,
6))) 'Almacena "f(a+5h)".
tablas20(1, 13) = (tablas20(1, 12) – (5 * tablas20(1,
11)) + (10 * tablas20(1, 10)) – (10 * tablas20(1, 9)) + (5 *
(tablas20(1, 8))) – tablas20(1, 7)) / (Val(TextBox3.Text) ^
(5)) 'Almacena
"(f(a+5h)-5f(a+4h)+10f(a+3h)-10f(a+2h)+5f(a+h)-f(a))/h^5"="f'''''(x)".
TextBox8.Text = "quinta" 'Imprime el orden
de la derivada.
TextBox9.Text = tablas20(1, 13) 'Este valor de respuesta se iría a imprimir en
el TextBox8 como cuarta derivada de la función introducida
por el usuario.
TextBox10.Text = TextBox3.Text 'Imprime el error utilizado.
'Para indicar que se realizarán
operaciones con el objeto AxMSFlexGrid2
'sin necesidad de escribir su
nombre.
'De aquí en adelante vienen las
impresiones de los valores en las celdas
correspondientes.
AxMSFlexGrid2.ForeColor = Color.Blue 'Cambia el color de letra de todas las celdas a
azul.
With AxMSFlexGrid2
'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
AxMSFlexGrid2
.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, 1, "a") 'Imprime
"a".
.set_TextMatrix(0, 2, "a+h") 'Imprime "a+h".
.set_TextMatrix(0, 3, "a+2h") 'Imprime "a+2h".
.set_TextMatrix(0, 4, "a+3h") 'Imprime "a+3h".
.set_TextMatrix(0, 5, "a+4h") 'Imprime "a+4h".
.set_TextMatrix(0, 6, "a+5h") 'Imprime "a+5h".
.set_TextMatrix(0, 7, "f(a)") 'Imprime "f(a)".
.set_TextMatrix(0, 8, "f(a+h)") 'Imprime "f(a+h)".
.set_TextMatrix(0, 9, "f(a+2h)") 'Imprime "f(a+2h)".
.set_TextMatrix(0, 10, "f(a+3h)") 'Imprime "f(a+3h)".
.set_TextMatrix(0, 11, "f(a+4h)") 'Imprime "f(a+4h)".
.set_TextMatrix(0, 12, "f(a+5h)") 'Imprime "f(a+5h)".
.set_TextMatrix(0, 13, "f'''''(x)") 'Imprime
"f'''''(x)=(f(a+5h)-5f(a+4h)+10f(a+3h)-10f(a+2h)+5f(a+h)-f(a))/h^5".
'Impresiones para la fila de
resultados.
.set_TextMatrix(1, 1, Math.Round(Val(tablas20(1, 1)),
10)) 'Imprime el valor de "a" (con
10 decimales).
.set_TextMatrix(1, 2, Math.Round(Val(tablas20(1, 2)),
10)) 'Imprime el valor de "a+h" (con
10 decimales).
.set_TextMatrix(1, 3, Math.Round(Val(tablas20(1, 3)),
10)) 'Imprime el valor de "a+2h"
(con 10 decimales).
.set_TextMatrix(1, 4, Math.Round(Val(tablas20(1, 4)),
10)) 'Imprime el valor de "a+3h"
(con 10 decimales).
.set_TextMatrix(1, 5, Math.Round(Val(tablas20(1, 5)),
10)) 'Imprime el valor de "a+4h"
(con 10 decimales).
.set_TextMatrix(1, 6, Math.Round(Val(tablas20(1, 6)),
10)) 'Imprime el valor de "a+5h"
(con 10 decimales).
.set_TextMatrix(1, 7, Math.Round(Val(tablas20(1, 7)),
10)) 'Imprime el valor de "f(a)"
(con 10 decimales).
.set_TextMatrix(1, 8, Math.Round(Val(tablas20(1, 8)),
10)) 'Imprime el valor de "f(a+h)"
(con 10 decimales).
.set_TextMatrix(1, 9, Math.Round(Val(tablas20(1, 9)),
10)) 'Imprime el valor de "f(a+2h)"
(con 10 decimales).
.set_TextMatrix(1, 10, Math.Round(Val(tablas20(1, 10)),
10)) 'Imprime el valor de "f(a+3h)"
(con 10 decimales).
.set_TextMatrix(1, 11, Math.Round(Val(tablas20(1, 11)),
10)) 'Imprime el valor de "f(a+4h)
(con 10 decimales).
.set_TextMatrix(1, 12, Math.Round(Val(tablas20(1, 12)),
10)) 'Imprime el valor de "f(a+5h)"
(con 10 decimales).
.set_TextMatrix(1, 13, Math.Round(Val(tablas20(1, 13)),
10)) 'Imprime el valor de
"f'''''(x)=(f(a+5h)-5f(a+4h)+10f(a+3h)-10f(a+2h)+5f(a+h)-f(a))/h^5"
(con 10 decimales).
End With
End If
End If
'CASO 21. PRIMERA DERIVADA POR
FÓRMULAS DE ALTA PRECISIÓN HACIA
ATRÁS.
If (ComboBox1.SelectedItem
= "Fórmulas de Alta
Precisión Hacia Atrás")
And (ComboBox2.SelectedItem
= "1ra.
derivada") Then
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.
AxMSFlexGrid2.Rows = 51 'Establece 51 filas.
AxMSFlexGrid2.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.
With AxMSFlexGrid2
'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.
For fila
As Integer = 0 To .Rows – 1
With
AxMSFlexGrid2
.Row = fila
For columna
As Integer = 0 To .Cols – 1
.set_TextMatrix(fila, columna, "") 'Por
estar dentro de los For anidados, con esto se ponen valores
String Empty en todas las celdas, de modo que no aparezca nada y
queden todas las celdas limpias y sin resultados de
cálculos hechos anteriormente.
Next
End With
Next
End With
'Se comienzan a hacer los
cálculos.
'Valores para primera
iteración.
tablas21(1, 1) = Val(TextBox2.Text) 'Almacena "a" de la primera
iteración.
tablas21(1, 2) = Val(TextBox2.Text) – 10 ^ (-1)
'Almacena "a-h" de la primera
iteración.
tablas21(1, 3) = mEval.Evaluar(Val(tablas21(1,
1))) 'Almacena "f(a)" de la primera
iteración.
tablas21(1, 4) = mEval.Evaluar(Val(tablas21(1,
2))) 'Almacena "f(a-h)" de la
primera iteración.
'tablas21(1, 5) = no hay Error en la
primera iteración.
'tablas21(1, 6) = no hay Error% en la
primera iteración porque tampoco hay Error en la primera
iteración.
tablas21(1, 7) = (tablas21(1, 3) – tablas21(1, 4)) / 10
^ (-1) 'Almacena
"f'(x)=(f(a)-f(a-h))/h"="f'(a)" de la primera
iteración.
'Valores para segunda
iteración.
tablas21(2, 1) = Val(TextBox2.Text) 'Almacena "a" de la segunda
iteración.
tablas21(2, 2) = Val(TextBox2.Text) – 10 ^ (-2)
'Almacena "a-h" de la segunda
iteración.
tablas21(2, 3) = mEval.Evaluar(Val(tablas21(2,
1))) 'Almacena "f(a)" de la segunda
iteración.
tablas21(2, 4) = mEval.Evaluar(Val(tablas21(2,
2))) 'Almacena "f(a-h)" de la
segunda iteración.
tablas21(2, 7) = (tablas21(2, 3) – tablas21(2, 4)) / 10
^ (-2) 'Almacena
"f'(x)=(f(a)-f(a-h))/h"="f'(a)" de la segunda
iteración.
tablas21(2, 5) = Math.Abs(Val(tablas21(2, 7))) –
Math.Abs(Val(tablas21(1, 7))) 'Almacena el "Error" de la segunda iteración,
que es el valor absoluto de "f'(x)" de la segunda
iteración menos el valor absoluto de "f'(x)" de la primera
iteración.
tablas21(2, 6) = Math.Abs(Val(tablas21(2, 5))) /
Math.Abs(Val(tablas21(2, 7))) * 100 'Almacena el "Error%" de la segunda iteración,
que es el valor absoluto del Error de la segunda iteración
entre el valor absoluto de la primera derivada de la segunda
iteración (f'(x)) multiplicado por 100.
'Valores para la tercera
iteración en adelante.
Dim
exponenteparavalorh As
Integer = 3
'Debido a que el For comienza de la
iteración 3, se le pone a esta variable el valor de 3,
pero en la iteración 4 valdrá 4, en la 5
valdrá 5, en la 6 valdrá 6 y así
sucesivamente. Recuérdese que en la primera
iteración h=10^(-1), en la segunda iteración
h=10^(-2), en la tercera iteración h=10^(-3), en la cuarta
iteración h=10^(-4), en la quinta iteración
h=10^(-5), etc. Entonces lo que se busca es hacer que
h=10^(-exponenteparavalorh).
For ciclo
As Integer = 3 To 50 'Se
tomará 50 como número máximo de
iteraciones.
If tablas21(2, 5) <
Val(TextBox4.Text) Then
'Si el "Error" de la iteración 2 es
menor que la "Tolerancia"
introducida por el usuario es porque ya se ha encontrado la
respuesta (que sería el "f'(x)") y deben terminar entonces
las iteraciones.
TextBox8.Text = "primera" 'Imprime el
orden de la derivada.
TextBox9.Text = tablas21(2, 7) 'Este valor de respuesta se iría a imprimir en
el TextBox8 como primera derivada de la función
introducida por el usuario.
TextBox10.Text = TextBox4.Text 'Imprime el error utilizado.
ciclo = 50 'Esto
hará que la próxima iteración sea la 51, por
lo cual ya no se va a entrar al For, pues ya se ha encontrado la
respuesta.
Else
tablas21(ciclo, 1) = Val(TextBox2.Text)
'Almacena "a" de la iteración
correspondiente al "ciclo".
tablas21(ciclo, 2) = Val(TextBox2.Text) – 10 ^
(-exponenteparavalorh) 'Almacena
"a-h" de la iteración correspondiente al
"ciclo".
tablas21(ciclo, 3) = mEval.Evaluar(Val(tablas21(ciclo,
1))) 'Almacena "f(a)" de la
iteración correspondiente al "ciclo".
tablas21(ciclo, 4) = mEval.Evaluar(Val(tablas21(ciclo,
2))) 'Almacena "f(a-h)" de la
iteración correspondiente al "ciclo".
tablas21(ciclo, 7) = (tablas21(ciclo, 3) –
tablas21(ciclo, 4)) / 10 ^ (-exponenteparavalorh)
'Almacena "f'(x)=(f(a)-f(a-h))/h"="f'(a)"
de la iteración correspondiente al "ciclo".
tablas21(ciclo, 5) = Math.Abs(Val(tablas21(ciclo, 7))) –
Math.Abs(Val(tablas21(ciclo – 1, 7))) 'Almacena el "Error" de la iteración
correspondiente al "ciclo", que es el valor absoluto de "f'(x)"
de la iteración correspondiente al "ciclo" menos el valor
absoluto de "f'(x)" de la iteración anterior
(correspondiente al ciclo "ciclo – 1").
tablas21(ciclo, 6) = Math.Abs(Val(tablas21(ciclo, 5))) /
Math.Abs(Val(tablas21(ciclo, 7))) * 100 'Almacena el "Error%" de la iteración
correspondiente al "ciclo", que es el valor absoluto del Error de
la iteración correspondiente al "ciclo" entre el valor
absoluto de la iteración correspondiente al ciclo (f'(x))
multiplicado por 100.
If tablas21(ciclo, 5) <
Val(TextBox4.Text) Then
TextBox8.Text = "primera" 'Imprime el
orden de la derivada.
TextBox9.Text = tablas21(ciclo, 7) 'Este valor de respuesta se iría a imprimir en
el TextBox9 como primera derivada de la función
introducida por el usuario.
TextBox10.Text = TextBox4.Text 'Imprime el error utilizado.
ciclo = 50 'Esto
hará que la próxima iteración sea la 51, por
lo cual ya no se va a entrar al For, pues ya se ha encontrado la
respuesta.
End If
exponenteparavalorh += 1 'Equivale a decir: "exponenteparavalorh =
exponenteparavalorh + 1.
End If
Next ciclo
'No es necesario poner "ciclo" en esta
línea, pero tampoco es error sintáctico hacerlo. Es
simplemente opcional según las reglas sintácticas
de Visual Basic
2005.
'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.
AxMSFlexGrid2.ForeColor = Color.Blue 'Cambia el color de letra de todas las celdas a
azul.
With AxMSFlexGrid2
'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
AxMSFlexGrid2
.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)
'For para ponerlo los números
correspondientes a cada iteración desde la fila 2 de la
primera columna hasta la fila 51 de la primera
columna.
For i = 1
To 50
.set_TextMatrix(i, 0, i) 'La sintaxis dentro del paréntesis es: (fila,
columna, valor).
Next i
'Se le ponen los respectivos
títulos a cada columna.
.set_TextMatrix(0, 0, "Iteración")
.set_TextMatrix(0, 1, "a")
.set_TextMatrix(0, 2, "a-h")
.set_TextMatrix(0, 3, "f(a)")
.set_TextMatrix(0, 4, "f(a-h)")
.set_TextMatrix(0, 5, "Error")
.set_TextMatrix(0, 6, "Error%")
.set_TextMatrix(0, 7, "f'(x)")
'Impresiones para primera
iteración.
.set_TextMatrix(1, 1, Math.Round(Val(tablas21(1, 1)),
10)) 'Imprime el valor de "a" de la
primera iteración (con 10 decimales).
.set_TextMatrix(1, 2, Math.Round(Val(tablas21(1, 2)),
10)) 'Imprime el valor de "a-h" de
la primera iteración (con 10 decimales).
.set_TextMatrix(1, 3, Math.Round(Val(tablas21(1, 3)),
10)) 'Imprime el valor de "f(a)" de
la primera iteración (con 10 decimales).
.set_TextMatrix(1, 4, Math.Round(Val(tablas21(1, 4)),
10)) 'Imprime el valor de "f(a-h)"
de la primera iteración (con 10 decimales).
'.set_TextMatrix(1, 5,
Math.Round(Val(tablas21(1, 5)), 10)) 'No hay "Error" en la
primera iteración.
'.set_TextMatrix(1, 6,
Math.Round(Val(tablas21(1, 6)), 10)) 'No hay "Error%" en la
primera iteración porque tampoco hay Error en la primera
iteración.
.set_TextMatrix(1, 7, Math.Round(Val(tablas21(1, 7)),
10)) 'Imprime el valor de
"f'(x)=(f(a)-f(a-h))/h"="f'(a)" de la primera iteración
(con 10 decimales).
'Impresiones para segunda
iteración.
.set_TextMatrix(2, 1, Math.Round(Val(tablas21(2, 1)),
10)) 'Imprime el valor de "a" de la
segunda iteración (con 10 decimales).
.set_TextMatrix(2, 2, Math.Round(Val(tablas21(2, 2)),
10)) 'Imprime el valor de "a-h" de
la segunda iteración (con 10 decimales).
.set_TextMatrix(2, 3, Math.Round(Val(tablas21(2, 3)),
10)) 'Imprime el valor de "f(a)" de
la segunda iteración (con 10 decimales).
.set_TextMatrix(2, 4, Math.Round(Val(tablas21(2, 4)),
10)) 'Imprime el valor de "f(a-h)"
de la segunda iteración (con 10 decimales).
.set_TextMatrix(2, 5, Math.Round(Val(tablas21(2, 5)),
10)) 'Imprime el valor de "Error" de
la segunda iteración (con 10 decimales).
.set_TextMatrix(2, 6, Math.Round(Val(tablas21(2, 6)),
10)) 'Imprime el valor de "Error %"
de la segunda iteración (con 10 decimales).
.set_TextMatrix(2, 7, Math.Round(Val(tablas21(2, 7)),
10)) 'Imprime el valor de
"f'(x)=(f(a)-f(a-h))/h"="f'(a)" de la segunda iteración
(con 10 decimales).
'Impresiones para la tercera
iteración en adelante.
For ciclo
As Integer = 3 To (exponenteparavalorh – 1)
'Se tomará "exponenteparavalorh-1"
como número máximo de iteraciones porque cuando se
iban sacando los valores anteriormente, esa variable contiene el
"número máximo de iteraciones + 1" a que se
llegó y por lo tanto el "número máximo de
iteraciones-1" será el número total de iteraciones
que se tiene que hacer para las impresiones.
.set_TextMatrix(ciclo, 1, Math.Round(Val(tablas21(ciclo,
1)), 10)) 'Imprime el valor de "a"
de la iteración correspondiente a "ciclo" (con 10
decimales).
.set_TextMatrix(ciclo, 2, Math.Round(Val(tablas21(ciclo,
2)), 10)) 'Imprime el valor de "a-h"
de la iteración correspondiente a "ciclo" (con 10
decimales).
.set_TextMatrix(ciclo, 3, Math.Round(Val(tablas21(ciclo,
3)), 10)) 'Imprime el valor de
"f(a)" de la iteración correspondiente a "ciclo" (con 10
decimales).
.set_TextMatrix(ciclo, 4, Math.Round(Val(tablas21(ciclo,
4)), 10)) 'Imprime el valor de
"f(a-h)" de la iteración correspondiente a "ciclo" (con 10
decimales).
.set_TextMatrix(ciclo, 5, Math.Round(Val(tablas21(ciclo,
5)), 10)) 'Imprime el valor de
"Error" de la iteración correspondiente a "ciclo" (con 10
decimales).
.set_TextMatrix(ciclo, 6, Math.Round(Val(tablas21(ciclo,
6)), 10)) 'Imprime el valor de
"Error%" de la iteración correspondiente a "ciclo" (con 10
decimales).
.set_TextMatrix(ciclo, 7, Math.Round(Val(tablas21(ciclo,
7)), 10)) 'Imprime el valor de
"f'(x)=(f(a)-f(a-h))/h"="f'(a)" de la iteración
correspondiente a "ciclo" (con 10 decimales).
Next ciclo
'No es necesario poner "ciclo" en esta
línea, pero tampoco es error sintáctico hacerlo. Es
simplemente opcional según las reglas sintácticas
de Visual Basic 2005.
End With
End If
End If
'CASO 22. SEGUNDA DERIVADA POR
FÓRMULAS DE ALTA PRECISIÓN HACIA
ATRÁS.
If (ComboBox1.SelectedItem
= "Fórmulas de Alta
Precisión Hacia Atrás")
And (ComboBox2.SelectedItem
= "2da.
derivada") Then
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.
AxMSFlexGrid2.Rows = 2 'Establece 2 filas.
AxMSFlexGrid2.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.
With AxMSFlexGrid2
'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.
For fila
As Integer = 0 To .Rows – 1
With
AxMSFlexGrid2
.Row = fila
For columna
As Integer = 0 To .Cols – 1
.set_TextMatrix(fila, columna, "") 'Por
estar dentro de los For anidados, con esto se ponen valores
String Empty en todas las celdas, de modo que no aparezca nada y
queden todas las celdas limpias y sin resultados de
cálculos hechos anteriormente.
Next
End With
Next
End With
'Se comienzan a hacer los
cálculos.
'Valores para la fila de
resultados.
tablas17(1, 1) = Val(TextBox2.Text) 'Almacena "a".
tablas17(1, 2) = Val(TextBox2.Text) –
Val(TextBox3.Text) 'Almacena
"a-h".
tablas17(1, 3) = Val(TextBox2.Text) – (2 *
Val(TextBox3.Text)) 'Almacena
"a-2h".
tablas17(1, 4) = mEval.Evaluar(Val(tablas17(1,
1))) 'Almacena "f(a)".
tablas17(1, 5) = mEval.Evaluar(Val(tablas17(1,
2))) 'Almacena "f(a-h)".
tablas17(1, 6) = mEval.Evaluar(Val(tablas17(1,
3))) 'Almacena "f(a-2h)".
tablas17(1, 7) = (tablas17(1, 6) – (2 * tablas17(1, 5))
+ tablas17(1, 4)) / (Val(TextBox3.Text) ^ (2))
'Almacena
"(f(a)-2f(a-h)+f(a-2h))/h^2"="f''(x)".
TextBox8.Text = "segunda" 'Imprime el
orden de la derivada.
TextBox9.Text = tablas17(1, 7) 'Este valor de respuesta se iría a imprimir en
el TextBox8 como segunda derivada de la función
introducida por el usuario.
TextBox10.Text = TextBox3.Text 'Imprime el error utilizado.
'Para indicar que se realizarán
operaciones con el objeto AxMSFlexGrid2
'sin necesidad de escribir su
nombre.
'De aquí en adelante vienen las
impresiones de los valores en las celdas
correspondientes.
AxMSFlexGrid2.ForeColor = Color.Blue 'Cambia el color de letra de todas las celdas a
azul.
With AxMSFlexGrid2
'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
AxMSFlexGrid2
.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, 1, "a") 'Imprime
"a".
.set_TextMatrix(0, 2, "a-h") 'Imprime "a-h".
.set_TextMatrix(0, 3, "a-2h)") 'Imprime "a-2h".
.set_TextMatrix(0, 4, "f(a)") 'Imprime "f(a)".
.set_TextMatrix(0, 5, "f(a-h)") 'Imprime "f(a-h)".
.set_TextMatrix(0, 6, "f(a-2h)") 'Imprime "f(a-2h)".
.set_TextMatrix(0, 7, "f''(x)") 'Imprime "f''(x)=(f(a)-2f(a-h)+f(a-2h))/h^2"
'Impresiones para la fila de
resultados.
.set_TextMatrix(1, 1, Math.Round(Val(tablas17(1, 1)),
10)) 'Imprime el valor de "a" (con
10 decimales).
.set_TextMatrix(1, 2, Math.Round(Val(tablas17(1, 2)),
10)) 'Imprime el valor de "a-h" (con
10 decimales).
.set_TextMatrix(1, 3, Math.Round(Val(tablas17(1, 3)),
10)) 'Imprime el valor de "a-2h"
(con 10 decimales).
.set_TextMatrix(1, 4, Math.Round(Val(tablas17(1, 4)),
10)) 'Imprime el valor de "f(a)"
(con 10 decimales).
.set_TextMatrix(1, 5, Math.Round(Val(tablas17(1, 5)),
10)) 'Imprime el valor de "f(a-h)"
(con 10 decimales).
.set_TextMatrix(1, 6, Math.Round(Val(tablas17(1, 6)),
10)) 'Imprime el valor de "f(a-2h)"
(con 10 decimales).
.set_TextMatrix(1, 7, Math.Round(Val(tablas17(1, 7)),
10)) 'Imprime el valor de
"f''(x)=(f(a)-2f(a-h)+f(a-2h))/h^2" (con 10
decimales).
End With
End If
End If
'CASO 23. TERCERA DERIVADA POR
FÓRMULAS DE ALTA PRECISIÓN HACIA
ATRÁS.
If (ComboBox1.SelectedItem
= "Fórmulas de Alta
Precisión Hacia Atrás")
And (ComboBox2.SelectedItem
= "3ra.
derivada") Then
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.
AxMSFlexGrid2.Rows = 2 'Establece 2 filas.
AxMSFlexGrid2.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.
With AxMSFlexGrid2
'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.
For fila
As Integer = 0 To .Rows – 1
With
AxMSFlexGrid2
.Row = fila
For columna
As Integer = 0 To .Cols – 1
.set_TextMatrix(fila, columna, "") 'Por
estar dentro de los For anidados, con esto se ponen valores
String Empty en todas las celdas, de modo que no aparezca nada y
queden todas las celdas limpias y sin resultados de
cálculos hechos anteriormente.
Next
End With
Next
End With
'Se comienzan a hacer los
cálculos.
'Valores para la fila de
resultados.
tablas23(1, 1) = Val(TextBox2.Text) 'Almacena "a".
tablas23(1, 2) = Val(TextBox2.Text) –
Val(TextBox3.Text) 'Almacena
"a-h".
tablas23(1, 3) = Val(TextBox2.Text) – (2 *
Val(TextBox3.Text)) 'Almacena
"a-2h".
tablas23(1, 4) = Val(TextBox2.Text) – (3 *
Val(TextBox3.Text)) 'Almacena
"a-3h".
tablas23(1, 5) = mEval.Evaluar(Val(tablas23(1,
1))) 'Almacena "f(a)".
tablas23(1, 6) = mEval.Evaluar(Val(tablas23(1,
2))) 'Almacena "f(a-h)".
tablas23(1, 7) = mEval.Evaluar(Val(tablas23(1,
3))) 'Almacena "f(a-2h)".
tablas23(1, 8) = mEval.Evaluar(Val(tablas23(1,
4))) 'Almacena "f(a-3h)".
tablas23(1, 9) = (tablas23(1, 5) – (3 * tablas23(1, 6))
+ (3 * tablas23(1, 7)) – tablas23(1, 8)) / (Val(TextBox3.Text) ^
(3)) 'Almacena
"(f(a)-3f(a-h)+3f(a-2h)-f(a-3h))/h^3"="f'''(x)".
TextBox8.Text = "tercera" 'Imprime el
orden de la derivada.
TextBox9.Text = tablas23(1, 9) 'Este valor de respuesta se iría a imprimir en
el TextBox8 como tercera derivada de la función
introducida por el usuario.
TextBox10.Text = TextBox3.Text 'Imprime el error utilizado.
'Para indicar que se realizarán
operaciones con el objeto AxMSFlexGrid2
'sin necesidad de escribir su
nombre.
'De aquí en adelante vienen las
impresiones de los valores en las celdas
correspondientes.
AxMSFlexGrid2.ForeColor = Color.Blue 'Cambia el color de letra de todas las celdas a
azul.
With AxMSFlexGrid2
'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.
Página anterior | Volver al principio del trabajo | Página siguiente |