Saturday, June 09, 2012

Announcements

Yesterday I added an intended feature to the ODESolver. Now, the system announces each calculated state/time pair, so any interested observers can handle this information. Very simple observers include a state recorder, that just stores all incoming data in a sorted collection, and transcript recorder, that just writes information to the transcript (smalltalk's output stream). Practical extensions include curve fitting the data after the capture (take the set of points, and find a function that fits them).

One simple side-effect of being able to inspect the output is that I'm nearly certain I'm returning the wrong value in explicit steps, I noticed that I'm probably taking one step too many due to (initialTime to: endTime by: dt) do: [interesting parts here], which steps forward once to many times.

Is there a standard idiom to exclude the last item in a sequence? I would change to (initialTime to: endTime - dt by: dt), but I'm concerned about edge cases where delta-t isn't evenly divisible by dt, where does it stop?

Tuesday, June 05, 2012

Almost There

I redid the metacello configuration for SciSmalltalk this afternoon to split the Math-All package, since the current version of FileTree seems to be failing to handle this properly in the git repo (local directory copy). My intent is to remove the Math-All package as an option, use ConfigurationOfSciSmalltalk as a current target, and keep ss3/github synched much more simply.

I seem to have resolved the issue I was having where clean images are able to inspect the github local repo (all of them could write, but reading from it was not possible), which appears to have been triggered by some 2.0 update. Reloading Dale's package manually did the trick.

I tested the loaded packages from fresh 2.0 and 1.4 images, and it looks good. Only the test I need to fail to remind me to get to work is failing, and apart from a dependency loop in DHB-Numerical I think it's a clean load.


Github page
SqueakSource3 Site

Monday, June 04, 2012

ODE part 2

At present I have the following set up and tested:

an Euler Method explicit stepper and solver.
a Runge Kutte non-adaptive stepper and solver.

My obvious next step is adaptive step size control. My other big milestone is to implement an announcements based observer model to capture the data as a series and present the intermediate results.

I wish (and probably am only ignorant about it) that there was a straightforward 2d function plotter in Pharo.