psycho_dad
unread,Feb 3, 2013, 2:52:01 AM2/3/13You do not have permission to delete messages in this group
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
to
Hi all,
Lately I'd been trying to solve some very complicated ODEs (they arise from modifications of General Relativity), but there were two problems:
1) NDSolve would take several (15+) minutes to solve them,
2) Many times it would actually fail as the system is very stiff.
Trying to understand what was going on and also having a real time estimate of the progress of NDSolve, I came up with the following code that actually helped me address the issues mentioned above:
data = {{0, 1}};
k = 0;
ProgressIndicator[Dynamic[k], {0, 30}]
Dynamic[ListPlot[data, Frame -> True,
PlotRange -> {{0, 31}, {0, 1.2}}]]
NDSolve[{y'[x] == y[x] Cos[x + y[x]], y[0] == 1}, y, {x, 0, 30},
StepMonitor :> (Pause[.02]; Set[k, x]; AppendTo[data, {x, y[x]}])];
The ProgressIndicator provides the real time estimate of the progress and the Dynamic+ListPlot show where NDSolve has a certain "difficulty" (notice the "hiccup" in this example at x~12). The ODE used is of course very simple and not the one I used in practice.
In any case, this is not groundbreaking or anything, but it helped me and I thing it's quite cool, so I decided to share it.
Cheers