00001 #include "DoubleWell.hpp"
00002
00003 #include "indii/ml/sde/StochasticAdaptiveRungeKutta.hpp"
00004
00005 #include <iostream>
00006 #include <fstream>
00007
00008 namespace aux = indii::ml::aux;
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027 const unsigned int M = 1;
00028
00029
00030
00031
00032 const unsigned int N = 1;
00033
00034
00035
00036
00037 const double LENGTH = 600.0;
00038
00039
00040
00041
00042 int main(int argc, const char* argv[]) {
00043 double t;
00044 aux::vector y(M);
00045 unsigned int i;
00046 std::ofstream fout("results/StochasticAdaptiveRungeKuttaHarness.out");
00047
00048 DoubleWell model;
00049 indii::ml::sde::StochasticAdaptiveRungeKutta<> solver(&model);
00050
00051 solver.setErrorBounds(1.0e-3, 1.0e-2);
00052
00053 for (i = 0; i < N; i++) {
00054 t = 0.0;
00055 y(0) = aux::Random::uniform(-1.0, 1.0);
00056
00057 solver.setTime(t);
00058 solver.setState(y);
00059 solver.setStepSize(1.0e-4);
00060
00061 while (t < LENGTH) {
00062 t = solver.step(LENGTH);
00063 y = solver.getState();
00064
00065 fout << t << '\t' << y(0) << std::endl;
00066 }
00067 fout << std::endl;
00068 }
00069
00070 return 0;
00071 }