summaryrefslogtreecommitdiffstats
path: root/src/boost/libs/numeric/odeint/examples/lorenz.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/boost/libs/numeric/odeint/examples/lorenz.cpp')
-rw-r--r--src/boost/libs/numeric/odeint/examples/lorenz.cpp31
1 files changed, 31 insertions, 0 deletions
diff --git a/src/boost/libs/numeric/odeint/examples/lorenz.cpp b/src/boost/libs/numeric/odeint/examples/lorenz.cpp
new file mode 100644
index 00000000..37155aae
--- /dev/null
+++ b/src/boost/libs/numeric/odeint/examples/lorenz.cpp
@@ -0,0 +1,31 @@
+#include <iostream>
+#include <boost/array.hpp>
+
+#include <boost/numeric/odeint.hpp>
+
+using namespace std;
+using namespace boost::numeric::odeint;
+
+const double sigma = 10.0;
+const double R = 28.0;
+const double b = 8.0 / 3.0;
+
+typedef boost::array< double , 3 > state_type;
+
+void lorenz( const state_type &x , state_type &dxdt , double t )
+{
+ dxdt[0] = sigma * ( x[1] - x[0] );
+ dxdt[1] = R * x[0] - x[1] - x[0] * x[2];
+ dxdt[2] = -b * x[2] + x[0] * x[1];
+}
+
+void write_lorenz( const state_type &x , const double t )
+{
+ cout << t << '\t' << x[0] << '\t' << x[1] << '\t' << x[2] << endl;
+}
+
+int main(int argc, char **argv)
+{
+ state_type x = {{ 10.0 , 1.0 , 1.0 }}; // initial conditions
+ integrate( lorenz , x , 0.0 , 25.0 , 0.1 , write_lorenz );
+}