gpt4 book ai didi

java - 泰勒级数的正弦计算不起作用

转载 作者:行者123 更新时间:2023-11-29 07:43:07 24 4
gpt4 key购买 nike

我用 Java 写了一个正弦函数,它应该像这样计算 x 的正弦

wikipedia image

我的函数看起来像

public static double sine(int x) {
double result = 0;
for(int n = 0; n <= 8; n++) {
double temp = 2 * n + 1;
result += Math.pow(-1, n) * Math.pow(x, temp) / fact(temp); // fact() calculates faculty

}
return result;

}

只有少数小数位与 Math.sin() 匹配,但前提是 x 小于 6 且 n 的极限等于 8。
有时,如果 x 大于 6,sine() 甚至会返回 4.106,或者如果 n 的限制大于 32,它会返回 NaN 或 -Infinity...
我做错了什么?

希望您能帮助我,在此先感谢您!

最佳答案

对于如此低的 n 值,泰勒级数对于大数来说是一个很差的正弦近似值。对于 8 度,任何大于 4 度的角度都会产生明显不准确的结果。

因为正弦是周期性的,所以一个简单的解决方案是用模除以角度(以弧度为单位)除以 2*pi。 Java 中的 StrictMath 类以不同的方式减少角度,但思想是相同的。在这种情况下,他们将角度减小到 [-pi/4, pi/4] 之间以提高准确性。 This tool展示了准确性如何随着泰勒级数的增加而提高。

关于java - 泰勒级数的正弦计算不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28220855/

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