Shapefunctions¶
The shapefunctions module contains generic shapefunctions that can be used to approximate distributed systems without giving any information about the systems themselves. This is achieved by projecting them on generic, piecewise smooth functions.
Shapefunction Types¶
-
class
LagrangeFirstOrder(start, top, end, **kwargs)[source]¶ Bases:
pyinduct.core.FunctionLagrangian shape functions of order 1.
Parameters: - start – start node
- top – top node, where

- end – end node
Keyword Arguments: - half –
- right_border –
- left_border –
Example plot of the functions
funcsgenerated with>>> nodes, funcs = cure_interval(LagrangeFirstOrder, (0, 1), node_count=7)
-
static
cure_hint(domain, **kwargs)[source]¶ Hint function that will cure the given interval with LagrangeFirstOrder.
Parameters: domain ( Domain) – domain to be curedReturns: (domain, funcs), where funcs is set of LagrangeFirstOrdershapefunctions.Return type: tuple
-
class
LagrangeSecondOrder(start, mid, end, **kwargs)[source]¶ Bases:
pyinduct.core.FunctionLagrangian shape functions of order 2.
Parameters: - start – start node
- mid – middle node, where

- end – end node
Keyword Arguments: - curvature (str) – “concave” or “convex”
- half (str) – Generate only “left” or “right” half.
- domain (tuple) – Domain on which the function is defined.
Example plot of the functions
funcsgenerated with>>> nodes, funcs = cure_interval(LagrangeSecondOrder, (0, 1), node_count=7)
-
static
cure_hint(domain, **kwargs)[source]¶ Hint function that will cure the given interval with
LagrangeSecondOrder.Parameters: domain ( Domain) – domain to be curedReturns: (domain, funcs), where funcs is set of LagrangeSecondOrdershapefunctions.Return type: tuple
-
class
LagrangeNthOrder(order, nodes, left=False, right=False, mid_num=None, boundary=None, domain=(-inf, inf))[source]¶ Bases:
pyinduct.core.FunctionLagrangian shape functions of order
.Note
The polynomials between the boundary-polynomials and the peak-polynomials, respectively between peak-polynomials and peak-polynomials, are called mid-polynomials.
Parameters: - order (int) – Order of the lagrangian polynomials.
- nodes (numpy.array) – Nodes on which the piecewise defined functions have
to be one/zero. Length of nodes must be either
(for peak-polynomials, see notes) or ‘order +1’
(for boundary- and mid-polynomials). - left (bool) – State the first node (nodes[0]) to be the left boundary of the considered domain.
- right (bool) – State the last node (nodes[-1]) to be the right boundary of the considered domain.
- mid_num (int) – Local number of mid-polynomials (see notes) to use (only
used for order >= 2).

- boundary (str) – provide “left” or “right” to instantiate the according boundary-polynomial.
- domain (tuple) – Domain of the function.
Example plot of the functions
funcsgenerated with>>> nodes, funcs = pi.cure_interval(sh.LagrangeNthOrder, (0, 1), node_count=9, order=4)
-
static
cure_hint(domain, **kwargs)[source]¶ Hint function that will cure the given interval with
LagrangeNthOrder. Length of the domain argument
must satisfy the condition
E.g. n - order = 1 ->
- order = 2 ->
- order = 3 ->
- and so on.Parameters: - domain (
Domain) – Domain to be cured. - order (int) – Order of the lagrange polynomials.
Returns: (domain, funcs), where funcs is a set of
LagrangeNthOrdershapefunctions.Return type: tuple
- domain (
Curing an Interval¶
All classes contained in this module can easily be used to cure a given interval.
For example let’s approximate the interval from
to
with 3
piecewise linear functions:
>>> nodes, funcs = cure_interval(LagrangeFirstOrder, (0, 1), node_count=3)
The approximation nodes of the functions are chosen automatically:
>>> list(nodes)
[0.0, 0.5, 1.0]
-
cure_interval(shapefunction_class, interval, node_count=None, node_distance=None, **kwargs)[source]¶ Use shape functions to cure an interval with either node_count nodes or nodes with node_distance.
Parameters: - shapefunction_class – Class to cure the interval (e.g.
LagrangeFirstOrder). The given class has to provide acure_hint(). - interval (tuple) – Limits that constrain the interval.
- node_count (int) – Amount of nodes to use.
- node_distance (numbers.Number) – Distance of nodes.
Note
Either node_count or node_node_distance can be specified. If both are given and are not consistent, an exception will be raised by
Domain.Raises: TypeError– If given class does not provide a staticcure_hint()method.
Returns: (domain, funcs): Wheredomainis aDomaininstance andfuncsis a list of (e.g.LagrangeFirstOrder) shapefunctions.Return type: tuple
- shapefunction_class – Class to cure the interval (e.g.