Hello and welcome to our community! Is this your first visit?
Register
Enjoy an ad free experience by logging in. Not a member yet? Register.
Results 1 to 1 of 1
  1. #1
    New to the CF scene
    Join Date
    Dec 2011
    Posts
    1
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Angry UIL Solving Exp, Cos, Sin, and Tan functions (Taylor Series)

    Series given are the first four fractions of the series (1st, 2nd, 3rd or 4th). I convert each place to the original x value it was generated from, this assumes they will match and then tests to see if they do indeed match up the equations that I reversed to come up with the x's in each are as follows.



    e^x = 1 + x + (x^2)/2 + x^3/6
    cos(x) = 1 - (x^2)/2 + (x^4)/24 - (x^6)/720
    sin(x) = x - (x^3)/6 + (x^5)/120 - (x^7)/5040
    tan(x) = x + x^3 + (2x^5)/15 + (17x^7)/315

    I plan on adding tanh(-1/x), Ln (1+x) and any others i can find eventually, but first things first why doesn't this work?

    This is my second program and i'd like to learn any quicker/more effective ways to code, criticism (likely lots) is welcome.



    //exponential series and log series

    #include <stdio.h>
    #include <iostream>
    #include <math.h>

    using namespace std;

    static float x1 = 0.0;
    static float x2 = 0.0;
    static float x3 = 0.0;
    static float x4 = 0.0;
    static float r1 = 0.0;
    static float r2 = 0.0;
    static float r3 = 0.0;
    static float r4 = 0.0;



    int variablereset ()
    {
    r1 = x1;
    r2 = x2;
    r3 = x3;
    r4 = x4;
    }

    int main()
    {
    cout << "1st" << endl;
    cin >> x1 ;
    cout << "2nd" << endl;
    cin >> x2 ;
    cout << "3rd" << endl;
    cin >> x3 ;
    cout << "4th" << endl;
    cin >> x4 ;
    cout << "Awnser is " ";

    variablereset();
    cout<< r1 << " " << r2 << " " << r3 << " " << r4;
    r3 = r3 * 2.0;
    r3 = (pow(r3, 1.0/2.0));
    r4 = r4 * 6.0;
    r4 = (pow(r4, 1.0/3.0));

    if (r1 == 1.0 && r2 == r3 && r3 == r4)
    {
    cout << pow(2.71828183 , r2/1.0);
    cout<< "e";
    }

    variablereset();
    r2 = r2 * -6;
    r2 = (pow(r2, 1.0/2.0));
    r3 = r3 * 24;
    r3 = (pow(r3, 1.0/4.0));
    r4 = r4 * -120;
    r4 = (pow(r4, 1.0/6.0));


    if (r1 == 1 && r2 == r3 && r3 == r4)
    {
    cout << cos (r2);
    cout<< "cos";
    }

    variablereset();
    r2 = r2 * 6;
    r2 =(pow(r2, 1.0/3.0));
    r3 = r3 * 120;
    r3 =(pow(r3, 1.0/4.0));
    r4 = r4 * 5040;
    r4 =(pow(r4, 1.0/6.0));

    if (r1 == r2 && r2 == r3 && r3 == r4)
    {
    cout<< sin (r2);
    cout<< "sin";
    }



    variablereset();
    r2 =(pow(r2,1.0/3.0));
    r3 = (r3*15)/2 ;
    r3 =(pow(r3,1.0/5.0));
    r4 = (r4 * 315)/17;
    r4 =(pow(r4,1.0/7.0));


    if (r1 == r2 && r2 == r3 && r3 == r4)
    {
    cout<< tan (r2);
    cout<< "tan";
    }






    cout << " " << endl;
    return 0;


    }


    I played with removing parts of code and testing using (1, 6, 18, 36) 1=1, 6=6, (18*2)^1/2=6, and (36*6)^1/3 i got the values 1,6,6,6 however when i check the 3rd term to the 4th term it comes false, the last "6" doesn't seem to be valid for some reason

    I do realize this will not be 100% accurate I assume i'm given real fractional or decimal values and positive x values (though handling negatives as well would be nice)
    Help appreciated!
    Last edited by Ruler58585; 12-04-2011 at 05:00 AM.


 

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •