tmainA.cpp - numeric - C++ library with numerical algorithms
 (HTM) git clone git://src.adamsgaard.dk/numeric
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) LICENSE
       ---
       tmainA.cpp (1672B)
       ---
            1 #include <iostream>
            2 #include <vector>
            3 #include <complex>
            4 #include <cmath>
            5 #include "typedefs.h"
            6 #include "check.h"
            7 #include "ode.h"
            8 #include "functions.h"
            9 
           10 
           11 int main()
           12 {
           13   // Namespace declarations
           14   using std::cout;
           15   using std::vector;
           16   using std::complex;
           17 
           18   // Calculate machine precision
           19   Floattype eps_machine = 1.0f;
           20   while (1.0f + eps_machine != 1.0f)
           21     eps_machine /= 2.0f;
           22 
           23   const int id = 20062213;
           24   const char n = 10;
           25   cout << "\nMy student id is \033[1;37m" << id 
           26        << "\033[0m, resulting in exam exercise: \033[1;31m"
           27        << id%n << "\033[0m\n";
           28   cout << "Examination project:\033[1;37m ODE integration "
           29        << "with complex numbers\033[0m\n\n";
           30 
           31   cout << "\033[1;33m--- Part A: Solving along a real path ---\033[0m\n";
           32   complex<Floattype> a(0.0f, 0.0f);         // Lower limit
           33   complex<Floattype> b(2.0f*M_PI, 0.0f); // Upper limit
           34   cout << "Integration path: b-a = " << b-a << '\n';
           35   Inttype n_eqs = 2; // Number of equations in ODE system
           36   vector<complex<Floattype> > y_start(n_eqs);
           37   complex<Floattype> y0(0.0f, 0.0f);
           38   complex<Floattype> y1(1.0f, 1.0f);
           39   y_start[0] = y0;
           40   y_start[1] = y1;
           41   Floattype h_start = 0.01f;
           42   ODE realode(func1,        // ODE system
           43                     y_start,        // Initial values
           44               a,        // Lower limit
           45               b,        // Upper limit
           46               h_start,        // Start value of step size
           47               10000,        // Max. number of steps
           48               eps_machine*1e12f,  // Absolute precision
           49               eps_machine*1e12f); // Relative precision
           50   realode.write("funcA.dat"); // Write solutions to data file
           51 
           52   // Report to stdout
           53   cout << "ODE system solved in "
           54        << realode.steps() << " steps.\n\n";
           55 
           56   // Return successfully
           57   return 0;
           58 }
           59