gpt4 book ai didi

java - 在Java中不使用Math.cos函数实现cos

转载 作者:行者123 更新时间:2023-12-01 21:58:57 28 4
gpt4 key购买 nike

我尝试在不使用 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
}

如果有人能帮助我,我会非常高兴!

最佳答案

我认为你误解了这个问题。 2*Pi 是一个完整的圆,因此对 0...2*Pi 弧度范围之外的值进行计算是没有意义的。您可以拒绝该范围之外的输入,但很容易获取输入值 mod 2*Pi 并使用它。

每个余弦计算都应从度数转换为弧度,然后使用该角度作为输入“x”运行泰勒级数循环 N 次。 N 的值由您决定。更多迭代将产生更准确的结果,直到达到 double 算术的极限。设置任务的人可能已经给出了相关指示。

关于java - 在Java中不使用Math.cos函数实现cos,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58717936/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com