Differential-Algebraic Equations Previous: Ordinary Differential Equations Up: Differential Equations
The function daspk
can be used to solve DAEs of the form
0 = f (x-dot x, t), x(t=0) = x_0, x-dot(t=0) = x-dot_0
using Petzold's DAE solver DASPK.
[x xdot, istate, msg] = daspk (fcn, x_0, xdot_0, t, t_crit) | Loadable Function |
Solve the set of differential-algebraic equations
0 = f (x xdot, t) with x(t_0) = x_0 xdot(t_0) = xdot_0 The solution is returned in the matrices x and xdot with each row in the result matrices corresponding to one of the elements in the vector t. The first element of t should be t_0 and correspond to the initial state of the system x_0 and its derivative xdot_0 so that the first row of the output x is x_0 and the first row of the output xdot is xdot_0. The first argument fcn, is a string that names the function to call to compute the vector of residuals for the set of equations. It must have the form res = f (x xdot, t) in which x xdot, and res are vectors, and t is a scalar. If fcn is a two-element string array the first element names the function f described above and the second element names a function to compute the modified Jacobian df df jac = -- + c ------ dx d xdot The modified Jacobian function must have the form jac = j (x xdot, t, c) The second and third arguments to The set of initial states and derivatives are not strictly required to
be consistent. If they are not consistent you must use the
The fifth argument is optional and may be used to specify a set of times that the DAE solver should not integrate past. It is useful for avoiding difficulties with singularities and points where there is a discontinuity in the derivative. After a successful computation the value of istate will be greater than zero (consistent with the Fortran version of DASPK). If the computation is not successful the value of istate will be less than zero and msg will contain additional information. You can use the function |
daspk_options (opt val) | Loadable Function |
When called with two arguments this function
allows you set options parameters for the function daspk .
Given one argument daspk_options returns the value of the
corresponding option. If no arguments are supplied the names of all
the available options and their current values are displayed.
Options include
|
Octave also includes DASSL an earlier version of Daspk, and dasrt which can be used to solve DAEs with constraints (stopping conditions).
[x xdot, t_out, istat, msg] = dasrt (fcn [, g], x_0, xdot_0, t [, t_crit]) | Loadable Function |
Solve the set of differential-algebraic equations
0 = f (x xdot, t) with x(t_0) = x_0 xdot(t_0) = xdot_0 with functional stopping criteria (root solving). The solution is returned in the matrices x and xdot with each row in the result matrices corresponding to one of the elements in the vector t_out. The first element of t should be t_0 and correspond to the initial state of the system x_0 and its derivative xdot_0 so that the first row of the output x is x_0 and the first row of the output xdot is xdot_0. The vector t provides an upper limit on the length of the integration. If the stopping condition is met the vector t_out will be shorter than t and the final element of t_out will be the point at which the stopping condition was met and may not correspond to any element of the vector t. The first argument fcn, is a string that names the function to call to compute the vector of residuals for the set of equations. It must have the form res = f (x xdot, t) in which x xdot, and res are vectors, and t is a scalar. If fcn is a two-element string array the first element names the function f described above and the second element names a function to compute the modified Jacobian df df jac = -- + c ------ dx d xdot The modified Jacobian function must have the form jac = j (x xdot, t, c) The optional second argument names a function that defines the constraint functions whose roots are desired during the integration. This function must have the form g_out = g (x t) and return a vector of the constraint function values. If the value of any of the constraint functions changes sign DASRT will attempt to stop the integration at the point of the sign change. If the name of the constraint function is omitted Note that because of numerical errors in the constraint functions due to roundoff and integration error DASRT may return false roots or return the same root at two or more nearly equal values of T. If such false roots are suspected the user should consider smaller error tolerances or higher precision in the evaluation of the constraint functions. If a root of some constraint function defines the end of the problem the input to DASRT should nevertheless allow integration to a point slightly past that root so that DASRT can locate the root by interpolation. The third and fourth arguments to The set of initial states and derivatives are not strictly required to be consistent. In practice however, DASSL is not very good at determining a consistent set for you so it is best if you ensure that the initial values result in the function evaluating to zero. The sixth argument is optional and may be used to specify a set of times that the DAE solver should not integrate past. It is useful for avoiding difficulties with singularities and points where there is a discontinuity in the derivative. After a successful computation the value of istate will be greater than zero (consistent with the Fortran version of DASSL). If the computation is not successful the value of istate will be less than zero and msg will contain additional information. You can use the function |
dasrt_options (opt val) | Loadable Function |
When called with two arguments this function
allows you set options parameters for the function dasrt .
Given one argument dasrt_options returns the value of the
corresponding option. If no arguments are supplied the names of all
the available options and their current values are displayed.
Options include
|
See K. E. Brenan et al., Numerical Solution of Initial-Value Problems in Differential-Algebraic Equations North-Holland (1989) for more information about the implementation of DASSL.