Você está na página 1de 24

UNIVERSIDAD CENTRAL DEL ECUADOR

PROYECTO DE PROGRAMACIN

CHURITOS Y ASOCIADOS
MTODO DE BSQUEDA POR INTERPOLACIN
Primero Ing. En Informtica
Paralelo 10

AUTORES:

Paul Alejandro Prado Rodriguez

Alex Israel Lamchimba Ashqui

Dennis Daniel Quispe Tenemasa

Carlos Andres Hernandez Molina

Josselyn Andrea Moreira Ortiz.

TUTOR:
Ing. Wagner Lucero

QUITO ECUADOR

AGRADECIMIENTO

Agradecemos a nuestro tutor por su dedicada orientacin en el desarrollo


del presente trabajo investigativo; por impulsar nuestra formacin
profesional quien con su experiencia han aportado y puesto a prueba
nuestra capacidad de respuesta en la resolucin de problemas, fortaleciendo
nuestro desempeo en el desarrollo de este nuevo proyecto el cual se ha
finalizado llenando todas expectativas. A los docentes, estudiantes, y
personal en general que labora en la UCE, de la ciudad de Quito por la
colaboracin brindada para la realizacin de la investigacin de campo, sin
ms acotaciones que hacer gracias a quienes nos ayudaron en todo
momento.

Mtodo de bsqueda por interpolacin Pgina - 1

DEDICATORIA

A nuestros familiares por su apoyo y comprensin, motivo de nuestras


noches de desvelo, y el deseo de superacin por alcanzar el ingreso a la
universidad; as poder continuar con nuestros estudios.
Especialmente a Dios y a nuestros padres. A Dios porque ha estado con
nosotros en cada accin que realizamos, cuidndonos y brindndonos
fortaleza para continuar.
A nuestros padres, quienes a lo largo de nuestra vida han velado por el
bienestar y

la educacin siendo base fundamental su apoyo en todo

momento. Depositando su entera confianza sin dudar ni un instante en


nuestra inteligencia y capacidad de emprendimiento.

Mtodo de bsqueda por interpolacin Pgina - 2

RESUMEN

El presente Proyecto de Programacin con el correspondiente tema: MTODO DE


BSQUEDA POR INTERPOLACIN. Se realiza en la ciudad de Quito.
El diseo del proyecto se presentara como eje para articular la investigacin y desarrollo de
un mtodo de bsqueda que permita la rpida localizacin de un elemento dado dentro de
una estructura de datos o determinar su inexistencia.
Durante las ltimas clases hemos estudiado distintos mtodos de ordenacin de vectores;
pudiendo adaptarse dichos mtodos a otras estructuras de datos. Naturalmente, la bsqueda
ser mucho ms eficiente si la estructura de datos (en nuestro caso el vector) est ordenada.
As, los algoritmos que estudiaremos servirn para realizar bsquedas en vectores
ordenados.

INDICE
Mtodo de bsqueda por interpolacin Pgina - 3

ndice de Contenidos
RESUMEN.................................................................................................................
INDICE.....................................................................................................................
INTRODUCCIN........................................................................................................
2. Objetivos................................................................................................................
2.1

Objetivo General......................................................................................... 6

2.2

Objetivos especficos.................................................................................... 6

3. Desarrollo...............................................................................................................
3.1 Bsqueda por interpolacin................................................................................. 7
3.2 Ventajas de la tcnica......................................................................................... 7
3.3 Desventajas de la tcnica.................................................................................... 8
3.4 Principales Aplicaciones..................................................................................... 8
4.1 MTODO DE BSQUEDA DE INTERPOLACIN EN VISUAL BASIC......................9
4.2 MTODO DE BSQUEDA DE INTERPOLACIN EN C++...................................10
4.3 MTODO DE BSQUEDA DE INTERPOLACIN EN JAVA..................................12
5. Conclusiones..........................................................................................................
6. Recomendaciones....................................................................................................
7. Bibliografa...........................................................................................................

Mtodo de bsqueda por interpolacin Pgina - 4

INTRODUCCIN

Una tabla o un archivo es un grupo de elementos, cada uno de los cuales se llama registro.
Hay una llave asociada a cada registro, que se usa para diferenciar unos de otros. La
asociacin entre un registro y su llave puede ser simple o compleja. En la forma ms
simple, la llave est contenida dentro del registro en un tramo a una distancia especfica del
principio del mismo. Una llave de ese tipo es la llave interna o incluida.
En este trabajo, se vern las tcnicas de bsqueda por interpolacin. En la que se
mencionan su descripcin, sus ventajas/desventajas, y algunas aplicaciones, por supuesto
tambin se eran sus respectivos algoritmos, pero que es un algoritmo de bsqueda?.
Un algoritmo de bsqueda es un algoritmo que acepta un argumento a y trata de encontrar
un registro cuya llave sea a. El algoritmo puede dar como resultado el registro entero o, lo
que es ms comn, un apuntador a dicho registro.
Si la bsqueda es infructuosa, con mucha frecuencia, es deseable agregar un nuevo registro
con dicho argumento como llave. Un algoritmo que haga esto se le llama tabla bsqueda o
diccionario.
La bsqueda en la cual toda la tabla esta de manera frecuente en la memoria principal se le
llama bsqueda interna, mientras que la bsqueda en la que la mayor parte de la table est
en la memoria auxiliar se llama bsqueda externa.

Mtodo de bsqueda por interpolacin Pgina - 5

2. Objetivos
2.1 Objetivo General
Aplicar los conocimientos aprendidos durante la presente investigacin para as
poder inducirlos a la prctica durante la materia de programacin y toda nuestra
carrera.

2.2 Objetivos especficos


2.2.1
2.2.2
2.2.3

Investigar distintos tipos de mtodos de bsqueda enfocndonos


especficamente en el mtodo de bsqueda por interpolacin
Analizar estadsticas concretas que nos muestren la utilidad y
eficacia de este mtodo
Incorporar la informacin aprendida a nuestros mtodos de estudio
en la materia de programacin

Mtodo de bsqueda por interpolacin Pgina - 6

3. Desarrollo
3.1 Bsqueda por interpolacin
El algoritmo de bsqueda binaria siempre selecciona el elemento central del vector para
compararlo con el elemento a buscar y dividir el vector.
Es posible realizar una modificacin a este algoritmo de tal forma que el elemento
seleccionado no sea el central sino aquel que se correspondera con el elemento buscado
si la distribucin de valores en el vector fuera uniforme.
Este mtodo se puede aplicar solamente a tablas o archivos ordenados. Como su nombre lo
indica se trata de llegar al elemento buscado por medio de la interpolacin lineal. El
procedimiento es recursivo; como en el caso de la bsqueda binaria, en cada paso se van
modificando los lmites, disminuyendo el intervalo, hasta llegar al elemento buscado.
Si se determina que la clave buscada XX se encuentra dentro del intervalo INTABLA de la
tabla, y que la variacin en ese intervalo de la clave es INCLAVE, la siguiente posicin a
probar es:
PX = PI + ENTERO ((XX-XI) * (INTABLA / INCLAVE))
El algoritmo es similar al de bsqueda binaria, la diferencia est en que en vez de dividir el
rea en mitades, se delimita por medio de los valores resultantes de la interpolacin.
En bsqueda binaria el espacio se corta siempre adentro a medias, las garantas de lo que
desea el funcionamiento logartmico. Sin embargo, durante la bsqueda encontramos un
valor que est muy cerca del nmero z de la bsqueda, parece ms razonable continuar la
bsqueda en esa rea en vez de ocultar e ir a la media punta siguiente.

3.2 Ventajas de la tcnica.


La bsqueda de interpolacin, es una bsqueda mucho mejor que la binaria en la prctica
porque, a menos que no sea muy grande, el valor de log2n es bastante pequeo que el
logaritmo de l no es mucho ms pequeo.
Incluso a pesar de que el clculo es de algn modo ms complejo, una bsqueda con
interpolacin puede proporcionar una mejora importante a nuestra bsqueda binaria en
grandes conjuntos de datos con claves distribuidas de modo uniforme.

Mtodo de bsqueda por interpolacin Pgina - 7

3.3 Desventajas de la tcnica.


La bsqueda de la interpolacin requiere una aritmtica ms elaborada, a parte que los
clculos que se necesitan para esta bsqueda son muy lentos.
Para lograr esta bsqueda se requieren llaves, multiplicaciones y divisiones complejas, es
decir, clculos de nivel alto.

3.4 Principales Aplicaciones.


En aplicaciones matemticas donde se busquen aproximaciones de alguna ecuacin, se
utiliza este mtodo pero sin su recursividad solo hace su primera para conseguir las
aproximaciones.
Tambin tiene las mismas aplicaciones que la bsqueda binaria ya que son casi iguales.

Mtodo de bsqueda por interpolacin Pgina - 8

4. PRCTICA
4.1 MTODO DE BSQUEDA DE INTERPOLACIN EN VISUAL BASIC
Sub Interpolacion()
Range("A1:G100").Select 'Estos dos comandos permiten borrar los datos que halla en la hoja de
Excel'
Selection.ClearContents
Cells(1, 1) = ("ITERACIONES") 'Esta sentencia permite asignar a una celda un nombre, en este
caso a la celda (1,1) se le da el nombre de Iteracin'
Cells(1, 2) = ("FUNCIN")
Cells(1, 3) = ("Xo")
Cells(1, 4) = ("X1")
Cells(1, 5) = ("Xm")
Cells(1, 6) = ("Ym")
Cells(1, 7) = ("ERROR")
Range("A1:G1").Font.Bold = True 'La propiedad Font.Bold pone en negrita las celdas desde A1 a
G1'
Columns("A").ColumnWidth = 12 'La propiedad ColumnWidth permite asiganrle el ancho deseado
a una columna'
Columns("B").ColumnWidth = 33
Columns("C").ColumnWidth = 6
Columns("D").ColumnWidth = 6
Columns("E").ColumnWidth = 6
Columns("F").ColumnWidth = 6
Columns("G").ColumnWidth = 8
Dim iteraciones As Double, Xo As Double, X1 As Double, Tolerancia As Double, Yo As Double,
Y1 As Double
'El Double permite usar toda la capacidad del computador'
iteraciones = InputBox("INGRESE EL NMERO DE ITERACIONES")
Mtodo de bsqueda por interpolacin Pgina - 9

'Inputbox permite que el usuario ingrese datos '


Func = InputBox("INGRESE LA FUNCIN")
Cells(2, 2) = Func 'Celda donde debe ser almacenado la funcin ingresada'
Xo = InputBox("INGRESE LIMITE INFERIOR")
Cells(2, 3) = Xo
X1 = InputBox("INGRESE LIMITE SUPERIOR")
Cells(2, 4) = X1
Tol = Val(InputBox("INGRESE LA TOLERANCIA DESEADA"))
Yo = Func
x = Xo 'Esto se hace para que el valor inicial sea reemplazado en la funcin y por tanto para que
pueda ser evaluada'
Yo = (Exp(-x ^ 2 + 2) - x * Sin(2 * x + 3) + 1) 'Funcin evaluada'
y = X1
Y1 = (Exp(-y ^ 2 + 2) - y * Sin(2 * y + 3) + 1)
If Yo = 0 Then
MsgBox ("Xo (" & Xo & ") ES UNA RAZ") '" & variable&" pemite mostrar el valor asignado a
la variable '
Else
If Y1 = 0 Then 'If ejecuta las ordenes que se le dan mientras estas sean verdaderas, en este caso
miramos si la funcin evaluada es una raz'
MsgBox ("X1 (" & X1 & ") ES UNA RAZ")
Else
If Yo * Y1 > 0 Then 'Con esta instruccin se puede saber si la funcin tiene algun cambio de signo
en el intervalo para saber si hay una raz'
MsgBox ("NO EXISTE LA RAZ")
Else
Xm = (Xo + X1) / 2 'Con esta instruccin se reduce el tamao del intervalo inicial en el cual se
buscar la raz, hallando su punto medio'

Mtodo de bsqueda por interpolacinPgina - 10

Ym = 2 * Xm - 186 'Se evalua la funcin inicial con el nuevo punto medio (Xm) hallado en el
paso anterior'
E = Tol + 1 'Condicin que asegura que el programa se ejecute mientras se cumplan las
condiciones '
Cont = 1
Range("A" & Cont + 1) = Cont 'Esta instruccin ubica en la columna A de la hoja de Excel la
iteracin que se acaba de realizar'
Range("E" & Cont + 1) = Xm
Range("F" & Cont + 1) = Ym
While Ym <> 0 And E > Tol And Cont < iteraciones 'La instruccin While permite ejecutar todas
las ordenes asignadas siempre y cuando estas seas verdaderas'
Aux = Xm 'Aux(Auxiliar) permite almacenar el valor de un variable que se necesitar luego'
If Yo * Ym < 0 And X1 = Xm And Y1 = Ym Then
Xo = Xm 'Con las cuatro instrucciones siguientes se busca establecer un nuevo Xo o X1 de
acuerdo al lado del intervalo donde se encuentre la raz'
Yo = Ym 'La raz se encuentra al lado derecho de la divisin del intervalo'
Else
X1 = Xm 'La raz se encuentra al lado izquierdo de la divisin del intervalo'
Y1 = Ym
End If
Xm = (Xo + X1) / 2 'Se hallan nuevamente el punto medio'
Ym = (Exp(-x ^ 2 + 2) - x * Sin(2 * x + 3) + 1) 'Se evalua la funcin inicial para el nuevo punto
medio'
E = Abs(Xm - Aux) 'Se calcula el error absoluto, trayendo el valor anterior de Xm guardado en
aux'
Cont = Cont + 1
Range("A" & Cont + 1) = Cont
Range("C" & Cont + 1) = Xo
Range("D" & Cont + 1) = X1

Mtodo de bsqueda por interpolacinPgina - 11

Range("E" & Cont + 1) = Xm


Range("F" & Cont + 1) = Ym
Range("G" & Cont + 1) = E
Wend
If Ym = 0 Then
MsgBox ("Xm (" & Xm & ") ES UNA RAZ")
Else
If E < Tol Then
MsgBox ("Xm (" & Xm & ")es una Raz con error de (" & E & ")")
Else
MsgBox ("NO HAY RAZ")
End If
End If
End If
End If
End If
End Sub

4.2 MTODO DE BSQUEDA DE INTERPOLACIN EN C++


#define MEDIO (x) ( ((x) + 1)/2 )
#define NO_ ENCONTRADO -1
int bus_inter (int datos [], int tamao, int clave)
{
int delta,mitad;
delta =tamao / 2;
while (clave = datos[mitad] )

Mtodo de bsqueda por interpolacinPgina - 12

{
if (delta ==0)
{
return (NO_ENCONTRADO);
}
Else
{
if(clave>datos[mitad]);
{
mitad + = medio (delta);
}
Else
{
mitad -= MEDIO (delta);
delta=delta/2;
}
}
}
return (mitad);
}

Mtodo de bsqueda por interpolacinPgina - 13

Inicio
Interpolacin

Dim iteraciones As Double, Xo


As Double, X1 As Double,
Tolerancia As Double, Yo As
Double, Y1 As Double

Diagrama de Flujo

("INGRESE LA FUNCIN")
Funcion
("INGRESE LIMITE INFERIOR")

Fin
Interpolacin

Limite inferior
("INGRESE LIMITE SUPERIOR")

MsgBox ("NO HAY RAZ")

Limite superior
Else
("INGRESE LA TOLERANCIA
DESEADA")

E < Tol Then


MsgBox ("Xm (" & Xm &
")es una Raz con error de ("
& E & ")")

Tolerancia
Yo = (Exp(-x ^ 2 + 2) - x *
Sin(2 * x + 3) + 1)
'Funcin evaluada'

Else
If

y = X1
Y1 = (Exp(-y ^ 2 + 2) - y
* Sin(2 * y + 3) + 1)
If Yo = 0 Then

Ym = 0 Then
MsgBox ("Xm ("
& Xm & ") ES UNA
RAZ")

If Yo * Y1 > 0 Then

If
MsgBox ("Xo (" &
Xo & ") ES UNA
RAZ")

MsgBox ("NO
EXISTE LA RAZ")
While

0 And E >
Mtodo de bsqueda Ym
por <>
interpolacinPgina
- 14
Tol And Cont <
iteraciones

If

Xo = Xm
Yo = Ym
Else
X1 =
Xm
Y1 =
Yo * Ym < 0 And X1
= Xm And Y1 = Ym

4.3 MTODO DE BSQUEDA DE INTERPOLACIN EN JAVA


package interpolacion;
import javax.swing.*;
/**
* @author Andres Hernandez
*/
public class Interpolacion {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
double x0,im0,de0;
double x1,im1,de1;
double x2,im2,de2;
double apr;
JOptionPane.showMessageDialog(null,"Busqueda por Interpolacon");
apr=Double.parseDouble(JOptionPane.showInputDialog("Por favor digite la
aproximacion"));
x0=Double.parseDouble(JOptionPane.showInputDialog("Por favor digite X0"));
im0=Double.parseDouble(JOptionPane.showInputDialog("Por favor digite la imagen de
f(X0)"));
de0=Double.parseDouble(JOptionPane.showInputDialog("Por favor digite la imagen de
f'(X0)"));
x1=Double.parseDouble(JOptionPane.showInputDialog("Por favor digite X1"));
im1=Double.parseDouble(JOptionPane.showInputDialog("Por favor digite la imagen de
f(X1)"));
de1=Double.parseDouble(JOptionPane.showInputDialog("Por favor digite la imagen de
f'(X1)"));
x2=Double.parseDouble(JOptionPane.showInputDialog("Por favor digite X2"));
im2=Double.parseDouble(JOptionPane.showInputDialog("Por favor digite la imagen de
f(X2)"));
de2=Double.parseDouble(JOptionPane.showInputDialog("Por favor digite la imagen de
f'(X2)"));
double abajo,xx,x,ind;
//cocientes de L20
double abajo1,xx1,x11,ind1;
//cocientes de L21
double abajo2,xx2,x22,ind2;
//cocientes de L22
abajo = (x0-x1)*(x0-x2);
abajo1 = (x1-x0)*(x1-x2);
abajo2 = (x2-x0)*(x2-x1);
xx = 1 / abajo;
xx1 = 1 / abajo1;
xx2 = 1 / abajo2;
x = ((x1+x2)*(-1))/abajo;
x11 = ((x0+x2)*(-1))/abajo1;
x22 = ((x0+x1)*(-1))/abajo2;
Mtodo de bsqueda por interpolacinPgina - 15

ind = (x1*x2)/abajo;
ind1 = (x0*x2)/abajo1;
ind2 = (x0*x1)/abajo2;
double an,h20n;
an=1-2*(apr-x0)*((xx*2)*x0+x);
h20n=(((xx)*(apr*apr)) + (x*apr) + ind)*(((xx)*(apr*apr)) + (x*apr) + ind);
double h21an,h21n;//variables para angular y normal
h21an=1 - 2 * (apr - x1) * ((xx1*2)*x1 + x11);
h21n=(((xx1) * (apr * apr)) + (x11 * apr) + ind1)*(((xx1 ) * (apr * apr)) + (x11 * apr) +
ind1);
double h22an,h22n;//variables para angular y normal
h22an=1 - 2 * (apr - x2) * ((xx2*2)*x2 + x22);
h22n=(((xx2) * (apr * apr)) + (x22 * apr) + ind2)*(((xx2) * (apr * apr)) + (x22 * apr) +
ind2);
double g20,g21,g22;//variables para h sombrero
g20=(apr-x0)*(h20n);
g21=(apr-x1)*(h21n);
g22=(apr-x2)*(h22n);
double h5;
h5=(im0) * (an*h20n) + (im1)*(h21an*h21n) + (im2)*(h22an*h22n) + (de0)*(g20) +
(de1)*(g21) + (de2)*(g22);
JOptionPane.showMessageDialog(null,"el valor de h5= "+h5);
}
}

Mtodo de bsqueda por interpolacinPgina - 16

Diagrama de Flujo

Mtodo de bsqueda por interpolacinPgina - 17

Video (herramienta porque)

5. Conclusiones
5.1 Nosotros concluimos que ningn tipo de bsqueda es mala y a la vez ninguna es
buena, ya que depende el uso dado, as es como se demuestra en qu casos es mejor
una que otra.
5.2 Como la bsqueda binaria que es la ms rpida, pero que a su vez no sirve si los
elementos del arreglo no estn acomodados en orden ascendente al contrario de la
Secuencial que a pesar de que es ms lenta trabaja aunque los elementos estn
revueltos.

6. Recomendaciones
6.1 La bsqueda de la interpolacin requiere una aritmtica ms elaborada, a parte que
los clculos que se necesitan para esta bsqueda son muy lentos.
6.2 Para lograr esta bsqueda se requieren llaves, multiplicaciones y divisiones
complejas, es decir, clculos de nivel alto.

Mtodo de bsqueda por interpolacinPgina - 18

Mtodo de bsqueda por interpolacinPgina - 19

Mtodo de bsqueda por interpolacinPgina - 20

Mtodo de bsqueda por interpolacinPgina - 21

Mtodo de bsqueda por interpolacinPgina - 22

7. Bibliografa

Libro: Programming 3D Applications with HTML5 and WebGL


Autor: Dr. Alex Rauschmayer
Edicin: 2014

Libro :Algoritmos En C++


Autor: Robert Sedgewick
Edicin: 2013

http://chimera.labs.oreilly.com/books/1234000000802
Pagina: 2013

http://www.genbetadev.com/javascript/speaking-javascript-posiblemente-el-nuevo-libro-dereferencia-para-aprender-y-profundizar-en-javascript
Pagina: 2014

http://di002.edv.uniovi.es/~dani/asignaturas/transparencias-leccion17
Pagina: 2013

Mtodo de bsqueda por interpolacinPgina - 23

Você também pode gostar