# 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 = знаменатель
Попробуйте выйти на 20 сроков, а не только 10.
А так как ряд сходится медленнее, когда x большой, возьмите x по модулю 2π, прежде чем начать.
Полиномиальные приближения к синусу и т. Д. Действительно работают только для узкого диапазона значений. Использование большего числа терминов, фактически полинома более высокой степени, может повысить точность до некоторой точки, но вскоре вы получите повышенные ошибки округления.
Вам нужно выбрать узкую область для расчета с использованием ряда, а затем уменьшить входные данные вне этого диапазона до значения в диапазоне с тем же синусом.
После того, как вы это сделали, поэкспериментируйте с количеством терминов.
Дружище, твоя программа верна. Проверьте в своем обычном калькуляторе на грех (3.1416) значение в радианах. Полученное значение для 3.1416 градусов .. И формула работает для радианов