473,889 Members | 1,714 Online

# Using Taylor Series

22 New Member
I need help with Taylor Series

Part A:
Scan the angle in degrees x_deg. Express this angle in
radians by using x=PI*x_deg/180, and calculate Y=cos^2(x)
by using the math.h library of functions (pow() and cos()
functions). Compare the so calculated value of Y=cos^2(x)
with the approximate value y obtained by using n_term
terms of the Taylor series

cos^2(x)=0.5*(1 +Sum[(-1)^n (2*x)^(2n)/(2n)!]),

where n goes from 0 to n_term. Print the relative error
100*(Y-y)/Y.

Scan an integer value of n_term. Evaluate (2n)! by an embedded
for-loop statement. Use two do/while statements to continue
the calculations for different n_term and different x_deg. For
example, use flag=1 to continue calculations for different n_term
within the inner do/while loop, and flag=0 to exit that loop.
Use Flag=1 to continue calculations for different x_deg
within the outer do/while loop, and Flag=0 to exit that loop
and go to Part B. (Recall that 0!=1).

This is my program:
#include <stdio.h>
#include <math.h>
#define PI 3.141592654

main()
{
int n_terms, n=0;
double angle_deg, angle_rad, csa, csa2, taylor, sum;
printf("\n\nPar t A:\nCalculation of True and Approximate Values of cos^2(x)\n\n");
printf("Enter x_deg: \n");
scanf("%lf", &angle_deg);
csa2 = pow(csa, 2.);
printf("True value of cos^2(x) = %f\n\n", csa2);
printf("n_term approximation of cos^2(x)\n\n");
printf("Enter number of terms:\n");
scanf("%d", &n_terms);
printf("\n%d term approximation\n ", n_terms);

}

so far everything shows up correctly. I'm just stuck on how to use the for loop to calculate the taylor series.
Oct 25 '06 #1
12 39201
Banfa
9,065 Recognized Expert Moderator Expert
The pseudo code to calculate the value of any series goes something like this

Expand|Select|Wrap|Line Numbers
1. INITIALISE SERIES VALUE
2.
3. FOR EACH TERM IN THE SERIES
4.     SERIES VALUE = SERIES VALUE + VALUE OF TERM
5. END FOR
6.
7. OUTPUT SERIES VALUE
8.
Oct 25 '06 #2
wuzertheloser
22 New Member
sorry, i'm new to programming
could you give like a simple example of how to do it? how many double / float values would i need to define?
Oct 26 '06 #3
Banfa
9,065 Recognized Expert Moderator Expert
A minimum of 1 double value to hold the total and 2 integer values, 1 to hold the current term number and 1 to hold the number of terms to evaluate. You may need more for complex terms or to make the calculation more readable.

so taking ** to mean to the power of (e.g. 3 ** 2 = 9) to evaluate the series

1 / (2**0) + 1 / (2**1) + 1 / (2**2) + 1 / (2**3) + 1 / (2**4) + ... + 1 / (2**n)

i.e. the some of recipricals of the powers of 2 (this tends to the value 2)

the code could look something like

Expand|Select|Wrap|Line Numbers
1. #include <stdio.h>   /* For the pow function */
2. #include <math.h>    /* For the pow function */
3.
4. int main()
5.     double value;
6.     int term;
7.     int number_of_terms = 10; /* Note I have arbitarily chose this value for this case */
8.
9.     value = 0.0;  /* Initialise series value */
10.
11.     /* For each term required */
12.     for( term=0; term<number_of_terms; term++)
13.     {
14.         value += 1.0 / pow(2.0, term); /* Add the value of this term to the total */
15.     }
16.
17.     printf( "The sum of the recipricol of the powers of 2 to %d terms is %f\n",
18.             number_of_terms,
19.             value);
20.     return 0;
21. }
Oct 26 '06 #4
wuzertheloser
22 New Member
okay thanks
i'll see if that works and update if it does or not =]
Oct 27 '06 #5
wuzertheloser
22 New Member
okay, i tried to do what you said. this is the code i came up with.

#include <stdio.h>
#include <math.h>
#define PI 3.141592654

main()
{
int n_terms, n=0;
double angle_deg, angle_rad, csa, csa2, value;
printf("\n\nPar t A:\nCalculation of True and Approximate Values of cos^2(x)\n\n"
);
printf("Enter x_deg: \n");
scanf("%lf", &angle_deg);
csa2 = pow(csa, 2.);
printf("True value of cos^2(x) = %f\n\n", csa2);
printf("n_term approximation of cos^2(x)\n\n");
printf("Enter number of terms:\n");
scanf("%d", &n_terms);
printf("\n%d term approximation\n ", n_terms);
for(n=0; n<n_terms; n++){
value += 0.5 * 1 + (pow(-1.0, n) * pow((2 * angle_rad), (2 * n)) / (2 * n));
}
printf("cos^2(x ) = %g", value);
}

is there a definition in C programming that lets me do factorials? because when i defined the value...i need the last (2 * n) to be (2 * n)!.
thanks
Oct 28 '06 #6
wuzertheloser
22 New Member
This is my program so far. I got the factorial to work.

#include <stdio.h>
#include <math.h>
#define PI 3.141592654

main()
{
int n_terms, n=0;
double angle_deg, angle_rad, csa, csa2, value, sum, factorial;
printf("\n\nPar t A:\nCalculation of True and Approximate Values of cos^2(x)\n\n");
printf("Enter x_deg: \n");
scanf("%lf", &angle_deg);
csa2 = pow(csa, 2.);
printf("True value of cos^2(x) = %f\n\n", csa2);
printf("n_term approximation of cos^2(x)\n\n");
printf("Enter number of terms:\n");
scanf("%d", &n_terms);
printf("\n%d term approximation\n ", n_terms);
for(n=0; n<n_terms; n++){
value = 0.5 * (1 + sum);
sum += (pow(-1.0, n_terms) * (pow((2. * angle_rad), (2. * n_terms))/ factorial));
factorial += (2 * (n_terms - n));
}
printf("cos^2(x ) = %g\n", value);
}

however, the value for the taylor series will not come out correctly. anyone have any suggestions. this is what the taylor series should be.

cos^2(x)=0.5*(1 +Sum[(-1)^n (2*x)^(2n)/(2n)!])
Oct 29 '06 #7
Banfa
9,065 Recognized Expert Moderator Expert
You never initialise the value factorial
Oct 30 '06 #8
jhex21
3 New Member
but what if there is no math.h

can you still make a program converting the sine of a number using taylor series?

how? pls help thnx..
Apr 29 '08 #9
Banfa
9,065 Recognized Expert Moderator Expert
but what if there is no math.h

can you still make a program converting the sine of a number using taylor series?

how? pls help thnx..
Why would there be no math.h?
Apr 29 '08 #10