pybertini.system

quick nav links:

Notes

Auto-generated docs

Provides utilities for working with systems of functions – polynomials are intended, although you can work with functions involving things like trig functions, arbitrary powers, etc.

Making a new System is the starting point you want, probably:

sys = pybertini.system.System()

There are also things available in the start_system submodule.

class pybertini.system.System((object)arg1) → None

Bases: Boost.Python.instance

add_function((System)arg1, (Function)arg2) → None :

Add a function to the System

add_function( (System)arg1, (AbstractNode)arg2) -> None :
Add a function to the System
add_functions((System)arg1, (ListFunction)arg2) → None :

Add some functions to the System. Expects a list of functions

add_hom_variable_group((System)arg1, (VariableGroup)arg2) → None :

Add a projective or homogeneous variable group to the System

add_path_variable((System)arg1, (Variable)arg2) → None :

Add a path variable to the System

add_variable_group((System)arg1, (VariableGroup)arg2) → None :

Add a (affine) variable group to the System

auto_patch((System)arg1) → None :

Apply a patch to the system, given its current variable group structure.

clear_variables((System)arg1) → None :

Remove the variable structure from the system

copy_patches((System)arg1, (System)arg2) → None :

Copy the patches from another system into this one.

copy_variable_structure((System)arg1, (System)arg2) → None :

Copy the variable structure from another System

degrees((System)arg1) → ListInt :

Get a list of the degrees of the functions in the system, with respect to all variables in all groups (and in fact overall)

degrees( (System)arg1, (VariableGroup)arg2) -> ListInt :
Get a list of the degrees of the functions in the system, with respect to a variable_group passed in to this function. Negative numbers indicate non-polynomial
dehomogenize_point((System)arg1, (VectorXd)arg2) → VectorXd :

Dehomogenize a vector of doubles (complex), using the variable structure in this System

dehomogenize_point( (System)arg1, (VectorXmp)arg2) -> VectorXmp :
Dehomogenize a vector of mpfr’s (complex), using the variable structure in this System
differentiate((System)arg1) → None
eval((System)arg1) → VectorXd :

Evaluate the system in double precision, using already-set variable values.

eval( (System)arg1) -> VectorXmp :
Evaluate the system in multiple precision, using already-set variable values.
eval( (System)arg1, (VectorXd)arg2) -> VectorXd :
Evaluate the system in double precision, using space variable values passed into this function.
eval( (System)arg1, (VectorXmp)arg2) -> VectorXmp :
Evaluate the system in multiple precision, using space variable values passed into this function.
eval( (System)arg1, (VectorXd)arg2, (complex)arg3) -> VectorXd :
Evaluate the system in double precision using space and time values passed into this function. Throws if doesn’t use a time variable
eval( (System)arg1, (VectorXmp)arg2, (Complex)arg3) -> VectorXmp :
Evaluate the system in multiple precision using space and time values passed into this function. Throws if doesn’t use a time variable
function((System)arg1, (int)arg2) → Function :

Get a function with a given index. Problems ensue if out of range – uses un-rangechecked version of underlying getter

get_patch((System)arg1) → object :

Get (a reference to) the patches from the system.

have_path_variable((System)arg1) → bool :

Asks whether the System has a path variable defined

hom_variable_groups((System)arg1) → ListVariableGroup :

Get the list of projective / homogeneous variable_groups from the system

homogenize((System)arg1) → None :

Homogenize the system, adding new homogenizing variables if necessary. This may change your polynomials; that is, it has side effects.

is_homogeneous((System)arg1) → bool :

Determines whether all polynomials in the system have the same degree. Non-polynomial functions are not homogeneous.

is_patched((System)arg1) → bool :

Check whether the system is patched.

is_polynomial((System)arg1) → bool :

Determines whether all polynomials are polynomial. Transcendental functions, e.g., are non-polynomial. Returns a bool.

jacobian((System)arg1) → MatrixXd :

Evaluate the Jacobian (martix of partial derivatives) of the system, using already-set time and space value.

jacobian( (System)arg1) -> MatrixXmp :
Evaluate the Jacobian (martix of partial derivatives) of the system, using already-set time and space value.
jacobian( (System)arg1, (VectorXd)arg2) -> MatrixXd :
Evaluate the Jacobian (martix of partial derivatives) of the system, using space values you pass in to this function
jacobian( (System)arg1, (VectorXmp)arg2) -> MatrixXmp :
Evaluate the Jacobian (martix of partial derivatives) of the system, using space values you pass in to this function
jacobian( (System)arg1, (VectorXd)arg2, (complex)arg3) -> MatrixXd :
Evaluate the Jacobian (martix of partial derivatives) of the system, using time and space values passed into this function. Throws if doesn’t use a time variable
jacobian( (System)arg1, (VectorXmp)arg2, (Complex)arg3) -> MatrixXmp :
Evaluate the Jacobian (martix of partial derivatives) of the system, using time and space values passed into this function. Throws if doesn’t use a time variable
num_functions((System)arg1) → int :

The total number of functions in the system. Does not include patches.

num_hom_variable_groups((System)arg1) → int :

The number of homogeneous or projective variable groups. The number of homogenizing variables should eventually equal this.

num_hom_variables((System)arg1) → int :

The number of homogenizing variables defined in the system. Should be equal to the number of homvargroups

num_ungrouped_variables((System)arg1) → int :

The number of variables, not grouped into an affine or projective space

num_variable_groups((System)arg1) → int :

The number of affine variable groups. This should probably be renamed to num_affine_variable_groups

num_variables((System)arg1) → int :

the total number of variables in the system. Includes homogenizing variables

precision((System)arg1) → int :

Get the current precision of the system. Returns a postive number, representing the number of digits (not bits) at which the system is currently represented. (there is a reference-level precision stored, so you can change this up / down mostly fearlessly)

precision( (System)arg1, (int)arg2) -> None :
Set / change the precision of the system. Feed in a positive number, representing the digits (not bits) of the precision. Double precision is 16, but that only effects the multi-precision precision… you can eval in double precision without changing the precision to 16.
reorder_functions_by_degree_decreasing((System)arg1) → None :

Change the order of the functions to be in decreasing order

reorder_functions_by_degree_increasing((System)arg1) → None :

Change the order of the functions to be in decreasing order

rescale_point_to_fit_patch((System)arg1, (VectorXd)arg2) → VectorXd :

Return a rescaled version of the input point, which fits the patch for the system.

rescale_point_to_fit_patch( (System)arg1, (VectorXmp)arg2) -> VectorXmp :
Return a rescaled version of the input point, which fits the patch for the system.
rescale_point_to_fit_patch_in_place((System)arg1, (VectorXd)arg2) → None :

Re-scale the input point, in place, to fit the patch for the system. This assumes you have properly set the variable groups and auto-patched the system.

rescale_point_to_fit_patch_in_place( (System)arg1, (VectorXmp)arg2) -> None :
Re-scale the input point, in place, to fit the patch for the system. This assumes you have properly set the variable groups and auto-patched the system.
set_path_variable((System)arg1, (complex)arg2) → None :

Set the value of the path variable. This one’s double-precision. Throws if path variable not defined.

set_path_variable( (System)arg1, (Complex)arg2) -> None :
Set the value of the path variable. This one’s variable-precision. Throws if path variable not defined.
set_variables((System)arg1, (VectorXd)arg2) → None :

Set the values of the variables. Expects a vector of doubles

set_variables( (System)arg1, (VectorXmp)arg2) -> None :
Set the values of the variables. Expects a vector of complex mpfr’s
variable_groups((System)arg1) → ListVariableGroup :

Get the list of (affine) variable_groups from the system

pybertini.system.clone((System)arg1) → System :

Make a complete clone of a System. Includes all functions, variables, etc. Truly and genuinely distinct.

pybertini.system.concatenate((System)arg1, (System)arg2) → System :

concatenate two Systems to produce a new one. Appends the second onto what was the first.

pybertini.system.simplify((object)arg1) → None :

Perform all possible simplifications. Has side effects of modifying your functions, if held separately. Shared nodes between multiple systems may have adverse effects