要实现的函数
代码
public class arctan {
public static double arctan(double x) {
double sum = 0;
int k = 0;
double arctan1 = (Math.pow(-1, k) * (Math.pow(x, 2 * k + 1) / (2 * k + 1)));
for (int i = k; i < 100; i++) {
sum =+ arctan1;
}
return (double) arctan1;
}
}
问题
我的程序只是返回了我的x
作为输出。我没有看到我所做的错误。
2条答案
按热度按时间elcex8rz1#
你必须把
double arctan1 = (Math.pow(-1, k) * (Math.pow(x, 2 * k + 1) / (2 * k + 1)));
也放进循环中,因为这是Σ在公式中的作用。在这种情况下,你也不需要在for循环中有一个新的变量
i
,像公式那样使用k
就可以了。所以它应该是这样的:
qvk1mo1f2#
字母Σ(求和)是什么意思?
参见Wikipedia关于数学求和符号(希腊字母中大写的sigma):Σ.
在您的情况下,它是从
k = 0
到k = infinite
范围内的总和。sigma * 后面的 * 项之和。
将其定义为函数而不是变量
double arctan1 = (Math.pow(-1, k) * (Math.pow(x, 2 * k + 1) / (2 * k + 1)));
将其提取为
k
和x
的函数:因为现在计算依赖于输入
k
和x
,所以可以在k的求和范围中使用它:把它放在一起