Java - Ayuda.

 
Vista:
sin imagen de perfil

Ayuda.

Publicado por Anom (7 intervenciones) el 12/11/2022 13:47:11
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
import java.util.Scanner;
public class practica3{
    public static void main(String[] args){
        Scanner input = new Scanner(System.in);
        System.out.print("Introduce el valor x: ");
        double x = input.nextDouble();
        boolean negativo=(x<0);
        if(x<0){
            x=x*(-1);
        }
        double i=0;
        double d=x;
        double factorial=1;
        double resultado= d/factorial;
        double sumatorio=resultado;
        while (resultado>=0.0005) {
            i = i + 1;
            factorial=factorial*i;
            d = d*x;
            resultado = d/factorial;
            sumatorio = sumatorio + resultado;
        }
        sumatorio=sumatorio+1;
        if(negativo){
            double inversa= 1/sumatorio;
            System.out.println("El resultado es: " + inversa);
        }else{
            System.out.println("El resultado es: " + sumatorio);
 
        }
 
    }
}

tengo este codigo se me pide Cálculo de e elevado a x El desarrollo de la serie de Taylor para la función exponencial ex, pero a la hora de poner 1 E^1 debe ser 2,78 y sale 3,71 alguien me puede decir donde tengo el error¿?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Ayuda.

Publicado por Tom (1831 intervenciones) el 12/11/2022 19:14:33
Es de suponer que el resulado que esperas es e (2,718).
Tu problema está en que el primer termino de tu serie es x*x / 1! ... y debería ser x*x / 2!

Inicializa i a 1.0 ... y obtendrás tu valor correcto

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		System.out.print("Introduce el valor x: ");
		double x = input.nextDouble();
		boolean negativo = (x < 0);
 
		if(x < 0) {
			x = x * (-1);
		}
 
		double i = 1.0;
		double d = x;
		double factorial = 1;
		double resultado = d / factorial;
		double sumatorio = resultado;
 
		while(resultado >= 0.0005) {
			i = i + 1.0;
			factorial = factorial * i;
			d = d * x;
			resultado = d / factorial;
			sumatorio = sumatorio + resultado;
		}
		sumatorio = sumatorio + 1.0;
 
		if(negativo) {
			double inversa = 1.0 / sumatorio;
			System.out.println("El resultado inv es: " + inversa);
		} else {
			System.out.println("El resultado sum es: " + sumatorio);
		}
	}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Ayuda.

Publicado por Anom (7 intervenciones) el 12/11/2022 20:44:23
muchas gracias. De verdad que no me había percatado.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar