c++ - loop is not working with secant method -


my program wrote find roots of equation finished, have run in small problem. nested loop using assign varying values of velocity , angle equations not working. somewhere either in loop or in call secant of fx there mistake missing. keeps giving me same numbers root, number of iterations , f(x). if me find mistake appreciate :)

#include<iostream> #include<cmath> #include<iomanip> #include<fstream>  using namespace std;  // declaration of functions used void secant(double, double, double, double, double, double, double, double, double&, int& ); double fx( double, double, double, double, double, double, double);  const double tol=0.0001; // tolerance convergence const int max_iter=50; // maximum iterations allowed  // main program int main() {     int iteration;  // number of iterations         double kr, uc, q, b, radians;      double x0, x1;  // starting values x        double root;    // root found secant method     const double pi = 4.0*atan(1.0);      ifstream datain ("shuttle.txt");     ofstream dataout ("results.txt");     datain >> kr >> uc >> q >> b;      int velocity = 16000;     double angle =10;     x0= 1000;     x1 = 200;     (int velocity = 16000; velocity <= 17500; velocity += 500)     {            (int angle = 10; angle <= 70; angle += 15)         {              radians= angle * pi/180  ;              cout << velocity << endl;              cout << radians << endl;                cout << angle << endl;                               secant (radians, velocity, kr, uc, q, b, x0, x1, root, iteration);               }     }      system("pause"); }  // definition of function "secant" // receives a, b, c, d , x0 values main program // returns root , iterations required void secant(double radians,double velocity, double kr, double uc, double q, double b, double x0, double x1, double& root, int& iteration) {         double xnminus1, xnplus1, xn; // local variables     iteration=0;    // initialize iterations         xnminus1=x0;     xn=x1;             {            ++iteration;          xnplus1 = xn - fx(radians, velocity, kr, uc, q, b, xn)*(xn-xnminus1)/(fx(radians, velocity, kr, uc, q, b, xn)-fx(radians, velocity, kr, uc, q, b, xnminus1));          cout<<"x"<<iteration+1<<" = "<<xnplus1<<endl;           xnminus1 = xn;         xn=xnplus1;      } while ((fabs(fx(radians, velocity, kr, uc, q, b, xnplus1)) >= tol )&& (iteration < max_iter));      root=xnplus1;       cout<<"\nthe root = "<<root<<endl;      cout<<"the number of iterations = "<<iteration<<endl;      cout<<"the value of f(x) @ root = "<<fx(radians, velocity, kr, uc, q, b, root)<<endl<<endl; }  // defines "fx"  double fx(double radians,double velocity, double kr, double uc, double q, double b, double ts) {     return kr * pow(ts,4.0) + uc * ts - q - pow(velocity / b, 2.0) * sin(radians); } 

you have multiple defined variables, try removing outer velocity , angle in main:

int velocity = 16000; // remove 1 double angle =10; // , 1 x0= 1000; x1 = 200; (int velocity = 16000; velocity <= 17500; velocity += 500) {         (int angle = 10; angle <= 70; angle += 15)         { 

Comments

Popular posts from this blog

c# - how to write client side events functions for the combobox items -

exception - Python, pyPdf OCR error: pyPdf.utils.PdfReadError: EOF marker not found -