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

Como escribir una fórmula

Estas en el tema de Como escribir una fórmula en el foro de Java en Foros del Web. Me dan el siguiente sumatorio: arctangente (x)= sumatorio de (((-1)^(i-1))*x^(2i-1))/(2i-1) arriba del sumatorio n y abajo i=0 y el enunciado que me dan es: Este ...
  #1 (permalink)  
Antiguo 29/11/2014, 13:31
 
Fecha de Ingreso: noviembre-2014
Mensajes: 13
Antigüedad: 9 años, 5 meses
Puntos: 0
Exclamación Como escribir una fórmula

Me dan el siguiente sumatorio:

arctangente (x)= sumatorio de (((-1)^(i-1))*x^(2i-1))/(2i-1)
arriba del sumatorio n y abajo i=0

y el enunciado que me dan es:

Este desarrollo en serie solo funciona si x está entre -1.0 y 1.0.
El método recibe como parámetros los valores x y n. Si x no está entre -1.0 y 1.0 o n es menor que uno retornar Double.NaN. En caso contrario calcular y retornar el valor del sumatorio. Para hacer más eficiente el cálculo no utilizar la operación "elevar a". Observar que de la iteración i a la siguiente:
• el numerador cambia de signo alternando entre +1 y -1
• la potencia de x se obtiene multiplicando a la anterior por x2


Mi problema es que no se como poner el -1 elevado a i-1 sin utilizar Math.pow



Código HTML:
/**
 * Write a description of class Ejercicio3 here.
 * 
 * @author (Ojimetro) 
 * @version (a version number or a date)
 */
public class Ejercicio3
{
   public String calculador(double x,double n)
   {
       String arcotangente;
       double suma=0;
       
       if(x>=-1.0 && x<=1.0 && n>1)
       {
          for (double i=0; i<=n; i++)
          {
           suma= suma+((Math.pow(-1.0,i-1.0)/(2.0*i-1.0)))*(Math.pow(-1.0,i-1.0)/(2.0*i-1.0)*x*x);   
          }
          double anguloRadianes = Math.atan(suma);
          double anguloGrados = Math.toDegrees(anguloRadianes);         
          return (String.valueOf(anguloGrados));
       }
       else
       {
           arcotangente="Double.NaN";
           return arcotangente;
       }    
   }
}
  #2 (permalink)  
Antiguo 29/11/2014, 13:37
 
Fecha de Ingreso: octubre-2014
Mensajes: 46
Antigüedad: 9 años, 6 meses
Puntos: 0
Respuesta: Como escribir una fórmula

el sumatorio se puede ver https://www.dropbox.com/s/g7vgqzal9yfp0rr/forojava.png?dl=0

Última edición por scuvi96; 29/11/2014 a las 13:38 Razón: fallo con el link
  #3 (permalink)  
Antiguo 02/12/2014, 02:20
 
Fecha de Ingreso: febrero-2005
Mensajes: 39
Antigüedad: 19 años, 2 meses
Puntos: 1
Respuesta: Como escribir una fórmula

Código:
public class JavaApplication9 {
   public static String calculador(double x,double n)
   {
       String arcotangente;
       double suma=0;
       
       if(x>=-1.0 && x<=1.0 && n>1)
       {
          for (double i=0; i<=n; i++)
          {
           suma= suma+((Math.pow(-1.0,i-1.0)/(2.0*i-1.0)))*(Math.pow(-1.0,i-1.0)/(2.0*i-1.0)*x*x); 
           System.out.println(((Math.pow(-1.0,i-1.0)/(2.0*i-1.0)))*(Math.pow(-1.0,i-1.0)/(2.0*i-1.0)*x*x));
          }
          double anguloRadianes = Math.atan(suma);
          double anguloGrados = Math.toDegrees(anguloRadianes);         
          return (String.valueOf(anguloGrados));
       }
       else
       {
           arcotangente="Double.NaN";
           return arcotangente;
       }    
   }
   public static String calculador2(double x,double n)
   {
       String arcotangente;
       double suma=0;
       
       if(x>=-1.0 && x<=1.0 && n>1)
       {
          for (double i=0; i<=n; i++)
          {
           suma= suma+((potencia(-1.0,(int)i-1)/(2.0*i-1.0)))*(potencia(-1.0,(int)i-1)/(2.0*i-1.0)*x*x);   
           System.out.println(((potencia(-1.0,(int)i-1)/(2.0*i-1.0)))*(potencia(-1.0,(int)i-1)/(2.0*i-1.0)*x*x));
          }
          double anguloRadianes = Math.atan(suma);
          double anguloGrados = Math.toDegrees(anguloRadianes);         
          return (String.valueOf(anguloGrados));
       }
       else
       {
           arcotangente="Double.NaN";
           return arcotangente;
       }    
   }
   public static double potencia(Double a,int b)
   {
       if(b>0) 
       {
           return a*potencia(a,b-1);
       }
       else if(b==0)
           return 1;
       else return -1;
   }
   
   public static String calculador3(double x,double n)
   {
       String arcotangente;
       double suma=0;
       
       if(x>=-1.0 && x<=1.0 && n>1)
       {
          for (double i=0; i<=n; i++)
          {
           suma= suma+((potencia2(-1.0,(int)i-1)/(2.0*i-1.0)))*(potencia2(-1.0,(int)i-1)/(2.0*i-1.0)*x*x);   
           System.out.println(((potencia2(-1.0,(int)i-1)/(2.0*i-1.0)))*(potencia2(-1.0,(int)i-1)/(2.0*i-1.0)*x*x));
          }
          double anguloRadianes = Math.atan(suma);
          double anguloGrados = Math.toDegrees(anguloRadianes);         
          return (String.valueOf(anguloGrados));
       }
       else
       {
           arcotangente="Double.NaN";
           return arcotangente;
       }    
   }
   public static double potencia2(Double a,int b)
   {
       if(b%2==0) 
       {
           return -1;
       }
       else return 1;
   }
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
        System.out.println("----------\nResultado1=\n"+calculador(0.5,19));
        System.out.println("----------\nResultado2=\n"+calculador2(0.5,19));
        System.out.println("----------\nResultado3=\n"+calculador3(0.5,19));
    }
}
Hay tienes 2 formas de solucionarlo, pero la forma correcta es la 3, creo que podrás verlo fácil como funciona.

Saludos,

PD: Hice todo static para hacer el código y probarlo en 5 minutos.

Etiquetas: string, valor
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 12:25.