You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@commons.apache.org by "Luc Maisonobe (JIRA)" <ji...@apache.org> on 2010/03/24 23:13:27 UTC

[jira] Resolved: (MATH-358) ODE integrator goes past specified end of integration range

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

Luc Maisonobe resolved MATH-358.
--------------------------------

    Resolution: Fixed

fixed in subversion repository as of r927202

> ODE integrator goes past specified end of integration range
> -----------------------------------------------------------
>
>                 Key: MATH-358
>                 URL: https://issues.apache.org/jira/browse/MATH-358
>             Project: Commons Math
>          Issue Type: Bug
>    Affects Versions: 2.0
>         Environment: Linux
>            Reporter: Luc Maisonobe
>            Assignee: Luc Maisonobe
>            Priority: Critical
>             Fix For: 2.1
>
>
> End of integration range in ODE solving is handled as an event.
> In some cases, numerical accuracy in events detection leads to error in events location.
> The following test case shows the end event is not handled properly and an integration that should cover a 60s range in fact covers a 160s range, more than twice the specified range.
> {code}
>   public void testMissedEvent() throws IntegratorException, DerivativeException {
>           final double t0 = 1878250320.0000029;
>           final double t =  1878250379.9999986;
>           FirstOrderDifferentialEquations ode = new FirstOrderDifferentialEquations() {
>             
>             public int getDimension() {
>                 return 1;
>             }
>             
>             public void computeDerivatives(double t, double[] y, double[] yDot)
>                 throws DerivativeException {
>                 yDot[0] = y[0] * 1.0e-6;
>             }
>         };
>         DormandPrince853Integrator integrator = new DormandPrince853Integrator(0.0, 100.0,
>                                                                                1.0e-10, 1.0e-10);
>         double[] y = { 1.0 };
>         integrator.setInitialStepSize(60.0);
>         double finalT = integrator.integrate(ode, t0, y, t, y);
>         Assert.assertEquals(t, finalT, 1.0e-6);
>     }
> {code}

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.