Skip to content

Instantly share code, notes, and snippets.

@loliGothicK
Created July 23, 2017 06:25
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save loliGothicK/0751515cb23761f30dc1804a1197d51e to your computer and use it in GitHub Desktop.
Save loliGothicK/0751515cb23761f30dc1804a1197d51e to your computer and use it in GitHub Desktop.
bool exit_status = cranberries::make_rkf45(
// Lorenz attractor
[&,p = 10.L,r = 28.L,b = 8.L/3](const long double t, const state_type& x) {
state_type dxdt{};
// x=x[0], y=x[1], z=x[2]
dxdt[0] = -p*x[0] + p*x[1]; // dx/dt
dxdt[1] = -x[0] * x[2] + r*x[0] - x[1]; // dy/dt
dxdt[2] = x[0] * x[1] - b*x[2]; // dz/dt
return dxdt;
})
.set_integrate_range({ 0,25 })
.set_tolerance(8.0E-3L)
.set_step_size_range({ 1.0E-6,0.05 })
.integrate(state0,
[&](auto t, state_type state){
std::cout
<< "t=" << t << " "
<< "x=" << state[0] << " "
<< "y=" << state[1] << " "
<< "z=" << state[2] << "\n";
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment