| tmainA.cpp - numeric - C++ library with numerical algorithms | |
| git clone git://src.adamsgaard.dk/numeric | |
| Log | |
| Files | |
| Refs | |
| 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 |