DAE extension - Maple Help

Online Help

All Products    Maple    MapleSim


dsolve/numeric/DAE_extension

find numerical solution of ordinary differential-algebraic initial value problems

 

Calling Sequence

Parameters

Description

Examples

Calling Sequence

dsolve(daesys, numeric, vars, method=meth, options)

Parameters

daesys

-

set or list; ordinary differential equation(s), algebraic equation(s) and initial conditions

numeric

-

literal; instruct dsolve to find a numerical solution

vars

-

(optional) dependent variable or a set or list of dependent variables for daesys

method

-

literal; keyword for specification of the method

meth

-

name; specification of the method, rkf45_dae, ck45_dae, or rosenbrock_dae

options

-

(optional) equations of the form keyword = value

Description

• 

The dsolve DAE extension methods are standard numerical methods designed for ODE IVP that have been extended to the solution of DAE problems.

  

Specifically, the solvers have been extended to the solution of regular ODE and limited index 1 DAE (that can be isolated for a required dependent variable). The system is reduced to this specific index 1 system via index reduction.

  

Note: The index can be thought of as how far the DAE system is from being an ODE system.

  

The DAE extension methods then use the modified solver at each step. At the end of each step, the solution is projected back so that it satisfies any additional constraints of the problem. These additional constraints arise in the process of index reduction, and will only be present for systems for which index reduction is required.

• 

dsolve has three extension methods, rkf45_dae, which is an extension of the rkf45 method, ck45_dae, which is an extension of the ck45 method, and rosenbrock_dae, which is an extension of the rosenbrock method.

  

As extensions, these methods retain many of the features of the original solvers, for example, events and range solutions. This page is concerned only with highlighting the differences between these methods, and any extension specific options.

• 

One difference is that, by default, optimization is active for the extension methods, as the system is usually quite complex after relevant postprocessing has occurred.

• 

For setup of the problem, it is required that the initial conditions are consistent, that is, that they satisfy any hidden constraints of the problem. In any cases where the constraints are not sufficiently satisfied, an error results, and the violated condition(s) are printed, allowing adjustment of the initial data to satisfy them.

  

In addition, if differential is false, it is possible to automatically compute values for any of the index 1 variables of the problem. Initial conditions for these variables need not be provided.

• 

There are two major differences between the capabilities of the extension solvers and their original counterparts: the extension solvers can only be used with real valued problems and the initial values for the problem cannot be changed interactively.

• 

Three options are specific to the DAE extension solvers:

  

 

  

'projection'= boolean

  

This option specifies whether, after each step, the solution is projected back onto the set of constraints that are not in direct use by the solver. This is true by default. If the DAE IVP is highly stable, and speed is an issue, setting this to false can provide a reasonable solution in less time.

  

 

  

'differential'= boolean

  

This option specifies that index reduction be performed until the system is fully differential (that is, does not take advantage of the index 1 capabilities of the modified solvers). This is false by default. The use of the index 1 capabilities of the solvers often provides a more stable and less stiff system than the full index reduction, and is usually faster.

  

 

  

'implicit'= boolean

  

This option specifies that parts of the extended system can be left in unsolved (implicit) form until they are evaluated. The solver determines which parts of the system must be put into solved form, in order to render the DAE problem numerically solvable, and which parts can be left in implicit form. This is essentially a smart form of the implicit option used for IVP problems (see dsolve[numeric,IVP]). This is a helpful option. It reduces the complication of the system derived quantities that must be computed to perform the numerical integration. The cost, though, is a linear solve every time the expressions must be evaluated. For problems in which the system is nearly in solved form with respect to the leading derivatives, this is somewhat slower than the direct method. For problems that are dense in the leading derivatives, this can be significantly faster.

  

 

• 

Other issues are also discussed in the dsolve[numeric,DAE] page.

Examples

The simple pendulum problem in natural coordinates:

dsysxt2+yt2=1,diffxt,t,t=2λtxt,diffyt,t,t=2λtytπ2,λ0=1200+π22,x0=0,y0=1,Dx0=110,Dy0=0

dsysxt2+yt2=1,ⅆ2ⅆt2xt=2λtxt,ⅆ2ⅆt2yt=2λtytπ2,λ0=1200+π22,x0=0,y0=−1,Dx0=110,Dy0=0

(1)

dsol1dsolvedsys,numeric,method=rkf45_dae,abserr=1.×10−7,relerr=1.×10−7,maxfun=0

dsol1procx_rkf45_dae...end proc

(2)

t1time:

r1dsol12000

r1t=2000.,λt=4.93868361756221,xt=−0.0123807482061333,ⅆⅆtxt=0.0922928793706959,yt=−0.999923355301742,ⅆⅆtyt=−0.00114274175827234

(3)

t1timet1

t10.848

(4)

Compare with projection=false:

dsol2dsolvedsys,numeric,method=rkf45_dae,projection=false,abserr=1.×10−7,relerr=1.×10−7,maxfun=0

dsol2procx_rkf45_dae...end proc

(5)

t2time:

r2dsol22000

r2t=2000.,λt=4.94243519773441,xt=0.0129846594419248,ⅆⅆtxt=0.0914835724074168,yt=−0.999134421601209,ⅆⅆtyt=0.00118969565389328

(6)

t2timet2:

maprhs,r1maprhs,r2

0.,−0.00375158017219857,−0.0253654076480581,0.000809306963279091,−0.000788933700533234,−0.00233243741216563

(7)

t1,t2

0.848,0.573

(8)

Compare time with differential=true:

dsol3dsolvedsys,numeric,method=rkf45_dae,differential=true,abserr=1.×10−7,relerr=1.×10−7,maxfun=0

dsol3procx_rkf45_dae...end proc

(9)

t3time:

r3dsol32000

r3t=2000.,λt=4.93868637305339,xt=−0.0123954832429250,ⅆⅆtxt=0.0923324756218421,yt=−0.999923173037470,ⅆⅆtyt=−0.00114459377988479

(10)

t3timet3:

maprhs,r1maprhs,r3

0.,−2.75549117834117×10−6,0.0000147350367917121,−0.0000395962511461900,−1.82264271897381×10−7,1.85202161244891×10−6

(11)

t1,t3

0.848,0.914

(12)

See Also

dsolve[ck45]

dsolve[numeric,DAE]

dsolve[numeric,IVP]

dsolve[numeric]

dsolve[rkf45]

dsolve[rosenbrock]

plots[odeplot]