Добрый день.
Необходимо вычислить функцию разложения в ряд e^(-x^2+1).
Известно, что e^x= (x^0)/(0!) + (x^1)/(1!) + (x^2)/(2!).. Делать это до тех пор, пока значение суммы на i-том шаге будет по модулю больше 0.25. У меня в определенный момент факториал становится равным 0. Подскажите пожалуйста, в чём проблема?
import java.util.Scanner;
class V17{
public static void main(String[] args){
final double E = 0.25;
int n = 5; // Число шагов
double[] x = {-2.7, -0.1, 2.9, 17.9, 117.0};
/*Scanner in = new Scanner(System.in)
int n = in.nextInt();
double[] x = new double[n];
for(int k=0; k<x.length; k++){
System.out.print("x" + k + " = ");
x[k] = in.nextInt();
}*/
double[] answer = new double[n];
double[] argStep = new double[x.length];
for(int k=0; k<argStep.length; k++){
argStep[k] = -1*Math.pow(x[k],2)+1;
}
double e, s, g;
int fact, factK;
for(int k=0; k<n; k++){
s = 1; // Сумма шага
e = 1; // Сумма общая
g = 1; // x^i
fact = 1;
factK = 0;
while(Math.abs(s)>E){
g = g*argStep[k];
factK++;
fact=fact*factK;
s = g/fact;
System.out.println(fact);
e = e + s;
}
answer[k] = e;
}
for(int k=0; k<answer.length; k++){
System.out.println("e^(" + argStep[k] + ") = " + answer[k]);
}
}
}