Программа SIN X не работает
# include <iostream>
# include <math.h>
using namespace std;
int main()
{
int count=1;
double x;
double sine, num, dem, sign, term;
sine=0;
sign = 1;
cout << "Get x: ";
cin >> x;
num = x;
dem = count;
while ( count <= 10 )
{
term = (num/dem);
sine = sine + term*sign;
num = num*x*x;
count = count + 2;
dem = dem * count * (count-1);
sign = -sign;
}
cout << "The result is: ";
cout << sine;
return 0;
}
Это код, который я написал для sin x в C++, может кто-то указать на мои ошибки, так как программа не вычисляет правильное значение, я пытаюсь отлаживать в течение нескольких часов, но мои усилия отчасти бесполезны, я ценю вашу помощь! Спасибо!
* num = числитель, dem= знаменатель
3 ответа
Попробуйте выйти на 20 сроков, а не только на 10.
А так как ряд сходится медленнее, когда x большой, возьмите x по модулю 2π, прежде чем начать.
Дружище, твоя программа верна. Проверьте в своем обычном калькуляторе на грех (3.1416) значение в радианах. Полученное значение для 3.1416 градусов.. И формула работает для радианов
Полиномиальные приближения к синусу и т. Д. Действительно работают только для узкого диапазона значений. Использование большего числа терминов, фактически полинома более высокой степени, может повысить точность до определенного уровня, но вскоре вы получите повышенные ошибки округления.
Вам нужно выбрать узкую область для расчета с использованием ряда, а затем уменьшить входные данные вне этого диапазона до значения в диапазоне с тем же синусом.
После того, как вы это сделали, поэкспериментируйте с количеством терминов.