Я работаю над проектом для нашей школы, и нам нужно создать программу, которая вычисляет аппроксимацию ряда разложения Тейлора для sin x и cos x, используя только *stdio.h и БЕЗ определяемых пользователем функций *кроме int main(), всех углов от -180 до 180 с шагом +5. следующий мой код:
#include <stdio.h>
#define PI 3.141592653589
#define NUMBER_OF_TERMS 10
int
main()
{
int cosctr, sinctr;
double ctr, radi;
double cosaccu, costerm, sinaccu, sinterm;
for (ctr = -180; ctr < 185; ctr = ctr + 5) {
radi = ctr * PI/180.0;
cosctr = 1;
cosaccu = 1;
costerm = 1;
sinctr = 2;
sinaccu = radi;
sinterm = radi;
while (cosctr <= 2*NUMBER_OF_TERMS) {
costerm = costerm*(-1)*(radi*radi)/(cosctr*(cosctr + 1));
cosaccu = cosaccu + costerm;
cosctr+=2;
} do {
sinterm = sinterm*(-1)*(radi*radi)/(sinctr*(sinctr + 1));
sinaccu = sinaccu + sinterm;
sinctr+=2;
} while (sinctr <= 2*NUMBER_OF_TERMS);
printf("%.2lf %.12lf %.12lf %.12lf\n", ctr, radi, cosaccu, sinaccu);
} return 0;
}
приведенный выше код точен для приближения расширения из 15 терминов. однако, если я изменю NUMBER_OF_TERMS, например, на 5 или 10, приближение будет ошибочным.
какие-либо предложения?
* РЕДАКТИРОВАТЬ: позвольте мне уточнить. мне нужно получить приближение 5 терминов, 10 терминов и 15 терминов. я не могу использовать какую-либо другую библиотеку, кроме stdio.h (раньше, создавая этот пост, я не знал, что использование '‹' '>' приведет к пропуску текста). я не могу использовать какие-либо другие функции, кроме int main() (приношу извинения за расплывчатость моего объяснения).