domingo, 20 de julio de 2014

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
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: