1[/============================================================================ 2 Boost.odeint 3 4 Copyright 2011 Mario Mulansky 5 Copyright 2011-2012 Karsten Ahnert 6 7 Use, modification and distribution is subject to the Boost Software License, 8 Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at 9 http://www.boost.org/LICENSE_1_0.txt) 10=============================================================================/] 11 12 13 14[section Implicit System] 15 16[heading Description] 17 18This concept describes how to define a ODE that can be solved by an implicit routine. 19Implicit routines need not only the function /f(x,t)/ but also the Jacobian /df/dx = A(x,t)/. 20/A/ is a matrix and implicit routines need to solve the linear problem /Ax = b/. 21In odeint this is implemented with use of __ublas, therefore, the ['state_type] implicit routines is ['ublas::vector] and the matrix is defined as ['ublas::matrix]. 22 23[heading Notation] 24 25[variablelist 26 [[`System`] [A type that is a model of `Implicit System`]] 27 [[`Time`] [A type representing the time of the ODE]] 28 [[`sys`] [An object of type `System`]] 29 [[`x`] [Object of type ublas::vector]] 30 [[`dxdt`] [Object of type ublas::vector]] 31 [[`jacobi`] [Object of type ublas::matrix]] 32 [[`t`] [Object of type `Time`]] 33] 34 35[heading Valid Expressions] 36 37[table 38 [[Name] [Expression] [Type] [Semantics]] 39 [[Calculate ['dx/dt := f(x,t)]] [`sys.first( x , dxdt , t )`] [`void`] [Calculates `f(x,t)`, the result is stored into dxdt] ] 40 [[Calculate ['A := df/dx (x,t)]] [`sys.second( x , jacobi , t )`] [`void`] [Calculates the Jacobian of /f/ at /x/,/t/, the result is stored into `jacobi`] ] 41] 42 43[endsect]