【发布时间】:2020-03-01 04:50:28
【问题描述】:
我目前正在做我的一项大学练习。 我必须使用泰勒级数计算 cos(x)。我也只允许使用 Math.PI,这就是我实现自己的 pow、square 和 factorial 方法的原因。但我只是得到一个 NaN 作为 -.5 的结果,而它应该是 0.87
下面是我班级的当前状态。
class Cosinus{
private static double square(double x){
return x*x;
}
public static double pow(double basis, int exp){
if(exp == 0){
return 1;
}else{
return (square(pow(basis,exp/2))*(exp%2==1?basis:1));
}
}
public static int fac(int n){
int result = 1;
while (n > 1){
result *= n;
n -= 1;
}
return result;
}
public static void main(String[] args){
if(args.length != 1){
System.out.println("ERROR PLEASE ENTER A NUMBER");
}
else if(Double.parseDouble(args[0])>((Math.PI)*2) || Double.parseDouble(args[0]) < ((Math.PI)*-2)){
System.out.println("ERROR PLEASE ENTER A NUMBER BETWEEN 0 AND 2 PI ");
}
else {
double x = Double.parseDouble(args[0]);
if(x < 0) x *= -1;
double sum = 1;
for(int i=2; i<=20; i++){
sum -= (pow(x, (i*4))/fac(i*4))-(pow(x, (i*4+2))/fac(i*4+2));
}
System.out.println(sum);
}
}
}
如果有人可以帮助我,那就太好了
【问题讨论】:
-
您的
fac()方法肯定会溢出。你不能使用int来处理这样的巨大数字。 -
已经改成long 谢谢^^
标签: java trigonometry taylor-series