所以我需要使用泰勒级数的因式形式递归计算e ^ x:
等式:e ^ x = 1 + x +(x ^ 2)/ 2! + ... +((x ^ n)/ n!))
U(n)= U(n-1)*(x / n)
断点| U(n)| < EPS
package lab2;
import java.util.Scanner;
public class Lab2 {
public static void main(String[] args) {
// TODO code application logic here
Scanner in = new Scanner(System.in);
System.out.println("Enter x: ");
int x = in.nextInt();
System.out.println("Enter 0 < e < 1: ");
double e = in.nextDouble();
double result = 1.0;
int n = 1;
double U = x / n;
while (Math.abs(U) >= e)
{
double fa = 1;
for (int i = 1; i <= n; i++)
fa *= i;
result += Math.pow(x, n) / fa;
U *= x / ++n;
}
System.out.println("e^x = " + result);
}
}
它仅工作x + 1次,然后调试说U等于0及其断点。我不明白为什么会这样。你能帮我吗?
答案 0 :(得分:0)
由于Rx
和x
是整数,因此将使用integer division除以它们。只有在分割结束后,结果才会提升为n
,以便存储在double
中。为了执行浮点除法,您可以将U
定义为x
,也可以在划分时显式转换:
double