439,972 Members | 1,454 Online
Need help? Post your question and get tips & solutions from a community of 439,972 IT Pros & Developers. It's quick & easy.

# Using Taylor Series

 P: 22 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 #include #define PI 3.141592654 main() { int n_terms, n=0; double angle_deg, angle_rad, csa, csa2, taylor, sum; printf("\n\nPart A:\nCalculation of True and Approximate Values of cos^2(x)\n\n"); printf("Enter x_deg: \n"); scanf("%lf", &angle_deg); angle_rad = angle_deg * (PI/180.); csa = cos(angle_rad); 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 Replies

 Expert Mod 5K+ P: 8,916 The pseudo code to calculate the value of any series goes something like this Expand|Select|Wrap|Line Numbers INITIALISE SERIES VALUE   FOR EACH TERM IN THE SERIES     SERIES VALUE = SERIES VALUE + VALUE OF TERM END FOR   OUTPUT SERIES VALUE   Oct 25 '06 #2

 P: 22 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

 Expert Mod 5K+ P: 8,916 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 #include    /* For the pow function */ #include     /* For the pow function */   int main()  {      double value;     int term;     int number_of_terms = 10; /* Note I have arbitarily chose this value for this case */       value = 0.0;  /* Initialise series value */       /* For each term required */     for( term=0; term

 P: 22 okay thanks i'll see if that works and update if it does or not =] Oct 27 '06 #5

 P: 22 okay, i tried to do what you said. this is the code i came up with. #include #include #define PI 3.141592654 main() { int n_terms, n=0; double angle_deg, angle_rad, csa, csa2, value; printf("\n\nPart A:\nCalculation of True and Approximate Values of cos^2(x)\n\n" ); printf("Enter x_deg: \n"); scanf("%lf", &angle_deg); angle_rad = angle_deg * (PI/180.); csa = cos(angle_rad); 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

 P: 22 This is my program so far. I got the factorial to work. #include #include #define PI 3.141592654 main() { int n_terms, n=0; double angle_deg, angle_rad, csa, csa2, value, sum, factorial; printf("\n\nPart A:\nCalculation of True and Approximate Values of cos^2(x)\n\n"); printf("Enter x_deg: \n"); scanf("%lf", &angle_deg); angle_rad = angle_deg * (PI/180.); csa = cos(angle_rad); 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

 Expert Mod 5K+ P: 8,916 You never initialise the value factorial Oct 30 '06 #8

 P: 3 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

 Expert Mod 5K+ P: 8,916 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

 P: 3 can nyou try it using the taylor series? Apr 29 '08 #11

 P: 3 Why would there be no math.h? using this format: in getting the sin of a value x: sin(x) = x^1/1! - x^3/3! + x^5/5!.... Apr 29 '08 #12

 Expert 100+ P: 849 You do know that is a Taylor series, right? Whether or not is there has no effect on that...and is a standard library. It should always be there, unless you're on a microcontroller or something. Note that if you're using gcc, you need to compile with the -lm flag to actually have the math library included, as well as the #include. Thread necromancy aside, you'd just need to write your own exponent function to replace pow(), as that's the only math.h function involved in the computations. Apr 29 '08 #13