gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 10:49:02 24 4
gpt4 key购买 nike

我必须用泰勒级数计算 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com