Escolar Documentos
Profissional Documentos
Cultura Documentos
PROYECTO DE PROGRAMACIN
CHURITOS Y ASOCIADOS
MTODO DE BSQUEDA POR INTERPOLACIN
Primero Ing. En Informtica
Paralelo 10
AUTORES:
TUTOR:
Ing. Wagner Lucero
QUITO ECUADOR
AGRADECIMIENTO
DEDICATORIA
RESUMEN
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...........................................................................................................
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.
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.
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.
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
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
{
if (delta ==0)
{
return (NO_ENCONTRADO);
}
Else
{
if(clave>datos[mitad]);
{
mitad + = medio (delta);
}
Else
{
mitad -= MEDIO (delta);
delta=delta/2;
}
}
}
return (mitad);
}
Inicio
Interpolacin
Diagrama de Flujo
("INGRESE LA FUNCIN")
Funcion
("INGRESE LIMITE INFERIOR")
Fin
Interpolacin
Limite inferior
("INGRESE LIMITE SUPERIOR")
Limite superior
Else
("INGRESE LA TOLERANCIA
DESEADA")
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
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);
}
}
Diagrama de Flujo
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.
7. Bibliografa
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