Sunteți pe pagina 1din 3

ADA - Lab 01 Introduction to Algorithms

Adrian Oriel Cheje Apaza


Escuela Profesional de Ingenierı́a de Sistemas
Universidad Nacional de San Agustı́n
Arequipa,Perú
acheje@unsa.edu.pe

I. INTRODUCCIÓN

Para comprender lo que es la raı́z enésima de un número, es necesario tener en claro los términos de la
radicación, estos son el radicando, el ı́ndice radical y la raı́z:
-El radicando es el número al cual queremos hallar su raı́z.
-El ı́ndice radical nos indica cuantas veces debemos multiplicar por si mismo un número para ası́ obtener el
radicando.
-La raı́z es aquel número que si se multiplica por si mismo las veces que indica el ı́ndice radical, da como
resultado el radicando.

Figura 1: Raiz n-ésima

II. BISECTION ALGORITHM

Es un método iterativo utilizado para encontrar las raı́ces de ecuaciones no lineales basadas en hallazgos
una solución para f (x) = 0 a lo largo de una secuencia de intervalos decrecientes como se muestra en [1], aquı́
El autor explica que para una función continua definida entre un intervalo [a, b] y f (a), f (b) funciona dentro
del intervalo, podemos encontrar al menos una raı́z dentro del intervalo. Entonces calculamos c = (a + b)/2
y f (c), si f (c) no es una raı́z, entonces el nuevo intervalo viene dado por la función con signos opuestos, este
proceso se repite hasta que se alcanza la tasa de error o las iteraciones dadas terminadas, estas iteraciones son
necesarias para evitar un bucle infinito. los El algoritmo de bisección de [2] se presenta en el Algoritmo 1.

Algorithm 1 Bisection algorithm to find the nth root

Require: a <b , (f(a) < 0 and f(b) ≤ 0) or (f(a) >0 and f(b)<0)
Ensure: nth root of x
1: procedure nthRootbyBisection(nth, x, error, iteration)
2: N ← 1
3: while N ≤ iteration do
4: N ←− a+b 2 < error then
5: if f(c) = 0 or b−a
2 < error then
6: Return(c) N ←N + 1
7: if Sign(f(c)) == Sign(f(a)) then
8: a ← c
9: else
10: b ←− c

1
III. IMPLEMENTACION

public c l a s s r a i z {
public s t a t i c void main ( S t r i n g [ ] a r g s ) {

// D e c l a r a c i o n de v a r i a b l e s
double Numero =25; //Numero d e l c u a l s e d e s e a h a l l a r l a r a i z
double R a i z =2; // Valor dado n−esima r a i z
i n t I t e r a c i o n e s =1000; // Cantidad de v e c e s que s e r e a l i z a r a l a o p e r s c i o n
double E r r o r = 0 . 0 0 0 0 1 ; // v a l o r minimo de d i f e r e n c i a
b i s e c t i o n ( Numero , Raiz , I t e r a c i o n e s , E r r o r ) ;

}
// metodo b i s e c t i o n , r e a l i z a r a l a s o p e r a c i o n e s para h a l l a r l a r a i z
public s t a t i c void b i s e c t i o n ( double numero , double r a i z , double i t e r a c i o n e s , double e r r o r ) {

double a =0; // Valor a s i g a n d o como l i m i t e i n f e r i o r


double b=numero ; // L i m i t e s u p e r i o r
double c =0; // Valor medio , V a r i a b l e a s i g n a d a para ( a+b )/2
double val ; // V a r i a b l e para e l r e s u l t a d o de c e l e v a d o a l v a l o r de l a r a i z
double d i f =0; // D i f e r e n c i a de l a r e s t a e n t r e e l v a l o r r e c i b i d o y e l v a l o r
// c a l c u l a d o numero−v a l
double e r r=e r r o r ; // e r r o r p e r m i t i d o como d i f e r e n c i a

// B u c l e f o r , r e a l i z a r l a o p e r a c i o n e l # v e c e s a s i g n a d o
f o r ( i n t i =0; i <i t e r a c i o n e s ; i ++){

c=(a+b ) / 2 . 0 ; // Valor medio


v a l=Math . pow ( c , r a i z ) ; // v a l o r c a l c u l a d o de C e l e v a d o a l a r a i z n−esima
i f ( v a l==numero ) { // Condicion s i e l v a l o r c a l c u l a d o e s i g u a l a l
// v a l o r dado , s i s e cumple imprime d i c h v a l o r
System . out . p r i n t l n ( c ) ;
break ;
}

else // Caso c o n t r a r i o s e p r o c e d e a r e a l i z a r e l c a l c u l o de l a d i f e r e n c i a
// Valor dado menos Valor c a l c u l a d o

d i f=numero−v a l ;

i f ( d i f <0){ // S i l a d i f e r e n c i a e s menos a c e r o s e a c t u a l i z a e l v a l o r d e l
// l i m i t e s u p e r i o r
b=c ;
}
e l s e a=c ; // c a s o c o n t r a r i o s e a c t u a l i z a e l v a l o r d e l l i m i t e i n f e r i o r

i f ( e r r >Math . abs ( d i f ) ) { // S i l a d i f e r e n c i a e s menor a l e r r o r e s t a b l e c i d o ,


// imprimie e l r e s u l t a d o
i f ( r a i z %2!=0) // s i e l v a l o r d e l l a r a i z e s un numero par , podra
// t e n e r dos r e s p u e s t a s una n e g a t i v a y o t r a p o s i t i v a
System . out . p r i n t l n ( c ) ;
else
System . out . p r i n t l n ( c+” − ”+(−c ) ) ;

break ;

}
}
}
}

// Por ahora no s e e s t a c o n s i d e r a n d o l o s numeros que t e n g a n r a i z c o m p l e j a , s o l o e s t a


// t r a b a j a n d o con e n t e r o s .

2
IV. PREGUNTAS

1. ¿Cuántas iteraciones necesita? ¿Es un número fijo? Explique.

El numero de iteraciones es variable, ya que algunas veces la raiz es hallada en pocas iteraciones, y en otras
necesitara muchas mas iteraciones, depende del numero ingresado y del valor de la raiz n-esima, tambien influye
el valor del valor error permitido, en este caso solo cuenta con 5 ceros, ademas tambien para evitar que pudiera
quedarse en un bucle infinito se ha considerado colocar un valor finito al numero máximo de iteraciones.

2. ¿Qué lenguaje de programación has elegido y por qué?

Java, debido a que estoy mas familiarizado con este lenguaje, y tambien el por tiempo disponible, costarı́a algo
mas de tiempo usar otro lenguaje.

3. ¿Cuál es el costo promedio del algoritmo implementado? ¿Cuál es la unidad para medir el
costo?

El numero de lineas de costo de operacion, asignacion,reasignacion de valores y variables,y el numero de


iteraciones n, tiempo que demora en dar un resultado.

4. ¿Existe una relación entre el costo de la teorı́a y el costo de implementación?

El costo se calcula teóricamente, analizando el algoritmo correspondiente, el cual se equivalente al costo de


implementación.

5. Encuentre otro algoritmo para resolver el enésimo problema raı́z, explı́quelo y haga un
Comparación entre ambos.

Descomposición factorial, se divide el numero en sus factores primos, luego se agrupa los valores según sus
exponentes, de tal manera que corresponda al indice de la raiz. Tiene un pequeño inconveniente al tener que
llevar a cabo reiteradamente la descomposición a sus factores primos, debido a que se tendria que probar
sistemáticamente con todos los valores primos posibles, no siendo muy eficiente en este proceso, muy variable
en numero de iteraciones, y posiblemente se tenga que realizar mas operaciones a fin de obtener una respuesta,
en el mejor de los casos tendria un tiempo de convergencia bastante mas rápido que el de biseccion, no siendo
esto aplicable para todos los casos.

Figura 2: Descomposicion a sus valores primos

S-ar putea să vă placă și