[R] deSolve - Function daspk on DAE system - Error (Vince)

Soetaert, Karline K.Soetaert at nioo.knaw.nl
Mon Oct 3 09:18:10 CEST 2011


Vince, 

When that happens, one possible reason is that your DAE is of index > 1,
which cannot be solved by daspk.

The solver radau, also from deSolve can handle DAEs up to index 3, but
you need to rewrite the problem in the form M*y' = f(x,y), where M is a
mass matrix.

If you do that for your problem, and solve it with radau, then radau
complains that the "matrix is repeatedly  singular", the problem is too
stiff, and it stops just like daspk. 
I think this means that this particular DAE is unsolvable, so you will
need to look at the formulation itself. 

By the way, there is a special R-mailinglist that deals with this type
of problems:
r-sig-dynamic-models at r-project.org


Hope this helps,


Karline

---------------------
Original message:

Date: Sat, 1 Oct 2011 20:20:10 -0700 (PDT)
From: Vince <vince.pileggi at ontario.ca>
To: r-help at r-project.org
Subject: [R] deSolve - Function daspk on DAE system - Error
Message-ID: <1317525610060-3864298.post at n4.nabble.com>
Content-Type: text/plain; charset=us-ascii

I'm getting this error on the attached code and breaking my head but
can't
figure it out. Any help is much appreciated. Thanks, Vince

CODE:
library(deSolve)

Res_DAE=function(t, y, dy, pars) {
  with(as.list(c(y, dy, pars)), {
     
  res1 = -dS -dES-k2*ES
  res2 = -dP + k2*ES
 
  eq1 = Eo-E -ES
  eq2 = So-S -ES -P
  return(list(c(res1, res2, eq1, eq2)))
  })
}

pars <- c(Eo=0.02, So=0.02, k2=250, E=0.01); pars
yini <- c(S=0.01, ES = 0.01, P=0.0, E=0.01); yini
times <- seq(0, 0.01, by = 0.0001); times
dyini = c(dS=0.0, dES=0.0, dP=0.0)

## Tabular output check of matrix output

DAE <- daspk(y = yini, dy = dyini, times = times, res = Res_DAE, parms =
pars, atol = 1e-10, rtol = 1e-10)

ERROR:
daspk--  warning.. At T(=R1) and stepsize H (=R2) the      nonlinear
solver
f
      nonlinear solver failed to converge      repeatedly of with abs
(H) =
H
      repeatedly of with abs (H) = HMIN      preconditioner had repeated
failur
        0.0000000000000D+00  0.5960464477539D-14

Warning messages:
1: In daspk(y = yini, dy = dyini, times = times, res = Res_DAE, parms =
pars,  :
  repeated convergence test failures on a step - inaccurate Jacobian or
preconditioner?
2: In daspk(y = yini, dy = dyini, times = times, res = Res_DAE, parms =
pars,  :
  Returning early. Results are accurate, as far as they go



More information about the R-help mailing list