implicit_system.qbk 1.6 KB

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