在 Java 中制作自定义 Sin() 函数
我必须在我的计算机科学课程中从头开始创建 sin 函数,并且我即将找到解决方案。 但是,我仍然遇到一些问题。 如果我输入 0.5PI 或更小的值,它就可以工作,但否则我会得到不正确的结果。 这是我到目前为止的代码:
double i=1;
double sinSoFar = 0;
int term = 1;
while(i >= .000001)
{
i = pow(-1, term + 1) * pow(sinOf, 2*term-1) / factorial(2*term-1);
sinSoFar=sinSoFar + i;
term++;
}
I have to create the sin function from scratch in my Comp Sci class, and I am getting close to a solution. However, I am still having a few problems. If I put in a value of .5PI or less it works, but otherwise I get the incorrect result. Here is the code I have so far:
double i=1;
double sinSoFar = 0;
int term = 1;
while(i >= .000001)
{
i = pow(-1, term + 1) * pow(sinOf, 2*term-1) / factorial(2*term-1);
sinSoFar=sinSoFar + i;
term++;
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
就像 Federico 指出的那样,问题可能出在你的 Factorial() 或 pow() 中。 我运行了一个测试,效果很好,用 Math 类中提供的 pow() 函数替换你的函数,以及这个阶乘():
Like Federico pointed, the problem probably is in your factorial() or pow(). I ran a test that worked fine replacing your functions with the pow() function provided in the Math class, and this factorial():
一些建议:
编辑。 建议:计算完第 k 项后,您可以通过以下方式计算第 (k+1) 项:
乘以 这样您就可以完全避免计算幂和阶乘。
Some advices:
EDIT. Suggestion: once you have computed the k-th term, you can compute the (k+1)-th one by:
In this way you can completely avoid the computation of powers and factorials.
对于 0 - 1/2PI 之外的值,都可以根据该范围内的值进行计算。
As far as values outside of 0 - 1/2PI, they can all be computed from values inside the range.