【发布时间】:2019-11-05 19:09:20
【问题描述】:
我试图在不使用Math.cos() 函数的情况下计算余弦。我知道使用泰勒级数在理论上是如何完成的,但我总是得到错误的结果。这是我的代码:
public static final double PI = Math.PI;
public int calcFakultaet(int x)
{
int sum = 1;
for (int i = sum; i <= x; i++)
{
sum *= i;
}
return sum;
}
public double pow(double x, double y)
{
if (y == 0) return 1;
double erg = x;
for (int i = 1; i < y; i++)
{
erg *= x;
}
return erg;
}
public double toRadians(double x)
{
return x * PI / 180;
}
public double calcCos(double x)
{
if (x > (2 * PI)) x = this.toRadians(x);
double erg = 0.0;
double tmp = 1.0;
double sign = -1.0;
for (int i = 0; i <= 12; i+=2)
{
int fak = this.calcFak(i);
tmp = sign * this.pow(x, i) / fak;
sign *= -1.0;
erg += -tmp;
}
return erg
}
如果有人可以帮助我,我会很高兴!
【问题讨论】:
-
我不知道您使用的是什么方法,但无论输入如何,循环
for (int i = 1; i < border; i += 2)都会运行 3 次。这是期望的行为吗? -
是的,我得到的任务要运行到边界 2 倍 pi,抱歉,我忘了在介绍中包含这个解释。原因是泰勒级数在 2 次 pi 后变得太不准确了。
标签: java trigonometry