所以我需要使用泰勒级数的因式分解形式递归计算 e^x:
方程:e^x = 1 +x + (x^2)/2! + ... + ((x^n)/n!))
U(n) = U(n-1)*(x/n)
断点|U(n)| 它只工作 x+1 次,然后调试说 U 等于 0,这是我们的断点。我不明白为什么会发生这种情况。你能帮我吗?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
和n
是整数,因此将使用integer division来除以它们。 。只有在除法结束后,结果才会提升为 double
以便存储在 U
中。为了执行浮点除法,您可以将 x
定义为 double
或在除法时显式转换它:
double U = ((double) x) / n;
关于java - 泰勒级数。程序迭代次数更少,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46554853/