java - 泰勒级数 - 计算 sin(x) 直至 6 位精度

标签 java trigonometry taylor-series

我必须用泰勒级数计算 sin(x),直到输出有 6 位小数。论证是一个角度。我没有实现检查小数位,我只是打印下一个值(以检查它是否正常工作),但在 10-20 次迭代后,它显示无穷大/NaN。

我的想法有什么问题吗?

public static void sin(double x){
    double sin = 0;
    int n=1;
    while(1<2){

        sin += (Math.pow(-1,n) / factorial(2*n+1)) * Math.pow(x, 2*n+1);
        n++;

        try {
            Thread.sleep(50);
        } catch (InterruptedException ex) {

        }

        // CHECKING THE PRECISION HERE LATER
        System.out.println(sin);
    }
}

等式:

enter image description here

最佳答案

不要使用阶乘和幂来计算每一项!你会很快溢出。 只需意识到下一项是 -term * x * x/((n+1)*(n+2)),其中每一项 n 增加 2:

double tolerance = 0.0000007; // or whatever limit you want
double sin = 0.;
int n = 1;
double term = x;
while ( Math.abs(term) > tolerance ) {
  sin += term;
  term *= -( (x/(n+1)) * (x/(n+2)) );
  n+= 2;
}

关于java - 泰勒级数 - 计算 sin(x) 直至 6 位精度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35560530/

相关文章:

java - 瓦丁。多选网格在空时显示选中的复选框

java - 如何创建/格式化 .txt 文件以便 eclipse/java 可以读取它?

Java 堆内存使用量增加

javascript - 如何创建始终打开到固定点的圆弧

c - 为 Goldschmidt 部门选择良好的初步估计

java - 将 Jade4J 配置为 Spring 中的默认模板引擎

java - 用于计算用户输入角度的正弦和余弦的程序

ios - GPUImage glsl 正弦波 photoshop 效果

c - 泰勒级数计算余弦(余弦(90)的输出为-0.000)

python - 使用泰勒级数逼近 cos