| tmainB.cpp - numeric - C++ library with numerical algorithms | |
| git clone git://src.adamsgaard.dk/numeric | |
| Log | |
| Files | |
| Refs | |
| LICENSE | |
| --- | |
| tmainB.cpp (1386B) | |
| --- | |
| 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 int main() | |
| 11 { | |
| 12 // Namespace declarations | |
| 13 using std::cout; | |
| 14 using std::vector; | |
| 15 using std::complex; | |
| 16 | |
| 17 // Calculate machine precision | |
| 18 Floattype eps_machine = 1.0f; | |
| 19 while (1.0f + eps_machine != 1.0f) | |
| 20 eps_machine /= 2.0f; | |
| 21 | |
| 22 cout << "\n\033[1;33m--- Part B: Solving along an imaginary path ---\0… | |
| 23 complex<Floattype> a(0.0f, 0.0f); // Lower limit | |
| 24 complex<Floattype> b(0.0f, 2.0f*M_PI); // Upper limit | |
| 25 cout << "Integration path: b-a = " << b-a << '\n'; | |
| 26 Inttype n_eqs = 2; // Number of equations in ODE system | |
| 27 vector<complex<Floattype> > y_start(n_eqs); | |
| 28 complex<Floattype> y0(0.0f, 0.0f); | |
| 29 complex<Floattype> y1(1.0f, 1.0f); | |
| 30 y_start[0] = y0; | |
| 31 y_start[1] = y1; | |
| 32 Floattype h_start = 0.01f; | |
| 33 ODE imagode(func1, // ODE system | |
| 34 y_start, // Initial values | |
| 35 a, // Lower limit | |
| 36 b, // Upper limit | |
| 37 h_start, // Start value of step size | |
| 38 10000, // Max. number of steps | |
| 39 eps_machine*1e12f, // Absolute precision | |
| 40 eps_machine*1e12f); // Relative precision | |
| 41 imagode.write("funcB.dat"); // Write solutions to data file | |
| 42 | |
| 43 // Report to stdout | |
| 44 cout << "ODE system solved in " | |
| 45 << imagode.steps() << " steps.\n\n"; | |
| 46 | |
| 47 // Return successfully | |
| 48 return 0; | |
| 49 } | |
| 50 |