[ 
https://issues.apache.org/jira/browse/MATH-595?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Dennis Hendriks updated MATH-595:
---------------------------------

    Attachment: step-normalizer-mode-bounds2.patch

Updated patch.

1. I added the license as requested.

2. "svn diff" produced a patch that could not be applied using the Linux patch 
command. I used the Linux diff command instead (for StepNormalizer.java only), 
and put that part back into the patch. I can successfully apply it to trunk now.

3. I fixed a few javadoc warnings.

4. I could not figure out how to do checkstyle checking. The "mvn -Prc clean 
package" does not seem to do this?

> StepNormalizer extension with normalization mode and bounds settings
> --------------------------------------------------------------------
>
>                 Key: MATH-595
>                 URL: https://issues.apache.org/jira/browse/MATH-595
>             Project: Commons Math
>          Issue Type: Improvement
>            Reporter: Dennis Hendriks
>              Labels: patch
>             Fix For: 3.0
>
>         Attachments: step-normalizer-mode-bounds.patch, 
> step-normalizer-mode-bounds2.patch
>
>
> While I was the StepNormalizer to get output at fixed interval points instead 
> of the points determined by the ODE integrator, I noticed the following:
> 1. It returns the first point (t0), and integer multiples of the step size 
> add to it (t0+h, t0+2h, ...). Let's call these the 'normalized points'. I 
> wanted it to return values at multiples of the step size, regardless of the 
> start vaule. This would be a different semantics of 'normalized points'.
> 2. It returns the first point (t0), and the last point only if it is a 
> 'normalized point'. I wanted it to never return the first point, and always 
> return the last point, regardless of the 'normalized points'. If one used a 
> StepHandler directly, and not a StepNormalizer, the first point would not be 
> given to the handler, and the last point would. Thus, there is a difference 
> in first/last point handling for 'normal' StepHandlers and StepNormalizer 
> with FixedStepHandler.
> Therefore I generalized the StepNormalizer:
> 1. It now has two modes (StepNormalizerMode enumeration). The first is 
> INCREMENT, which has the old semantics for 'normalized points'. The second is 
> MULTIPLES, which has the newly proposed semantics.
> 2. It is now possible to specify whether the first and last points should be 
> given to the underlying fixed step size step handler (StepNormalizerBounds 
> enumeration).
> The changes should be transparent to already existing code, as I used the old 
> semantics for existing constructors. The only change is in the calculation 
> that determines whether the next 'normalized point' is in the current step 
> interval. For forward integration, the end point was considered to be in the 
> interval, while for backward integration the end point was considered NOT to 
> be in the interval. I changed this so that the end point is in the interval 
> regardless of the direction. This is the only non-backward compatible change. 
> I personally consider the old behavior to be wrong... This change is also 
> required for the correct functioning of the new bounds settings.
> I also added a whole bunch of unit tests to test all different combinations 
> of normalization modes, bounds settings (first/last inclusion), integration 
> direction, and whether the 'normalized points' coincide/overlap the 
> first/last points. This results in 2*4*2*2=32 unit tests.
> I believe that the generalizations that I introduced make the StepNormalizer 
> more powerful, and make it useful in more scenarios.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to