Está en la página 1de 7

LABORATORIO 8 Diferenciación Numérica

.FORMULAS DE DIFERENCIAS DIVIDIDAS FINITAS HACIA ADELANTE.

SE PRESENTAN DOS VERSIONES PARA CADA DERIVADA. LA SEGUNDAFORMA INCLUYE MAS


TERMINOS DE LA SERIE DE TAYLOR Y, POR LO TANTO ES MAS EXACTA.
FORMULAS DE DIFERENCIAS FINITAS CENTRALES. SE PRESENTAN DOS
VERSIONES PARA CADA DERIVADA. LA SEGUNDA FORMA INCLUYE MAS
TERMINOS DE LA SERIE DE TAYLOR POR LO TANTO ES MAS EXACTA.
.
I. OBJETIVO

 Aplicar los métodos de diferenciación numerica en una serie de datos.


 Emplear el Visual Basic para el desarrollo Métodos de Diferenciación por
diferencias finitas , por serie de Taylor, por Richardson

II. MATERIALES

1. Computadora con Windows 98 o +


2. Visual Studio 2013

III. PROCEDIMIENTO
Considere la siguiente serie de datos:
1. Asigne las siguientes propiedades a los controles
Control Propiedad Valor

Data GridView Nombre A

Command Nombre Btncalcular


Text Calcular por diferencias
divididas

Command Nombre Btncalcular1


Text Calcular por series de Taylor

Label Nombre Lblvalor


Text Valor aproximado de la integral
TextBox Nombre Txtx
Text
TextBox Nombre Txth
Text
TextBox Nombre Txtad
Text
TextBox Nombre Txtat
Text
TextBox Nombre Txtcen
Text
2. Declare 2 vectores x, y cada uno con 3 elementos que alberguen datos de tipo Real de
doble precision, para lo cual introduzca la siguiente instruccion en su ventana codigo
Dim x(2), y(2) As Double
3. Desarrolle el codigo necesario para que al cargar el formulario aparezca en el
DataGridView A los datos de la tabla (haga doble clicK en el formulario y asigne el
siguiente código:

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load


A.Rows.Add(6)
A.Rows(0).Cells(0).Value = "v(cm^3)"
A.Rows(0).Cells(1).Value = "P(atm)"
A.Rows(1).Cells(0).Value = 1800
A.Rows(2).Cells(0).Value = 2000
A.Rows(3).Cells(0).Value = 2200
A.Rows(4).Cells(0).Value = 2400
A.Rows(5).Cells(0).Value = 2600
A.Rows(1).Cells(1).Value = 15.277
A.Rows(2).Cells(1).Value = 13.782
A.Rows(3).Cells(1).Value = 12.577
A.Rows(4).Cells(1).Value = 11.565
A.Rows(5).Cells(1).Value = 10.704

End Sub
4. Ejecute la aplicación

5. Detenga la ejecución

6. Calcule la derivada por el metodo de las diferencias divididas asocie un procedimiento al


evento click del btncalcular
7.1 Ingrese el ancho de paso (h) en un txth y asignelo a una variable h
7.2 Ingrese el punto donde se debe calcular la derivada (x) en un txth y asignelo a
una variable x
7.3 Busque en la tabla si existe el valor x en la columna de v (guárdelo en el vector x
como el elemento x(1), asi como el correspondiente valor de P como el elemento
y(1))
7.4 Busque en la tabla si existe el valor x-h en la columna de v (guárdelo en el vector
x como el elemento x(0), asi como el correspondiente valor de P como el
elemento y(0))
7.5 Busque en la tabla si existe el valor x+h en la columna de v (guárdelo en el vector
x como el elemento x(2), asi como el correspondiente valor de P como el
elemento y(2))

Private Sub calcular_Click(sender As Object, e As EventArgs) Handles calcular.Click


Dim h, v As Double
h = Val(txth.Text)
v = Val(txtx.Text)

For i = 1 To 5
If A.Rows(i).Cells(0).Value = v Then
x(1) = A.Rows(i).Cells(0).Value
y(1) = A.Rows(i).Cells(1).Value
End If
Next
For i = 1 To 5
If A.Rows(i).Cells(0).Value = v - h Then
x(0) = A.Rows(i).Cells(0).Value
y(0) = A.Rows(i).Cells(1).Value
End If
Next
For i = 1 To 5
If A.Rows(i).Cells(0).Value = v + h Then
x(2) = A.Rows(i).Cells(0).Value
y(2) = A.Rows(i).Cells(1).Value
End If
Next
7. Desarrolle el codigo necesario para que si no esta el valor x en la tabla imprima “el valor
ingresado no esta dentro de la tabla “
8. Si hay valor de x y x-h calcule la derivada hacia atrás
9. Si hay valor de x y x+h calcule la derivada hacia adelante
10. Si hay valor de x –h y x+h calcule la derivada centrada

If x(1) = Nothing Then


txtx.Text = "el valor ingresado no esta dentro de la tabla"
Else
If x(0) <> Nothing Then
txtat.Text = (y(1) - y(0)) / h
Else
txtat.Text = "no hay datos para calcular derivada hacia atras"
End If
If x(2) <> Nothing Then
txtad.Text = (y(2) - y(1)) / h
Else
txtad.Text = "no hay datos para calcular derivada hacia adelante"
End If
If x(0) <> Nothing And x(2) <> Nothing Then
txtcen.Text = (y(2) - y(0)) / (2*h)
Else
txtcen.Text = "no hay datos para calcular derivada hacia centrada"
End If
End If
End Sub
End Class