lumix.linearization.techniques.LXPiecewiseLinearizer¶
- class lumix.linearization.techniques.LXPiecewiseLinearizer(config)[source]¶
Piecewise-linear approximation for arbitrary nonlinear functions.
Supports multiple formulation methods and adaptive breakpoint generation for improved approximation accuracy.
- Parameters:
config (LXLinearizerConfig)
- __init__(config)[source]¶
Initialize piecewise linearizer.
- Parameters:
config (
LXLinearizerConfig) – Linearization configuration
Methods
__init__(config)Initialize piecewise linearizer.
approximate_function(func, var[, ...])Create piecewise-linear approximation of arbitrary function.
- __init__(config)[source]¶
Initialize piecewise linearizer.
- Parameters:
config (
LXLinearizerConfig) – Linearization configuration
- approximate_function(func, var, num_segments=None, x_min=None, x_max=None, method=None, adaptive=None)[source]¶
Create piecewise-linear approximation of arbitrary function.
- Parameters:
func (
Callable[[float],float]) – Function to approximate (e.g., lambda x: math.exp(x))var (
LXVariable) – Input variablenum_segments (
Optional[int]) – Number of linear segments (default: from config)x_min (
Optional[float]) – Minimum domain value (default: var.lower_bound)x_max (
Optional[float]) – Maximum domain value (default: var.upper_bound)method (
Optional[Literal['sos2','incremental','logarithmic']]) – Linearization method (default: from config)adaptive (
Optional[bool]) – Use adaptive breakpoints (default: from config)
- Return type:
- Returns:
Output variable representing f(var)
- Raises:
ValueError – If domain bounds cannot be determined
Example:
# Exponential growth exp_y = linearizer.approximate_function( lambda x: math.exp(x), input_var, num_segments=50 )