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 18:27:27 UTC

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

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.


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

Posted by Luc Maisonobe <Lu...@free.fr>.
Luc Maisonobe a écrit :
> Luc Maisonobe (JIRA) a écrit :
>> 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
> 
> I'm sorry for the ongoing release process, but this newly discovered bug
> is really a *big* problem. I'll try to fix it as soon as possible to
> have it resolved for 2.1.

I hope this is fixed now (r927202). I'll check tomorrow at work how the
real case that triggered the bug behaves with the current version.

Sorry for the alarm
Luc

> 
> Luc
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe@commons.apache.org
> For additional commands, e-mail: dev-help@commons.apache.org
> 
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@commons.apache.org
For additional commands, e-mail: dev-help@commons.apache.org


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

Posted by Luc Maisonobe <Lu...@free.fr>.
Luc Maisonobe (JIRA) a écrit :
> 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

I'm sorry for the ongoing release process, but this newly discovered bug
is really a *big* problem. I'll try to fix it as soon as possible to
have it resolved for 2.1.

Luc

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@commons.apache.org
For additional commands, e-mail: dev-help@commons.apache.org


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

Posted by "Phil Steitz (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/MATH-358?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Phil Steitz closed MATH-358.
----------------------------


> 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.


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

Posted by "Luc Maisonobe (JIRA)" <ji...@apache.org>.
     [ 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.