elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Tutorial básico de Quickjs


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Problema con decimales (convergencia a un punto)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problema con decimales (convergencia a un punto)  (Leído 2,358 veces)
AndenBomber

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Problema con decimales (convergencia a un punto)
« en: 12 Abril 2009, 18:54 pm »

He desarrollado un programilla que me tendría que resolver el problema de localización por el método del centro de gravedad. Más info aquí, diapositivas 28,29,30.
Ese método que menciono es iterativo; esto es, para cada iteración el valor obtenido se va acercando al valor óptimo. El problema que tengo es que tengo que hacer muchas iteraciones con mi algoritmo. El profesor dijo que luego de algo más de 20 iteraciones ya se podrá intuir cuál es el valor, pero mi programa requiere hacer muchas(muchísimas) iteraciones para poder converger. En otras palabras, converge, pero lo hace muy lentamente. Si hago los cálculos manualmente, coinciden los valores de la primera y segunda iteración, así que el algoritmo debe estar bien hecho. El problema es el número de iteraciones, ¿creen que pasa por el tipo de variable que uso (double)?
Código:
import java.io.*;
import java.math.*;
public class modet2{

double rutina(double x,double y,double w,double a,double b)
{
double g=w/Math.sqrt(Math.pow(x-a,2)+Math.pow(y-b,2));
return g;
}
public static void main(String args[])throws IOException{

modet2 waa = new modet2();
double A[][] = {{0,0,5,12},{0,10,0,6},{0.25,0.25,0.25,0.25}};
int i,k;
double p,q,w,numx=0,numy=0,den=0,x=4.25,y=5;


for(k=0;k<100000;k++){ //La variable 'k' determina el número de iteraciones
for(i=0;i<4;i++){
numx=A[0][i]*waa.rutina(x,y,A[2][i],A[0][i],A[1][i])+numx;
numy=A[1][i]*waa.rutina(x,y,A[2][i],A[0][i],A[1][i])+numy;
den=waa.rutina(x,y,A[2][i],A[0][i],A[1][i])+den;
}
x=numx/den;
y=numy/den;
System.out.println("IteraciOn\t X \t\t Y");
System.out.println((k+1)+"\t"+x+"\t"+y);
System.out.println();
}

}

}
Muchas gracias por su tiempo.


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Problema con puntos en decimales y miles « 1 2 3 4 5 »
PHP
Alarkon_88 40 15,556 Último mensaje 15 Septiembre 2016, 04:10 am
por Alarkon_88
Problema con decimales (C)
Programación C/C++
maria16 3 2,942 Último mensaje 27 Noviembre 2016, 06:49 am
por engel lex
C no realiza operación aritmetica.
Programación C/C++
matver 3 2,362 Último mensaje 29 Enero 2017, 15:50 pm
por engel lex
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines