I'm working on a project for our school, and we are required to create a program that computes the approximation of the Taylor Expansion Series of sin x and cos x, only using *stdio.h and WITHOUT user-defined functions *other than int main(), of all angles from -180 to 180 in increments of +5. the following is my code:
#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;
}
the code above is accurate for a 15 terms expansion approximation. however, if i change NUMBER_OF_TERMS to, for example, 5 or 10, the approximation is flawed.
any suggestions?
*EDIT: let me clarify. i need to obtain an approximation of 5 terms, 10 terms, and 15 terms. i cannot use any other library outside of stdio.h (i didn't know before while making this post that using '<' '>' would omit the text). i cannot use any other functions outside of int main() (i apologize for the vagueness of my explanation before).