я пытаюсь рассчитать
Используя следующий код.
#define PI 3.14
double ans;
double input1;
void toRad() {
input1 = input1 * PI / 180.0;
}
void sine(void) {
toRad();
ans = input1;
int i = 1;
for (; i < 15; i++) {
if (i % 2 == 0)
ans = ans + (ans * input1 * input1) / 2 * i * (2 * i + 1);
else
ans = ans - (ans * input1 * input1) / 2 * i * (2 * i + 1);
}
printf("%lf", ans);
}
Я использовал итерационные операции вместо pow
и факториальных функций, чтобы получить более точные значения и больше итераций.
Но по какой-то причине я получил разные результаты, такие как -4000000E
. В чем может быть проблема этого кода?
ans
является глобальной переменной? разве вы не можете просто вернуть его изsine?
, как это делает функцияsin()
? - person Iharob Al Asimi   schedule 15.04.2015M_PI
изmath.h
(просто чтобы не изобретать велосипед). Кроме того, вы можете переписать свою функциюtoRad()
следующим образом:double toRad(double in) { return in * PI / 180.0; }
- person Sam Protsenko   schedule 15.04.2015(ans*input1*input1)*(i*(2*i + 1)) / 2
, также группируйте факторы в знаменателе. - person Luis Colorado   schedule 15.04.2015