【发布时间】:2017-12-02 11:25:06
【问题描述】:
我目前在我的大学上 Java 课程,我们被要求编写一个泰勒级数方程来计算一个正弦函数。我编写了对我有意义的代码,并尝试调试我能想到的每一段代码,以确保所有部分都按照我认为的方式运行,但程序仍然无法正常运行。所以,我希望有人可能会看到这个并发现我做错了什么。
public class Sine {
public static int factorial(int a) {
int num = a;
if (a == 1) return 1;
for (int i = 1; i < num; i++){
a = a * i;
} return a;
}
public static double numerator(double x, int power) {
double ret = Math.pow(x, power);
return ret;
}
public static void main(String[] args) {
int power = 1;
int iter = 0;
double x = Math.PI/4;
int sign = 1;
while (iter != 10) {
iter++;
System.out.println("Iteration " + iter + ": " + x);
x += sign * numerator(x, power)/factorial(power);
power += 2;
sign *= -1;
}
System.out.println("\nTaylor Series, Final: " + x);
System.out.println("Value of Sine: " + Math.sin(Math.PI/4));
}
}
我只是很困惑发生了什么以及为什么它不起作用。
【问题讨论】:
-
尝试打印
factorial(int)的值以增加a的值。你可能会得到一个惊喜。 -
(顺便说一句,
factorial(0)错了)。 -
你是什么意思'工作不正常'?能具体一点吗?
-
看起来你要上升到
factorial(21),这对于int来说太大了。
标签: java taylor-series