]>
Commit | Line | Data |
---|---|---|
7c673cae FG |
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 | ||
18 | This concept describes how to define a ODE that can be solved by an implicit routine. | |
19 | Implicit 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/. | |
21 | In 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] |