Foros del Web » Programación para mayores de 30 ;) » Java »

Resolver problema con calculo repetitivo

Estas en el tema de Resolver problema con calculo repetitivo en el foro de Java en Foros del Web. Hola, primero la variable multiplicador comenzara con el valor 21485.54, entonces el resultado que saldra en esta parte: (multiplicador*( Math.pow(base,1/potencia));) se lo asignare a la ...
  #1 (permalink)  
Antiguo 12/11/2011, 10:13
 
Fecha de Ingreso: febrero-2006
Mensajes: 446
Antigüedad: 18 años, 2 meses
Puntos: 3
Resolver problema con calculo repetitivo

Hola, primero la variable multiplicador comenzara con el valor 21485.54, entonces el resultado que saldra en esta parte:(multiplicador*( Math.pow(base,1/potencia));) se lo asignare a la variable resultado, pero no sé como podria realizar este calculo 28 veces y guardarlo en un arrayList o arreglo, esto deseo conseguir

resultado=multiplicador*( Math.pow(base,1/potencia));

resultado1=resultado*( Math.pow(base,1/potencia));(aqui el valor que tiene resultado lo calculo en la formula y se lo asigno a resultado 1)


resultado2=resultado1*( Math.pow(base,1/potencia));(entonces el valor que tiene resultado1 lo calculo en la formula y se lo asigno a resultado 2)

Esto tendre que hacerlo hasta llegar al tope que sera 28, pienso que utilizar 28 variables no es muy eficiente, mas no se me ocurre como podria hacerlo, ya que despues debere insertar cada valor en una bdd.




Intente realizar algo, pero no consegui nada bueno :(
quien me podria ayudar a resolver este problema de un calculo repetitivo en base a un valor inicial?
gracias
Código PHP:
public class cal
{
public 
void calculo()
{
    
double base1.003;
double potencia 28;
double multiplicador 21485.54;    
double  resultado;        
    
for(
int i=1;i<=28;i++)
/*pense realizar algo en 
el for, pero ya no sé como continuar*/
{
resultado=multiplicador*( Math.pow(base,1/potencia));
double resultado1=resultado*( Math.pow(base,1/potencia));

System.out.println("Resultado:"+resultado);
System.out.println("Resultado:"+resultado1);
}

}    
public static 
void main(String[] args)
{
    
cal c=new cal();
c.calculo();

}} 

Última edición por -thor-; 13/11/2011 a las 00:26
  #2 (permalink)  
Antiguo 13/11/2011, 00:27
 
Fecha de Ingreso: febrero-2006
Mensajes: 446
Antigüedad: 18 años, 2 meses
Puntos: 3
Respuesta: Resolver problema con calculo repetitivo

Ayuda :(
  #3 (permalink)  
Antiguo 13/11/2011, 08:46
Avatar de ARICARRARO  
Fecha de Ingreso: diciembre-2010
Ubicación: México
Mensajes: 227
Antigüedad: 13 años, 4 meses
Puntos: 10
Respuesta: Resolver problema con calculo repetitivo

Solución:

Código java:
Ver original
  1. double base= 1.003;
  2. double potencia = 28;
  3. double resultado = 21485.54;    
  4.        
  5. int i=0;    
  6. while(i<=28)
  7. {
  8. resultado=resultado*( Math.pow(base,1/potencia));
  9. System.out.println("Resultado:"+resultado);
  10.  
  11. i++;
  12. }

Con resultado se guardan los valores generados, no es necesario poner la variable 28 veces.
  #4 (permalink)  
Antiguo 13/11/2011, 11:19
 
Fecha de Ingreso: febrero-2006
Mensajes: 446
Antigüedad: 18 años, 2 meses
Puntos: 3
Respuesta: Resolver problema con calculo repetitivo

Muchas gracias ARICARRARO me fue de gran utilidad ), otra consulta, si el valor de la base double base= -1.003 fuera negativo. ¿Que deberia hacer para realizar el calculo y mostrar el resultado? porque si le agrego el signo de negativo al valor -1.003 por pantalla sólo me imprime Resultado:NaN
  #5 (permalink)  
Antiguo 13/11/2011, 11:49
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 15 años
Puntos: 306
Respuesta: Resolver problema con calculo repetitivo

http://es.wikipedia.org/wiki/N%C3%BAmero_imaginario
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.
  #6 (permalink)  
Antiguo 13/11/2011, 12:16
 
Fecha de Ingreso: febrero-2006
Mensajes: 446
Antigüedad: 18 años, 2 meses
Puntos: 3
Respuesta: Resolver problema con calculo repetitivo

Xerelo ahi lei el link que me dejaste, pero podrias explicarme que debo realizar en mi programa para trabajar con un valor negativo y que no me muestre NAN
  #7 (permalink)  
Antiguo 13/11/2011, 20:08
 
Fecha de Ingreso: febrero-2006
Mensajes: 446
Antigüedad: 18 años, 2 meses
Puntos: 3
Respuesta: Resolver problema con calculo repetitivo

por que si la base es negativa me sigue dando como resultado NAN? ¿Como se puede resolver ese problema?
gracias
Código PHP:
double base= -1.003;
double potencia 28;
double resultado 21485.54

int i=0;
while(
i<=28)
{
resultado=resultado*( Math.pow(base,1/potencia));
System.out.println("Resultado:"+resultado);

i++;

  #8 (permalink)  
Antiguo 14/11/2011, 01:59
 
Fecha de Ingreso: septiembre-2007
Mensajes: 268
Antigüedad: 16 años, 7 meses
Puntos: 8
Respuesta: Resolver problema con calculo repetitivo

te da que no es un numero porque java no conoce los numeros imaginarios, es decir, no se pueden hacer raices de numero negativos, osea que no puedes elevar un numero negativo por un cociente o fraccion.
  #9 (permalink)  
Antiguo 14/11/2011, 05:44
 
Fecha de Ingreso: febrero-2006
Mensajes: 446
Antigüedad: 18 años, 2 meses
Puntos: 3
Respuesta: Resolver problema con calculo repetitivo

Erickvk en ese caso que podria hacer para resolver el problema de numeros negativos?
  #10 (permalink)  
Antiguo 14/11/2011, 08:28
 
Fecha de Ingreso: septiembre-2007
Mensajes: 268
Antigüedad: 16 años, 7 meses
Puntos: 8
Respuesta: Resolver problema con calculo repetitivo

Lo unico que a mi se me ocurre es comprobar antes si es positivo o negativo.

Si es negativo lo pasas a positivo y haces la cuenta normal y cuando muestras el resultado le concatenas una "i" como se hace en matematicas para indicar que es un numero imaginario. por ejemplo la raiz cuadrada de -4 es 2i.

Un saludo.
  #11 (permalink)  
Antiguo 15/11/2011, 06:51
 
Fecha de Ingreso: febrero-2006
Mensajes: 446
Antigüedad: 18 años, 2 meses
Puntos: 3
Respuesta: Resolver problema con calculo repetitivo

Muchas gracias, me ha dado resultados tu solucion )
  #12 (permalink)  
Antiguo 15/11/2011, 07:44
 
Fecha de Ingreso: septiembre-2007
Mensajes: 268
Antigüedad: 16 años, 7 meses
Puntos: 8
Respuesta: Resolver problema con calculo repetitivo

me he dado cuenta que no te he mencionado que multiplicar numero imaginario por numero imaginario es igual a un resultado cambiado de signo, ejemplo, 2i * 3i = -6

quiero decir que tienes que ir controlando en el bucle el numero de iteraciones, en la primera iteracion hay que añadirle la i, en la segunda hay que quitar la i y multiplicar el resultado por -1, en la tercera multicar por -1 y añadir la i, en la cuarta hay que quitar la i, y a partir de aqui el patron se repite, es decir el la quinta hay que añadir la i, en la sexta quitar la i multiplicar la i y asi sucesivamente.

El patron es este:

i^0 = 1,
i^1 = i,
i^2 = -1,
i^3 = -i,
i^4 = 1,
i^5 = i,
i^6 = -1,
i^7 = -i.

Yo lo que haria seria hacer el modulo de cuatro, si el resultado es cero no añado la i, si es uno añado la i, si es dos no añado la i y multiplico por -1 y si el resultado es tres multiplico por -1 y añado la i.

PD: no se te olvide que el while empieza a contar desde 0, antes de calcular el el modulo hay que sumar uno ((i+1)%4)

Un saludo.
  #13 (permalink)  
Antiguo 15/11/2011, 09:51
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 15 años
Puntos: 306
Respuesta: Resolver problema con calculo repetitivo

http://www.vitutor.com/di/c/a_10.html

Deberías probar con Matlab / Octave que son herramientas matemáticas, y aprender un poco sobre números complejos.

Dudo que vayas a conseguir resultados válidos.
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.

Etiquetas: calculo, diario, idea, jsp, sql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:57.