java - 泰勒级数。程序迭代次数更少

标签 java taylor-series

所以我需要使用泰勒级数的因式分解形式递归计算 e^x:

方程:e^x = 1 +x + (x^2)/2! + ... + ((x^n)/n!))

U(n) = U(n-1)*(x/n)

断点|U(n)|

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,这是我们的断点。我不明白为什么会发生这种情况。你能帮我吗?

最佳答案

由于xn是整数,因此将使用integer division来除以它们。 。只有在除法结束后,结果才会提升为 double 以便存储在 U 中。为了执行浮点除法,您可以将 x 定义为 double 或在除法时显式转换它:

double U = ((double) x) / n;

关于java - 泰勒级数。程序迭代次数更少,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46554853/

相关文章:

java - 如何实现接收文件和其他参数的 REST API

java - JTDS (Java/MSSQL) - 找不到存储过程

java - 需要逻辑解释java反向字符串

python - 用sympy计算多元函数的泰勒级数

Python:使用泰勒级数逼近 ln(x)

python - cosine x 的泰勒级数使用 python 在运行时给出逻辑错误

java - 如何在java中直观地显示一个b-tree?

Java 从另一种或其他替代方案中引用一种开关情况

python - 从 Sympy 中的级数展开中获取 n 阶系数

math - haskell中的泰勒级数