Re: Vector Runge-Kutta ODE solver with compilation?
- To: mathgroup at smc.vnet.net
- Subject: [mg116837] Re: Vector Runge-Kutta ODE solver with compilation?
- From: DmitryG <einschlag at gmail.com>
- Date: Wed, 2 Mar 2011 04:33:02 -0500 (EST)
- References: <ikihnp$7sm$1@smc.vnet.net>
Dear Oliver and Daniel,
Vectorizing RHS is a magic trick that did the job, thank you a lot!
Now the compiled code is short and its length does not depend on NN.
The execution time strongly decreased, as one can expect from vector
operations. I can also compile in C without problems. Strangely, the
execution time is longer in the case of compilation in C!
I hope I will be able to do vectorization for my real problem where
RHS is similar but more complicated.
Another idea is to do vectorization for NDSolve. I have always
generated equations as Lists such as Equations=Table[...] but maybe I
could completely vectorize NDSolve and achieve a great speed? I have
tried with the system of equations we are discussing
******************************************************************************
NN = 100; tMax = 50;
x0 = Table[RandomReal[{0, 1}], {i, 1, NN}];
Equations = x'[t] == - x[t]/(1 + 300 Total[x[t]]^2/NN^2);
Timing[Solution = NDSolve[{Equations, x[0] == x0}, x, {t, 0, tMax},
MaxSteps -> 1000000]]
x1t[t_] := x[t][[1]] /. Solution[[1]];
x2t[t_] := x[t][[2]] /. Solution[[1]];
x3t[t_] := x[t][[3]] /. Solution[[1]];
Plot[{x1t[t], x2t[t], x3t[t]}, {t, 0, tMax}, PlotStyle -> {Red, Green,
Blue}]
**********************************************************************************
but this is not working. Probably Mathematica does not understand that
x[t] is a vector? How to fix the problem?
Thank you for your help,
Dmitry