Interpolador lineal en Visual Basic 2013
Hola que tal programadores, retomando un poco las clases de ingenieria, se me ocurrio realizar esta app que para muchos estudiantes y profesionales en las areas de la ingenieria no pasa desapercibido. Bueno como dice el tema esta vez vamos a realizar un interpolador de tipo lineal, y tomando información de la pag web: http://carmesimatematic.webcindario.com/interpolacion%20lineal.htm decidi implementarlo y que sirva para futuros cálculos en nuestra vida estudiantil o laboral.
Como dice la teoria:
En numerosos fenómenos de
la naturaleza observamos una cierta regularidad en la forma de producirse, esto
nos permite sacar conclusiones de la marcha de un fenómeno en situaciones que
no hemos medido directamente.
La interpolación consiste
en hallar un dato dentro de un intervalo en el que conocemos los valores en los
extremos.
La extrapolación consiste
en hallar un dato fuera del intervalo conocido, pero debe tenerse en cuenta que
esté próximo a uno de sus extremos, pues en otro caso no es muy fiable el
resultado obtenido.
Planteamiento general
El problema general de la
interpolación se nos presenta cuando nos dan una función de la cual solo
conocemos una serie de puntos de la misma:
(xo,
yo), (x1, y1),........., (xn, yn)
y se pide
hallar el valor de un punto x (intermedio de x0 y xn) de
esta función.
El de la extrapolación
cuando el punto que queremos considerar está a la derecha de xn o a
la izquierda de xo.
Se desea, por tanto encontrar
una función cuya gráfica pase por esos puntos y que nos sirva para estimar
los valores deseados.
El tratamiento para ambos
problemas es similar se utilizarán los polinomios “interpoladores”, pero en el
caso de la extrapolación el punto debe estar muy próximo a uno de los extremos.
Interpolación lineal
Como dijimos, cuando las
variaciones de la función son proporcionales (o casi proporcionales) a los de
la variable independiente se puede admitir que dicha función es lineal y usar
para estimar los valores la interpolación lineal..
Sean dos puntos (xo,
yo), (x1, y1), la interpolación lineal
consiste en hallar una estimación del valor y, para un valor x tal que x0<x<x1.
Teniendo en cuenta que la ecuación de la recta que pasa por esos dos puntos hallamos
la fórmula de la interpolación lineal.
Ahora la implementacion en VB
Public Class Form1
Dim interp, xbuscado As Double
Private Sub cmdcalcularinterp_Click(sender As Object, e As EventArgs) Handles cmdcalcularinterp.Click
Try
Dim xinicia, xfinaliza, xbuscado, yinicia, yfinaliza As Double
'Asigno parametros a variables
xinicia = xinicial.Text
xfinaliza = xfinal.Text
yinicia = yinicial.Text
yfinaliza = yfinal.Text
xbuscado = txtxbuscado.Text
' tamaño_paso = hpaso.Text
interp = interpolar(xinicia, xfinaliza, xbuscado, yinicia, yfinaliza)
txtresult.Text = interp
Catch ex As Exception
MsgBox(ex.ToString)
End Try
End Sub
' funcion para interpolar
Function interpolar(ByVal xo As Double, x1 As Double, ByVal x As Double, yo As Double, y1 As Double) As Double
interpolar = yo + ((y1 - yo) / (x1 - xo)) * (x - xo)
Return interpolar
End Function
Private Sub xinicial_KeyPress(sender As Object, e As KeyPressEventArgs) Handles yinicial.KeyPress, yfinal.KeyPress, xinicial.KeyPress, xfinal.KeyPress, txtxbuscado.KeyPress, txtresult.KeyPress
If e.KeyChar = "."c Then
e.Handled = True
SendKeys.Send(",")
End If
If e.KeyChar = ChrW(Keys.Enter) Then
e.Handled = True
SendKeys.Send("{TAB}")
End If
End Sub
End Class
Dim interp, xbuscado As Double
Private Sub cmdcalcularinterp_Click(sender As Object, e As EventArgs) Handles cmdcalcularinterp.Click
Try
Dim xinicia, xfinaliza, xbuscado, yinicia, yfinaliza As Double
'Asigno parametros a variables
xinicia = xinicial.Text
xfinaliza = xfinal.Text
yinicia = yinicial.Text
yfinaliza = yfinal.Text
xbuscado = txtxbuscado.Text
' tamaño_paso = hpaso.Text
interp = interpolar(xinicia, xfinaliza, xbuscado, yinicia, yfinaliza)
txtresult.Text = interp
Catch ex As Exception
MsgBox(ex.ToString)
End Try
End Sub
' funcion para interpolar
Function interpolar(ByVal xo As Double, x1 As Double, ByVal x As Double, yo As Double, y1 As Double) As Double
interpolar = yo + ((y1 - yo) / (x1 - xo)) * (x - xo)
Return interpolar
End Function
Private Sub xinicial_KeyPress(sender As Object, e As KeyPressEventArgs) Handles yinicial.KeyPress, yfinal.KeyPress, xinicial.KeyPress, xfinal.KeyPress, txtxbuscado.KeyPress, txtresult.KeyPress
If e.KeyChar = "."c Then
e.Handled = True
SendKeys.Send(",")
End If
If e.KeyChar = ChrW(Keys.Enter) Then
e.Handled = True
SendKeys.Send("{TAB}")
End If
End Sub
End Class
Una captura
El limite inferior x0; el limite superior x1; el valor buscado x; el valor dependiente de x0 -->y0
; el valor dependiente para x1--> y1; y por ultimo (y) es el valor obtenido de la interpolacion del valor buscado x
Bien y eso es todo cualquier pregunta o sugerencia a mi email : jossm04@gmail.com
Mi ejemplo link:
te amo
ResponderEliminar