Bertini 2 - C++ Core
Software for Numerical Algebraic Geometry
Loading...
Searching...
No Matches
bertini::System Class Reference

The fundamental polynomial system class for Bertini2. More...

#include <system.hpp>

Inheritance diagram for bertini::System:
[legend]

Public Member Functions

void AddConstant (Fn const &C)
 
void AddConstants (std::vector< Fn > const &C)
 
void AddFunction (Fn const &F)
 
void AddFunction (Nd const &F, std::string const &name="unnamed_function")
 
void AddFunctions (std::vector< Fn > const &F)
 
void AddHomVariableGroup (VariableGroup const &v)
 
void AddImplicitParameter (Var const &v)
 
void AddImplicitParameters (VariableGroup const &v)
 
void AddParameter (Fn const &F)
 
void AddParameters (std::vector< Fn > const &F)
 
void AddPathVariable (Var const &v)
 
void AddSubfunction (Fn const &F)
 
void AddSubfunctions (std::vector< Fn > const &F)
 
void AddUngroupedVariable (Var const &v)
 
void AddUngroupedVariables (VariableGroup const &v)
 
void AddVariableGroup (VariableGroup const &v)
 
VariableGroup const & AffineVariableGroup (size_t index) const
 Get an affine variable group the class has defined.
 
template<typename T>
Vec< T > DehomogenizePoint (Vec< T > const &x) const
 Dehomogenize a point, using the variable grouping / structure of the system.
 
void Differentiate () const
 Compute and internally store the symbolic Jacobian of the system.
 
template<typename T>
Vec< T > Eval () const
 Evaluate the system using the previously set variable (and time) values, creating vector of function values.
 
template<typename Derived>
Derived::PlainObject Eval (const Eigen::MatrixBase< Derived > &variable_values) const
 Evaluate the system, provided the system has no path variable defined.
 
template<typename Derived, typename T>
Vec< T > Eval (const Eigen::MatrixBase< Derived > &variable_values, const T &path_variable_value) const
 
template<typename T>
void EvalInPlace (Vec< T > &function_values) const
 Evaluate the system using the previously set variable (and time) values, in place.
 
template<typename T, typename Derived>
void EvalInPlace (Vec< T > &function_values, const Eigen::MatrixBase< Derived > &variable_values) const
 Evaluate the system, provided the system has no path variable defined, in place.
 
template<typename Derived, typename T>
void EvalInPlace (Vec< T > &function_values, const Eigen::MatrixBase< Derived > &variable_values, const T &path_variable_value) const
 
auto Function (unsigned index) const
 Get a function by its index.
 
auto GetNaturalFunctions () const
 Get the functions.
 
bool HavePathVariable () const
 
void Homogenize ()
 
auto HomVariableGroups () const
 
bool IsHomogeneous () const
 
bool IsPolynomial () const
 
template<typename T>
Mat< T > Jacobian () const
 
template<typename Derived, typename T>
Mat< T > Jacobian (const Eigen::MatrixBase< Derived > &variable_values, const T &path_variable_value) const
 
template<typename T>
Mat< T > Jacobian (const Vec< T > &variable_values) const
 
template<typename T>
void JacobianInPlace (Mat< T > &J) const
 Evaluate the Jacobian matrix of the system, using the previous space and time values, in place.
 
template<typename Derived, typename T>
void JacobianInPlace (Mat< T > &J, const Eigen::MatrixBase< Derived > &variable_values, const T &path_variable_value) const
 
template<typename T>
void JacobianInPlace (Mat< T > &J, const Vec< T > &variable_values) const
 
size_t NumConstants () const
 
size_t NumHomVariableGroups () const
 
size_t NumHomVariables () const
 
size_t NumImplicitParameters () const
 
size_t NumNaturalFunctions () const
 
size_t NumNaturalVariables () const
 
size_t NumParameters () const
 
size_t NumPatches () const
 
size_t NumTotalFunctions () const
 
size_t NumTotalVariableGroups () const
 
size_t NumUngroupedVariables () const
 
size_t NumVariableGroups () const
 
size_t NumVariables () const
 
System & operator= (const System &other)
 The assignment operator.
 
System & operator= (System &&other)=default
 The move assignment operator.
 
unsigned precision () const
 Get the current precision of a system.
 
void precision (unsigned new_precision) const
 
void Reset () const
 A complete reset of the system, so that all of functions, space derivatives, and time derivatives will all be re-evaluated.
 
void ResetFunctions () const
 Force re-evaluation of the system next eval of functions. If something has changed in the system, call this.
 
void ResetJacobian () const
 Force re-evaluation of the system next eval of Jacobians. If something has changed in the system, call this.
 
template<typename T>
void SetImplicitParameters (Vec< T > new_values) const
 
template<typename T>
void SetPathVariable (T const &new_value) const
 
template<typename T>
void SetVariables (const Vec< T > &new_values) const
 
 System ()
 The default constructor for a system.
 
 System (std::string const &input)
 The copy operator, creates a system from a string using the Bertini parser for Bertini classic syntax.
 
 System (System &&other)
 The move copy operator.
 
 System (System const &other)
 The copy operator.
 
template<typename T>
Vec< T > TimeDerivative () const
 Compute the time-derivative of a system.
 
template<typename Derived, typename T>
Vec< T > TimeDerivative (const Eigen::MatrixBase< Derived > &variable_values) const
 Compute the time-derivative of a system.
 
template<typename Derived, typename T>
Vec< T > TimeDerivative (const Eigen::MatrixBase< Derived > &variable_values, const T &path_variable_value) const
 Compute the time-derivative of a system.
 
template<typename Derived, typename T>
void TimeDerivativeInPlace (Vec< T > &ds_dt, const Eigen::MatrixBase< Derived > &variable_values, const T &path_variable_value) const
 Compute the time-derivative of a system.
 
auto VariableGroups () const
 
std::vector< unsigned > VariableGroupSizes () const
 Get the sizes of the variable groups, according to the current ordering.
 
VariableGroup VariableOrdering () const
 
const VariableGroup & Variables () const
 

Friends

void swap (System &a, System &b)
 

Detailed Description

The fundamental polynomial system class for Bertini2.

The fundamental polynomial system class for Bertini2.

Other System types are derived from this, but this class is not abstract.

Constructor & Destructor Documentation

◆ System() [1/4]

bertini::System::System ( )
inline

The default constructor for a system.

Here is the caller graph for this function:

◆ System() [2/4]

bertini::System::System ( std::string const & input)
inlineexplicit

The copy operator, creates a system from a string using the Bertini parser for Bertini classic syntax.

Here is the call graph for this function:

◆ System() [3/4]

bertini::System::System ( System const & other)

The copy operator.

Here is the call graph for this function:

◆ System() [4/4]

bertini::System::System ( System && other)
inline

The move copy operator.

Here is the call graph for this function:

Member Function Documentation

◆ AddConstant()

void bertini::System::AddConstant ( Fn const & C)

Add a constant function to the system. Constants must not depend on anything which can vary – they're constant!

Parameters
CThe constant to add.

◆ AddConstants()

void bertini::System::AddConstants ( std::vector< Fn > const & C)

Add some constant functions to the system. Constants must not depend on anything which can vary – they're constant!

Parameters
CThe constants to add.

◆ AddFunction() [1/2]

void bertini::System::AddFunction ( Fn const & F)

Add a function to the system.

Parameters
FThe function to add.
Here is the caller graph for this function:

◆ AddFunction() [2/2]

void bertini::System::AddFunction ( Nd const & F,
std::string const & name = "unnamed_function" )

Add a function to the system.

Parameters
FThe function to add.
nameThe name of the function

◆ AddFunctions()

void bertini::System::AddFunctions ( std::vector< Fn > const & F)

Add some functions to the system.

Parameters
FThe functions to add.

◆ AddHomVariableGroup()

void bertini::System::AddHomVariableGroup ( VariableGroup const & v)

Add a homogeneous (projective) variable group to the system. The system must be homogeneous with respect to this group, though this is not verified at the time of this call.

Parameters
vThe variable group to add.

◆ AddImplicitParameter()

void bertini::System::AddImplicitParameter ( Var const & v)

Add an implicit parameter to the system. Implicit parameters are advanced by the tracker akin to variable advancement.

Parameters
vThe implicit parameter to add.

◆ AddImplicitParameters()

void bertini::System::AddImplicitParameters ( VariableGroup const & v)

Add some implicit parameters to the system. Implicit parameters are advanced by the tracker akin to variable advancement.

Parameters
vThe implicit parameters to add.

◆ AddParameter()

void bertini::System::AddParameter ( Fn const & F)

Add an explicit parameter to the system. Explicit parameters should depend only on the path variable, though this is not checked in this function.

Parameters
FThe parameter to add.

◆ AddParameters()

void bertini::System::AddParameters ( std::vector< Fn > const & F)

Add some explicit parameters to the system. Explicit parameters should depend only on the path variable, though this is not checked in this function.

Parameters
FThe parameters to add.

◆ AddPathVariable()

void bertini::System::AddPathVariable ( Var const & v)

Add a variable as the Path Variable to a System. Will overwrite any previously declared path variable.

Parameters
vThe new path variable.

◆ AddSubfunction()

void bertini::System::AddSubfunction ( Fn const & F)

Add a subfunction to the system.

Tacks them onto the end of the system.

Parameters
FThe subfunction to add.

◆ AddSubfunctions()

void bertini::System::AddSubfunctions ( std::vector< Fn > const & F)

Add some subfunctions to the system.

Tacks them onto the end of the system.

Parameters
FThe subfunctions to add.

◆ AddUngroupedVariable()

void bertini::System::AddUngroupedVariable ( Var const & v)

Add variables to the system which are in neither a regular variable group, nor in a homogeneous group. This is likely used for user-defined systems, Classic userhomotopy: 1;.

Parameters
vThe variable to add.

◆ AddUngroupedVariables()

void bertini::System::AddUngroupedVariables ( VariableGroup const & v)

Add variables to the system which are in neither a regular variable group, nor in a homogeneous group. This is likely used for user-defined systems, Classic userhomotopy: 1;.

Parameters
vThe variables to add.

◆ AddVariableGroup()

void bertini::System::AddVariableGroup ( VariableGroup const & v)

Add a variable group to the system. The system may be homogenized with respect to this variable group, though this is not done at the time of this call.

Parameters
vThe variable group to add.

◆ AffineVariableGroup()

VariableGroup const & bertini::System::AffineVariableGroup ( size_t index) const
inline

Get an affine variable group the class has defined.

It is up to you to ensure this group exists.

◆ DehomogenizePoint()

template<typename T>
Vec< T > bertini::System::DehomogenizePoint ( Vec< T > const & x) const
inline

Dehomogenize a point, using the variable grouping / structure of the system.

Template Parameters
Tthe number-type for return. Probably dbl=std::complex<double>, or mpfr_complex=bertini::mpfr_complex.
Exceptions
std::runtime_error,ifthere is a mismatch between the number of variables in the input point, and the total number of var
Here is the call graph for this function:

◆ Differentiate()

void bertini::System::Differentiate ( ) const

Compute and internally store the symbolic Jacobian of the system.

Here is the caller graph for this function:

◆ Eval() [1/3]

template<typename T>
Vec< T > bertini::System::Eval ( ) const
inline

Evaluate the system using the previously set variable (and time) values, creating vector of function values.

It is up to YOU to ensure that the system's variables (and path variable) has been set prior to this function call.

Returns
The function values of the system
Here is the call graph for this function:
Here is the caller graph for this function:

◆ Eval() [2/3]

template<typename Derived>
Derived::PlainObject bertini::System::Eval ( const Eigen::MatrixBase< Derived > & variable_values) const
inline

Evaluate the system, provided the system has no path variable defined.

Causes the current variable values to be set in the system. Resets the function tree's stored numbers.

Exceptions
std::runtime_error,ifa path variable IS defined, but you didn't pass it a value. Also throws if the number of variables doesn't match.
Template Parameters
Tthe number-type for return. Probably dbl=std::complex<double>, or mpfr_complex=bertini::mpfr_complex.
Parameters
variable_valuesThe values of the variables, for the evaluation.
Here is the call graph for this function:

◆ Eval() [3/3]

template<typename Derived, typename T>
Vec< T > bertini::System::Eval ( const Eigen::MatrixBase< Derived > & variable_values,
const T & path_variable_value ) const
inline

Evaluate the system, provided a path variable is defined for the system.

Exceptions
std::runtime_error,ifa path variable is NOT defined, and you passed it a value. Also throws if the number of variables doesn't match.
Template Parameters
Tthe number-type for return. Probably dbl=std::complex<double>, or mpfr_complex=bertini::mpfr_complex.
Parameters
variable_valuesThe values of the variables, for the evaluation.
path_variable_valueThe current value of the path variable.
Todo
The Eval() function for systems has the unfortunate side effect of resetting constant functions. Modify the System class so that only certain parts of the tree get reset.
Here is the call graph for this function:

◆ EvalInPlace() [1/3]

template<typename T>
void bertini::System::EvalInPlace ( Vec< T > & function_values) const
inline

Evaluate the system using the previously set variable (and time) values, in place.

It is up to YOU to ensure that the system's variables (and path variable) has been set prior to this function call.

Returns
The function values of the system
Here is the call graph for this function:
Here is the caller graph for this function:

◆ EvalInPlace() [2/3]

template<typename T, typename Derived>
void bertini::System::EvalInPlace ( Vec< T > & function_values,
const Eigen::MatrixBase< Derived > & variable_values ) const
inline

Evaluate the system, provided the system has no path variable defined, in place.

Causes the current variable values to be set in the system. Resets the function tree's stored numbers.

Exceptions
std::runtime_error,ifa path variable IS defined, but you didn't pass it a value. Also throws if the number of variables doesn't match.
Template Parameters
Tthe number-type for return. Probably dbl=std::complex<double>, or mpfr_complex=bertini::mpfr_complex.
Parameters
variable_valuesThe values of the variables, for the evaluation.
Here is the call graph for this function:

◆ EvalInPlace() [3/3]

template<typename Derived, typename T>
void bertini::System::EvalInPlace ( Vec< T > & function_values,
const Eigen::MatrixBase< Derived > & variable_values,
const T & path_variable_value ) const
inline

Evaluate the system, provided a path variable is defined for the system, in place.

Exceptions
std::runtime_error,ifa path variable is NOT defined, and you passed it a value. Also throws if the number of variables doesn't match.
Template Parameters
Tthe number-type for return. Probably dbl=std::complex<double>, or mpfr_complex=bertini::mpfr_complex.
Parameters
variable_valuesThe values of the variables, for the evaluation.
path_variable_valueThe current value of the path variable.
Todo
The Eval() function for systems has the unfortunate side effect of resetting constant functions. Modify the System class so that only certain parts of the tree get reset.
Here is the call graph for this function:

◆ Function()

auto bertini::System::Function ( unsigned index) const
inline

Get a function by its index.

This is just as scary as you think it is. It is up to you to make sure the function at this index exists.

◆ GetNaturalFunctions()

auto bertini::System::GetNaturalFunctions ( ) const
inline

Get the functions.

◆ HavePathVariable()

bool bertini::System::HavePathVariable ( ) const

Query whether a path variable is set for this system

Returns
true if have a path variable, false if not.
Here is the caller graph for this function:

◆ Homogenize()

void bertini::System::Homogenize ( )

Homogenize the system, adding new homogenizing variables for each VariableGroup defined for the system.

Exceptions
std::runtime_error,ifthe system is not polynomial, has a mismatch on the number of homogenizing variables and the number of variable groups (this would result from a partially homogenized system), or the homogenizing variable names somehow get screwed up by having duplicates.
Here is the caller graph for this function:

◆ HomVariableGroups()

auto bertini::System::HomVariableGroups ( ) const
inline

Get the homogeneous (projective) variable groups in the problem.

Here is the caller graph for this function:

◆ IsHomogeneous()

bool bertini::System::IsHomogeneous ( ) const

Checks whether a system is homogeneous, overall. This means with respect to each variable group (including homogenizing variable if defined), homogeneous variable group, and ungrouped variables, if defined.

Exceptions
std::runtime_error,ifthe number of homogenizing variables does not match the number of variable_groups.
Returns
true if homogeneous, false if not
Here is the caller graph for this function:

◆ IsPolynomial()

bool bertini::System::IsPolynomial ( ) const

Checks whether a system is polynomial, overall. This means with respect to each variable group (including homogenizing variable if defined), homogeneous variable group, and ungrouped variables, if defined.

Exceptions
std::runtime_error,ifthe number of homogenizing variables does not match the number of variable_groups.
Returns
true if polynomial, false if not.
Here is the caller graph for this function:

◆ Jacobian() [1/3]

template<typename T>
Mat< T > bertini::System::Jacobian ( ) const
inline

Evaluate the Jacobian matrix of the system, using the previous space and time values.

Template Parameters
Tthe number-type for return. Probably dbl=std::complex<double>, or mpfr_complex=bertini::mpfr_complex.
Here is the call graph for this function:
Here is the caller graph for this function:

◆ Jacobian() [2/3]

template<typename Derived, typename T>
Mat< T > bertini::System::Jacobian ( const Eigen::MatrixBase< Derived > & variable_values,
const T & path_variable_value ) const
inline

Evaluate the Jacobian of the system, provided a path variable is defined for the system.

Exceptions
std::runtime_error,ifa path variable is NOT defined, and you passed it a value. Also throws if the number of variables doesn't match.
Returns
The Jacobian matrix.
Parameters
variable_valuesThe values of the variables, for the evaluation.
path_variable_valueThe current value of the path variable.
Template Parameters
Tthe number-type for return. Probably dbl=std::complex<double>, or mpfr_complex=bertini::mpfr_complex.
Here is the call graph for this function:

◆ Jacobian() [3/3]

template<typename T>
Mat< T > bertini::System::Jacobian ( const Vec< T > & variable_values) const
inline

Evaluate the Jacobian matrix of the system, provided the system has no path variable defined.

Exceptions
std::runtime_error,ifa path variable IS defined, but you didn't pass it a value. Also throws if the number of variables doesn't match.
Template Parameters
Tthe number-type for return. Probably dbl=std::complex<double>, or mpfr_complex=bertini::mpfr_complex.
Parameters
variable_valuesThe values of the variables, for the evaluation.
Here is the call graph for this function:

◆ JacobianInPlace() [1/3]

template<typename T>
void bertini::System::JacobianInPlace ( Mat< T > & J) const
inline

Evaluate the Jacobian matrix of the system, using the previous space and time values, in place.

Template Parameters
Tthe number-type for return. Probably dbl=std::complex<double>, or mpfr_complex=bertini::mpfr_complex.

This is analogous to J = sys.JacobianInPlace();

The input matrix must have the correct size already

Here is the call graph for this function:
Here is the caller graph for this function:

◆ JacobianInPlace() [2/3]

template<typename Derived, typename T>
void bertini::System::JacobianInPlace ( Mat< T > & J,
const Eigen::MatrixBase< Derived > & variable_values,
const T & path_variable_value ) const
inline

Evaluate the Jacobian of the system, provided a path variable is defined for the system, in place.

Exceptions
std::runtime_error,ifa path variable is NOT defined, and you passed it a value. Also throws if the number of variables doesn't match.
Returns
The Jacobian matrix.
Parameters
variable_valuesThe values of the variables, for the evaluation.
path_variable_valueThe current value of the path variable.
Template Parameters
Tthe number-type for return. Probably dbl=std::complex<double>, or mpfr_complex=bertini::mpfr_complex.
Here is the call graph for this function:

◆ JacobianInPlace() [3/3]

template<typename T>
void bertini::System::JacobianInPlace ( Mat< T > & J,
const Vec< T > & variable_values ) const
inline

Evaluate the Jacobian matrix of the system, provided the system has no path variable defined.

Exceptions
std::runtime_error,ifa path variable IS defined, but you didn't pass it a value. Also throws if the number of variables doesn't match.
Template Parameters
Tthe number-type for return. Probably dbl=std::complex<double>, or mpfr_complex=bertini::mpfr_complex.
Parameters
variable_valuesThe values of the variables, for the evaluation.
Here is the call graph for this function:

◆ NumConstants()

size_t bertini::System::NumConstants ( ) const

Get the number of constants in this system

◆ NumHomVariableGroups()

size_t bertini::System::NumHomVariableGroups ( ) const

Get the number of homogeneous variable groups in the system

Here is the caller graph for this function:

◆ NumHomVariables()

size_t bertini::System::NumHomVariables ( ) const

Get the number of homogenizing variables in this system

◆ NumImplicitParameters()

size_t bertini::System::NumImplicitParameters ( ) const

Get the number of implicit parameters in this system

◆ NumNaturalFunctions()

size_t bertini::System::NumNaturalFunctions ( ) const

Get the number of functions in this system, excluding patches.

Here is the caller graph for this function:

◆ NumNaturalVariables()

size_t bertini::System::NumNaturalVariables ( ) const

Get the number of variables in this system, NOT including homogenizing variables.

◆ NumParameters()

size_t bertini::System::NumParameters ( ) const

Get the number of explicit parameters in this system

◆ NumPatches()

size_t bertini::System::NumPatches ( ) const
inline

Get the number of patches in this system.

Here is the caller graph for this function:

◆ NumTotalFunctions()

size_t bertini::System::NumTotalFunctions ( ) const

Get the total number of functions, including patches

Here is the caller graph for this function:

◆ NumTotalVariableGroups()

size_t bertini::System::NumTotalVariableGroups ( ) const

Get the total number of variable groups in the system, including both affine and homogenous. Ignores the ungrouped variables, because they are not in any group.

Here is the caller graph for this function:

◆ NumUngroupedVariables()

size_t bertini::System::NumUngroupedVariables ( ) const

get the number of variables which are ungrouped.

◆ NumVariableGroups()

size_t bertini::System::NumVariableGroups ( ) const

Get the number of affine variable groups in the system

◆ NumVariables()

size_t bertini::System::NumVariables ( ) const

Get the total number of variables in this system, including homogenizing variables.

Here is the caller graph for this function:

◆ operator=() [1/2]

System & bertini::System::operator= ( const System & other)

The assignment operator.

Here is the call graph for this function:

◆ operator=() [2/2]

System & bertini::System::operator= ( System && other)
default

The move assignment operator.

Here is the call graph for this function:

◆ precision() [1/2]

unsigned bertini::System::precision ( ) const
inline

Get the current precision of a system.

Here is the caller graph for this function:

◆ precision() [2/2]

void bertini::System::precision ( unsigned new_precision) const

Change the precision of the entire system's functions, subfunctions, and all other nodes.

Parameters
new_precisionThe new precision, in digits, to work in. This only affects the mpfr_complex types, not double. To use low-precision (doubles), use that number type in the templated functions.

◆ Reset()

void bertini::System::Reset ( ) const
inline

A complete reset of the system, so that all of functions, space derivatives, and time derivatives will all be re-evaluated.

Here is the call graph for this function:

◆ ResetFunctions()

void bertini::System::ResetFunctions ( ) const
inline

Force re-evaluation of the system next eval of functions. If something has changed in the system, call this.

Here is the caller graph for this function:

◆ ResetJacobian()

void bertini::System::ResetJacobian ( ) const
inline

Force re-evaluation of the system next eval of Jacobians. If something has changed in the system, call this.

Here is the caller graph for this function:

◆ SetImplicitParameters()

template<typename T>
void bertini::System::SetImplicitParameters ( Vec< T > new_values) const
inline

For a system with implicitly defined parameters, set their values. The values are determined externally to the system, and are tracked along with the variables.

Template Parameters
Tthe number-type for return. Probably dbl=std::complex<double>, or mpfr_complex=bertini::mpfr_complex.
Parameters
new_valuesThe new updated values for the implicit parameters.

◆ SetPathVariable()

template<typename T>
void bertini::System::SetPathVariable ( T const & new_value) const
inline

Set the current value of the path variable.

Exceptions
std::runtime_error,ifa path variable is not defined.
Template Parameters
Tthe number-type for return. Probably dbl=std::complex<double>, or mpfr_complex=bertini::mpfr_complex.
Parameters
new_valueThe new updated values for the path variable.
Here is the call graph for this function:
Here is the caller graph for this function:

◆ SetVariables()

template<typename T>
void bertini::System::SetVariables ( const Vec< T > & new_values) const
inline

Set the values of the variables to be equal to the input values

Template Parameters
Tthe number-type for return. Probably dbl=std::complex<double>, or mpfr_complex=bertini::mpfr_complex.
Exceptions
std::runtime_errorif the number of variables doesn't match.

The ordering of the variables matters.

The AffHomUng ordering is 1) variable groups, with homogenizing variable first. 2) homogeneous variable groups. 3) ungrouped variables. The FIFO ordering uses the order in which the variable groups were added.

The path variable is not considered a variable for this operation. It is set separately.

Parameters
new_valuesThe new updated values for the variables.
See also
SetPathVariable
Variables
Here is the call graph for this function:
Here is the caller graph for this function:

◆ TimeDerivative() [1/3]

template<typename T>
Vec< T > bertini::System::TimeDerivative ( ) const
inline

Compute the time-derivative of a system.

If \(S\) is the system, and \(t\) is the path variable this computes \(\frac{dS}{dt}\).

Template Parameters
TThe number-type for return. Probably dbl=std::complex<double>, or mpfr_complex=bertini::mpfr_complex.
Exceptions
std::runtimeerror if the system does not have a path variable defined.
Here is the call graph for this function:

◆ TimeDerivative() [2/3]

template<typename Derived, typename T>
Vec< T > bertini::System::TimeDerivative ( const Eigen::MatrixBase< Derived > & variable_values) const
inline

Compute the time-derivative of a system.

If \(S\) is the system, and \(t\) is the path variable this computes \(\frac{dS}{dt}\).

Template Parameters
TThe number-type for return. Probably dbl=std::complex<double>, or mpfr_complex=bertini::mpfr_complex.
Exceptions
std::runtimeerror if the system does not have a path variable defined.
Here is the call graph for this function:

◆ TimeDerivative() [3/3]

template<typename Derived, typename T>
Vec< T > bertini::System::TimeDerivative ( const Eigen::MatrixBase< Derived > & variable_values,
const T & path_variable_value ) const
inline

Compute the time-derivative of a system.

If \(S\) is the system, and \(t\) is the path variable this computes \(\frac{dS}{dt}\).

Template Parameters
TThe number-type for return. Probably dbl=std::complex<double>, or mpfr_complex=bertini::mpfr_complex.
Exceptions
std::runtimeerror if the system does not have a path variable defined.
Here is the call graph for this function:

◆ TimeDerivativeInPlace()

template<typename Derived, typename T>
void bertini::System::TimeDerivativeInPlace ( Vec< T > & ds_dt,
const Eigen::MatrixBase< Derived > & variable_values,
const T & path_variable_value ) const
inline

Compute the time-derivative of a system.

If \(S\) is the system, and \(t\) is the path variable this computes \(\frac{dS}{dt}\).

Template Parameters
TThe number-type for return. Probably dbl=std::complex<double>, or mpfr_complex=bertini::mpfr_complex.
Exceptions
std::runtimeerror if the system does not have a path variable defined.
Here is the call graph for this function:
Here is the caller graph for this function:

◆ VariableGroups()

auto bertini::System::VariableGroups ( ) const
inline

Get the affine variable groups in the problem.

Here is the caller graph for this function:

◆ VariableGroupSizes()

std::vector< unsigned > bertini::System::VariableGroupSizes ( ) const
inline

Get the sizes of the variable groups, according to the current ordering.

Here is the caller graph for this function:

◆ VariableOrdering()

VariableGroup bertini::System::VariableOrdering ( ) const

Order the variables, by the order in which the groups were added.

This function returns the variables in First In First Out (FIFO) ordering.

Homogenizing variables precede affine variable groups, so that groups always are grouped together.

This function freshly constructs the ordering every time. If you want to use the cached value,

See also
Variables.
Exceptions
std::runtime_error,ifthere is a mismatch between the number of homogenizing variables and the number of variable_groups. This would happen if a system is homogenized, and then more stuff is added to it.

◆ Variables()

const VariableGroup & bertini::System::Variables ( ) const

Get the variables in the problem.

Returns the variable ordering, constructing it if necessary.

Here is the caller graph for this function:

Friends And Related Symbol Documentation

◆ swap

void swap ( System & a,
System & b )
friend

The free swap function for systems.


The documentation for this class was generated from the following files: